2-6 비디오 스트리밍과 CDN 요약

2020. 10. 21. 01:02컴퓨터 네트워크

인터넷 비디오는 인터넷의 주 소비 대상입니다. 너무 많이 써서 하나의 서버로는 힘듭니다. 그리고 접속 장치가 스마트폰, PC등 다양합니다. 이 다른 환경에서 어떻게 서비스를 잘 해줄까요? 

 

해결방법은: distrubuted, application-level infrastructure입니다.

 

비디오는 여러 이미지를 연속으로 (24~30 프레임) 보여줘서 잔상이 남게하는 것입니다.

 

디지털 이미지는 픽셀의 배열로 되어 있습니다. 이는 rebundancy, 즉 연관성을 이용하여 인코딩합니다.

 

인코딩 방식은 CBR(Constant Bit Rate) 즉 인코딩률이 고정되어있는 방식과 VBR(Variable Bit Rate) 즉, 비디오 인코딩이 내용에 따라 달라집니다.

 

비디오 서비스 중에 UDP를 이용하는 RTSP(Realtime Streaming Protocol)를 이용했으나 서버에 부담이 커집니다. 요즘에는 HTTP, TCP를 이용한 스트리밍을 많이 하고 있습니다. 이 방법은 버퍼에 집어넣고 천천히 내용을 보여주는 것입니다. 그러나 이 방법의 문제는 보다가 중간에 꺼버리면 bandwidth 낭비가 많아집니다.

 

그래서 나온 방법이 progressive(점진적으로) 다운로드하는 방식입니다. 처음에는 chunk(덩어리) 몇 개를 다운로드 받고 그 다음에 chunk가 끝나기 전에 또 다른 chunk를 다운로드 받는 식으로 합니다. 

 

요즘에는 DASH라는 방식을 쓰는데 이는 Dynamic Adaptive Streaming over HTTP의 준말로 서버쪽에서는 하나의 비디오 파일을 여러 개의 chunk로 나누게  되고 각각의 chunk들을 압축률을 다르게 합니다. 그리고 압축한 후에 저장을 합니다. 그리고 여러 chunk들이 있으니 이 chunk들의 정보들이 들어있는 명세서(manifest file)이 있습니다. 그래서 client는 먼저 manifest file을 요청합니다. MPEG-DASH에서는 이 명세서를 MPD(Media Presentation Description)으로 표현하고 있습니다. 그 후에 서버와 고객 사이에 bandwidth를 측정을 하고 manifest파일을 참조를 하여 어떨 때 chunk들을 요청을 해야하는 지를 판단을 합니다. 그리고 현재 bandwidth에서 이용할 수 있는 최대 bandwidth가 무엇인지를 고릅니다. 그래서 상황에 따라 화질에 차이를 둬서 서비스해줍니다. 

 

대부분은 intelligence가 클라이언트한테 있습니다. 이 뜻은 책임이 클라이언트한테 있다는 것이죠. 클라이언트는 언제 받을지 압축률은 얼마로 할지, 어디서 받을지를 결정합니다. 그러면 클라이언트에 부담이 커지는 것이죠. 

 

동시에 수십만명의 사용자가 요청을 할때 CDNs(Content Distribution Networks)를 이용합니다. 하나의 큰 서버를 구현하는 방법도 있지만 이는 문제가 많습니다. congestion이 발생할 수도 있고 멀리있는 클라이언트는 거쳐가는 링크가 많아집니다

 

CDNs은 물리적으로 분산된 장소에 서버를 둬서 서비스를 제공하는 방식입니다. 이는 두 방식이 있는데 Enter deep은 가입자 근처에 서버를 가까이 둡니다. 이는 단점은 관리하기가 어렵다는 것입니다.  아카마이라는 회사에서 주로 쓰죠. 그 다음은 Bring home 방식으로 access 망과 약간 떨어뜨려서 커버할 반경을 크게 잡는 방법입니다. 

 

Over The Top이라는 용어가 있는데 줄여서 OTT라고 합니다. 이는 인터넷을 이용한 사업자를 뜻합니다. OTT는 congested된 인터넷을 해결해야합니다. 어떤 노드로 보낼지를 결정하고 어떤 content를 어떤 node에 넣어야할지 congestion이 발생했을때 어떻게 처리해야할지 등을 정합니다. 

 

OTT의 정의는 content provider, directly to viewers over the Internet 이라고 할 수 있습니다.

 

CDN의 과정은 www.youtube.com/watch?v=Bsq5cKkS33I

를 통해 쉽게 이해할 수 있습니다.

 

유튜브는 독자적인 CDN을 가지고 있고 netflix와 달리 pull-caching을 씁니다. 사용자가 요청을 하면 사용자와 가까운 곳에서는 그냥 보내주고 없으면 다른 쪽에서 가지고 와서 저장해서 보내줍니다. 최근에 MPEG-DASH방식을 쓰고 있습니다. 그리고 DNS-redirect방식을 씁니다. DNS-service를 이용해서 요청한 곳으로 부터 가까운 서버의 주소를 알려주는 방법을 쓰고 있습니다. 가장 RTT가 낮은 서버를 알려줍니다. 

 

칸칸이라는 것이 있는데 이는 기본이 p2p입니다. 그러나 여기에 CDN을 결합하여 CDN-p2p방식을 사용합니다.

'컴퓨터 네트워크' 카테고리의 다른 글

3장 정리  (0) 2020.10.25
3장 1~3 요약(미완성)  (0) 2020.10.21
Chapter 2.1 Principles of network applications  (0) 2020.09.26
Chapter 2.1 Principles of network applications  (0) 2020.09.26
CN Q&A  (0) 2020.09.25