Lab Seminar: 모바일 네트워크에서 SDN/NFV 기반의 웹 성능 향상을 위한 웹 캐시 일관성 제공과 JavaScript 전송 가속화 방안

Paper: click

Presentation: ppt

Abstract

웹 페이지를 구성하는 리소스의 개수와 크기가 점점 증가하고 있으며, 이는 상대적으로 큰 모바일 네트워크에서 웹 서비스의 급격한 품질 저하로 이어지고 있다. 현재의 네트워크 구조는 폐쇄적인 구조를 가지고 있기 때문에 웹 서비스의 품질을 향상 시키는 프로토콜을 개발할지라도 네트워크 기능으로 제공하기 어렵다는 문제가 존재한다. 이 논문에서는 웹 성능을 향상시키기 위한 방안으로 Check Coded DOM 방안과 Functional JavaScript 전송 방안을 제안하고, NFV를 활용하여 제안 방안이 네트워크 기능으로 제공될 수 있는 방안을 모색 해본다.

서론

HTTP 프로토콜은 인터넷을 통해서 다양한 서비스를 제공하는데 광범위하게 사용되고 있다. 하지만 2000년대에 들어서면서 사용자의 다양한 요구사항으로 인한 웹의 규모와 복잡도가 점점 커지면서 웹 서비스의 품질이 급격하게 저하로 이어졌다. 더 나아가 사용자가 인터넷에 접속하는 환경 또한 다양해지고 있으며, 대표적인 예로 무선 통신 환경으로 모바일 네트워크가 있다. 3G의 경우 1.5Mbps의 대역폭과 180.5ms의 지연을 4G의 겨우 10.4Mbps의 대역폭과 88ms의 지연을 제공한다. 모바일 네트워크의 경우 유선에 비해 지연이 크다는 특징을 가지고 있다.

서비스의 요구사항과 폭발적으로 증가하는 트래픽을 수용하기 위하여 Control plane과 Data plane을 구분하는 SDN기술이 주목을 받고 있다. 또한 기존의 장비들은 하드웨어 중심으로 구현되어 다양한 네트워크의 기능을 제공하지 못하였지만, NFV를 통해 이 문제를 해결하였다. NFV는 표준화된 고성능 하드웨어에 다양한 네트워크 기능을 소프트웨어로 가상화하여 제공하는 기술이다.

지연은 웹 성능을 향상시킴에 있어 가장 중요한 요소이다. 현재 웹 페이지를 수신함에 있어서 지연에 영향을 미치는 요소 가운데 첫 번째는 웹 캐시(Web Cache)와 두 번째는 JavaScript가 있다. 웹 캐시의 경우 캐시 서버로 부터 웹 캐시의 존재 유무를 확인하기 때문에 지연 시간이 발생, JavaScript의 경우 해당 JavaScript 이후에 위치한 리소스는 병렬로 요청되지 못한다. 또한 병렬로 다운을 받더라도 일관성이 보장되지 않을 수 있는 문제가 발생 하기도 한다.

관련 연구

1) 웹 캐시 일관성 제공 방안

네트워크에서 발생하는 트래픽을 줄이고, 빠른 서비스 응답시간을 사용자에게 제공하기 위해 웹 캐시를 이용한다. 웹 캐시를 제공하는 프록시 서버 또는 단말에 존재하는 복사본 컨텐츠와 근원 서버의 원본 컨텐츠 간에 일관성이 유지되지 않을 수 있는 문제가 발생한다. 일관성을 제공하는 방안으로 약한 캐시 일관성 (웹 캐시가 꼭 일치하지 않아도 큰 문제가 없는 경우), 강한 캐시 일관성 (웹 캐시의 변경 주기가 짧은 경우 예를 들면 주식 정보와 같이 일치하지 않으면 큰 문제가 발생하는 캐시의 경우)으로 분류할 수 있다.

약한 캐시 일관성을 제공하는 Time-to-Live와 강한 캐시 일관성을 제공하는 Polling-every-time 두가지가 있다. 해당 설명은 두 그림으로 대체 한다. Figure1

2) JavaScript 성능 향상 방안

표준 스크립트 언어로 사용되고 있다. JavaScript는 서버와 클라이언트 간에 상호교환적인 웹 서비스를 제공하게 해주고, 시간이나 환경에 따라서 동적인 컨텐츠를 생성하게 해준다. 1653KB의 평균 웹 페이지 크기 중에 267KB가 JavaScript가 차지하고 있다. JavaScript는 페이지 로딩 시간을 증가시키는 문제점을 가지고 있다. JavaScript를 다운로드하고 실행하는 동안, 해당 JavaScript 이후에 위치한 리소스의 요청을 중단하기 때문이다. 이런 현상을 JavaScript의 블로킹(Blocking) 현상이라 한다. 블록킹 현상을 무시하고 병렬로 다운로드를 하게 되면 웹 페이지의 무결성이 보장되지 안흥ㄹ 수도 있는 문제도 발생한다. 때문에 JavaScript를 직렬로 다운로드를 수행하되 JavaScript의 전송을 가속화 하는 방안이 모색될 필요가 있다.

제안 방안

1) NFV 기반 HTTP 스위칭 네트워크

본 연구에서는 사전에 네트워크 스위치를 NFV로 구현하고, 해당 NFV에서 HTTP서비스를 인식하여, HTTP 정보 레벨에서 스위칭을 수행하는 HTTP Switching 개념을 기반으로 동작하는 새로운 개념의 네트워크를 제안한다. HTTP Switching을 지원하는 장비들로 구성한 SwitchedHTTP Network (SHTTP) 구조가 그림에 나타나 있다. Figure2 Proxy Access/Switch/Edge는 HTTP프로토콜을 이해할 수 있는 기능을 구현한 네트워크 스위치 장치에 대한 그림은 다음과 같다. Figure3 Data plane은 하드웨어로 구성되어 있고, 다양한 네트워크 기능을 소프트웨어 가상화하는 것을 제공하는 Hypervisor가 있다. 그 상위레이어에는 라우터나 방화벽 같은 네트워크 기능 뿐만 아니라, 제안 방안인 Functional JavaScript Transmission 모듈과 Check Coded DOM 모듈이 어플레케이션 S/W 형태로 위치하게 된다.

2) Check Coded DOM 방안

서버가 메인 웹 페이지에 웹 페이지를 구성하는 리소스들의 체크코드를 생성하여 삽입함으로써, 클라이언트가 메인 웹 페이지 수신만으로 웹 페이지를 구성하는 리소스의 변경 유무를를 확인할 수 있는 방안이다.

메인 서버는 메인 웹 페이지를 생성하고, 서버 1은 html문서, 서버 2는 이미지 파일이 위치하게 된다. 서버 1과 서버 2는 SHA-1 알고리즘을 이용하여 html문서와 이미지 파일에 대한 체크코드를 생성한다. 클라이언트로 부터 요청이 들어오면 해당 메인 서버는 서버 1과 2로 부터 이미지와 문서에 대한 리소스 체크코드를 응답으로 전달하고 클라이언트는 해당 웹 페이지에대한 응답을 받게 되는데 받으면서 Current Resource URL & ID TABLE에 저장 하고 Previous Resource URL & ID TABLE와 비교를 통해서 수정이 있을 시에는 서버 1과 2에 대해서 수정된 이미지와 문서를 받아오지만 비교에서 수정이 없을시에는 추가적인 요청을 보내지 않게 된다. 해당 과정에 대한 그림은 다음과 같다. 1. Figure3 2. Figure3 3. Figure3

3) Functional JavaScript 전송 방안

JavaScript의 재사용성을 고려하여 변경된 함수 코드, 함수 변경 정보, 버전 정보를 보냄으로써 전송되는 JavaScript의 크기를 줄이는 방안이다. 해당 그림은 서버에서 JavaScript를 생성할 때, 수행되는 처리 과정을 나타낸 그림이다. Figure3 SHA-1 알고르짐을 이용해 20 Byte의 Function ID를 생성한다. Function & ID TABLE에 함수 이름과 그에 해당하는 Function ID를 삽입하여 테이블을 완성한다. Script ID는 Function ID들을 입력 값으로 받아 SHA-1 알고리즘을 수행하여 Script ID를 생성하고 Script & ID TABLE에 Script version 과 Script ID 항목을 완성한다. 해당 클라이언트에서 요청이 오면 위에서 만들어진 Function & ID TABLE와 Script & ID TABLE이 완성된 상태에서, 서버가 함수 단위 코드, 함수 변경 정보, 버전 정보를 보낸다. 클라이언트 요청시 A.ajs 파일을 요청을 하는데 이는 Archive of JavaScript의 약자로, 본 저자가 정의한 확장자이고, Gzip을 이용하여 위의 세가지 정보를 압축하여 보내게 된다. 해당 압축에는 Manipulation Info TABLE이 생성되게 되는데 각 Function name과 Manipulation 속성으로 구성되어 있다. Funtion의 수정이 있냐 없냐 에 따라서 Manipulation 속성은 다음과 같이 세가지로 분류하여 구성되는데 New, Modified, Removed로 구성되어 있다. Figure3 클라이언트는 Manipulation Info TABLE을 이용해 함수 단위로 수신된 코드를 조합하여 하나의 JavaScript 파일로 만듦으로써 JavaScript 파일을 수신하게 된다. Figure3

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

%d 블로거가 이것을 좋아합니다: