October 12, 2020
참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음
spatial 한 특성과 현 프레임에서 다음 프레임으로 갈 때 비슷한 색의 값을 가진 픽셀이 다시 사용되는 temporal 한 특성을 사용해서 비디오를 인코딩한다.CBR(Constant Bit Rate) 라고 하고, spatial, temporal 한 정보를 이용해서 상황에 맞게 인코딩하는 방식을 VBR(Variable Bit Rate) 라고 한다.RTSP(Real-Time Streaming Protocol)으로 실시간으로 데이터를 서버에서 받아와 사용자에게 바로바로 보내주는 형태였다. 그러나 이런 방식은 한 서버에 여러 사용자가 몰리게 되는 문제가 있고 사용자도 서버에 부하가 걸리면서 영상을 제대로 시청하지 못하게되는 현상이 발생했다.TCP 연결을 설정하고 비디오 데이터를 받기 시작한다.Progressive Downloading 방법은 파일을 Chunk 단위로 나누어두고 사용자가 비디오를 시청하는 중에 지속적으로 이 chunk를 다운로드 하는 방식으로 구현되어 있다.한 비디오 파일이 여러 버전으로 인코딩된 파일을 준비해 둔다. 클라이언트는 자신의 가용 대역폭에 맞는 인코딩 비트율을 요청하고 서버는 해당 요청에 맞는 인코딩된 비디오를 송신해주는 방법이다.chunk 단위로 요청하므로 대역폭 상황에 맞게 동적으로 비디오의 비트율을 결정할 수 있다는 장점이 있다.매니패스트(manifest) 파일이다.먼저 서버에 매니페스트 파일을 요청하고 받은 뒤에 자신이 원하는 버전의 비디오를 선택해서 HTTP GET 요청을 서버로 보내게 된다.그러나 오늘날에는 수 많은 사용자가 비디오 데이터를 요청하면서 몇 가지 문제점들이 발생하게 된다.
다수의 위치에 분산된 서버들을 운영하고 데이터들의 복사본을 분산된 서버에 저장해둔다.CDN은 두 가지 운영철학 중 하나를 선택해서 운영하게 된다.
Enter Deep : 서버 클러스터를 전세계 곳곳의 access network 안에 구축해서 서버를 최대한 사용자에 가까이에 위치시키려는 방법이다. 하지만 분산된 서버의 설계로 인해 유지관리 비용이 크게 발생한다는 단점이 있다.Bring Home : 서버 클러스터를 access network 주변에 구축해서 유지 및 관리가 용이하면서도 비용을 줄이는 방법이다. 그러나 Enter Deep 방식만큼 사용자에게 빠른 전송률을 제공하지는 않는다.CDN은 다음과 같은 과정을 통해 비디오를 요청하고 송수신한다.
가장 단순하고 확실한 방법은 클라이언트와 물리적으로 가장 가까이에 있는 클러스터를 할당하는 것이다.
Netflix 는 기본적으로 CDN을 사용하지만 동시에 manifest 파일을 사용하는 구조로 작동한다. Netflix는 다음과 같은 과정을 거쳐 비디오를 송수신한다.
DNS redirection 을 사용하지 않고, 국가마다 사용자들이 선호하는 데이터들의 사본을 우선적으로 저장하는 push caching 정책을 사용한다.Youtube 는 private CDN을 사용해서 사용자에게 비디오를 스트리밍한다.
DNS redirection 과 pull caching 정책을 사용한다.RTT가 가장 짧은 클러스터 서버를 선택하는 정책을 사용한다.Kankan 은 p2p를 기반으로 하지만 p2p의 네트워크가 사용자를 모두 감당하기 어려우면 CDN을 함께 사용하는 정책을 사용한다.