ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [네트워크] p2p, 비디오스트리밍(DASH)과 CDNs
    카테고리 없음 2023. 10. 23. 22:47

    p2p란? 

    항상 서버가 켜있지 않고 각 클라이언트는 서버가 될 수 있다. (서버가 항상 켜져있지 않다.)클라이언트끼리 직접 연결을 맺고 통신하는 구조이다.

    p2p의 가장 큰 장점은 self-scalability 하다는 것이다.

    p2p 서버에 해당하는 peer가 사설 IP주소를 가지는 경우가 있으므로, 정상적인 서비스 동작을 위해서는 라우터에 추가기능이 필요하다. 또한 peer들이 인터넷 곳곳에 분산되어 있다보니 보안을 강화하기 어렵다는 점과, ISP가 의도치 않게 불법 데이터를 p2p cache에 저장할 수 있기에 주의가 필요하다. p2p의 서버(peer)는 주로 개인 호스트이므로 이 호스트가 위치한 access networt가 residential network인 경우 해당 ISP의 uplink가 throughput의 bottleneck이 될 수 있다. 

     


    OTT service란?

     

    OTT service란 인터넷을 통해 콘텐츠를 스트리밍(다운로드하며 동시에 제공하는)하는 서비스로, 확보된 bandwidth가 아닌 인터넷망을 통해 서비스를 제공한다.

    OTT의 문제는 1) storage, network bandwidth를 고려해 Server infra를 구축해야한다는 점 (-> CDN을 구축하여 해결)

    2) client마다 다른 downlink capacity와 device마다 다른 transmission speed를 고려해 구축해야한다는 점(-> DASH를 사용하여, 파일을 chunk단위로 나누어 각각 다르게 인코딩하여 다른 서버에 저장해서 해결)입니다.  

     

    DASH (Dynamic, Adaptive, Streaming over Http)란?

    DASH는 stored된 영상들을 대상으로한 스트리밍을 가능하게 하는 기술로 http 프로토콜 위에서 돌아간다.

    서버는 하나의 콘텐츠를 chunk로 쪼갠 후 chunk를 각기 다른 bit rate(클라이언트마다 요구하는 화질이 다르고, 링크의 capacity가 다르기에)으로 encoding하여 각기 다른 url에 저장한다. 이들을 manifest 파일에 저장한 후 client에게 제공하면 client는 상황에 맞게 골라서 pull하여 받아온다. 영화 한편을 같은 퀄리티, 같은 서버에서 받아오지 않는다. 

     

    클라이언트가 똑똑해야 한다. 버퍼를 통해 chunk 조절

     

    Video-on-demand (VoD) 스트리밍 서비스를 제공하기 위한 DASH 프로토콜의 서버 동작은? 

    (1) 각 비디오를 일정 크기의 "chunk"로 나누고,

    (2) 여러 가지 bitrate로 (혹은 다양한 품질별로) encoding하여

    (3) 각 다른 URL에 (분산하여) 저장한 후,

    (4) 그 내용을 manifest 파일에 저장하여 client에게 알려준다.

     

    그렇다면 content를 가진 Server를 어디에 둬야할까?

    1) single, large "mega-server" , 2) CDNs 중 2)를 선택한다.

    그 이유는 1)을 선택했을 때 아래와 같은 문제점이 생기기 때문이다.

    • single point of failure : 유일한 서버에 장애가 발생하면, 서비스를 유지할 수 없다.
    • point of network congestion : 서버가 유일하다면 traffic이 방대해 network congestion이 발생할 수 있다.
    • long path to distant clients : 물리적으로 먼 거리에 있는 클라이언트에게 응답이 지연된다.
    • multiple copies of video sent over outgoing link : 중복된 data를 계속 응답할 수 있다.

    CDNs (Content Distribution Networks)란? 

    OTT 사업자가 가진 문제중 storage, network bandwidth 문제를 극복한 서버 구축 방식으로 등장한 네트워크로, 지리적으로 분산된 서버들을 연결해 웹콘텐츠의 복사본을 사용자 가까이 두어 웹 성능 및 속도를 향상시킨다.

    CDNs

    CDNs을 두는 방식으로는 1) enter deep과, 2) bring home(enter deep보다 client는 느리게 콘텐츠에 접근하지만 ISP입장에서는 관리가 편하다)이 있다.

    enter deep은 Client ISP network 안(하늘색)에 -> Akamai가 이렇게 사용, bring home은 좀더 윗단(파란색)에 둔다. 

    즉,  서버 배치 철학 중 하나는 Enter Deep이라고 불리는 것으로, 서버 클러스터를 전 세계의 액세스 ISP에 배치함으로써 인터넷 서비스 제공자의 액세스 네트워크에 깊숙이 진입합니다. 최종 사용자와 CDN 서버 간의 지연을 줄이고 처리량을 늘리는 것이 목표입니다. 또 다른 철학은 Bring Home으로, 더 적은 수의 사이트에 대규모 CDN 서버 클러스터를 구축하고 일반적으로 이러한 서버 클러스터를 IXP(Internet Exchange Points)에 배치함으로써 ISP를 홈으로 가져오는 것입니다. Bring Home 설계는 일반적으로 Enter-deep 설계 철학에 비해 유지 및 관리 비용을 절감합니다

     

    cf. 파란색은 ISP와 ISP를 연결한 third party-IXP 부분이다.

     


    CDN content access

    CDN을 사용하는 흐름을 살펴보자.

     

    CDN 흐름

    1) Bob이 영화보려고 netcinema.com에 영화파일 주소를 요청한다.

    ->  KingCDN.com/NetC6y&B23V에 비디오가 저장되어 있다고 답변한다.(no CNAME)

     

    2) Bob의 Local DNS(LDNS)에게 파일주소(url)인 netcinema.com/6Y7B23V를 달라고 요청한다.

     

    3) LDNS는 .com DNS 서버에게 요청하고, .com DNS 서버는 Authoritative DNS 서버에게 요청하여 netcinema.com/6Y7B23V의 진짜 주소인 KingCDN.com/NetC6y&B23V를 얻는다. (CNAME)

     

    4)  KingCDN.com/NetC6y&B23V의 IP주소를 KingCDN의 Authoritative DNS 서버를 통해 얻는다. (A 타입)

     

    5) LDNS가 해당 주소를 Bob에게 돌려준다.

     

    즉, 비디오는 HTTP를 이용해 KingCDN.com에서 온다.

    CName을 이용한 DNS redirection을 통해 server distrbution을 구현한 것이다.


    Case study: 넷플릭스

     

    Bob이 넷플릭스의 영화를 보려고 한다.

    (1) Bob은 Netflix 계정을 관리하는 서버에 접속하여 인증받는다.

    (2) (3) Bob은 Netflix가 대여한 Amazon cloud에서 Manifest file을 받아온다.

    (4) DASH streaming을 사용하고, 가장 가까운 CDN server들에서 영화 streaming Push Caching 사용한다. 이때 TCP 연결을 맺기 위해 IP주소가 필요하고 CNAME과 A RR을 보낸다.

     


    넷플릭스는 컨텐츠와 네트워크 인프라를 모두 가지고 있는 content provider이나, Akamai는 컨텐츠 서비스 사업을 하기위한 인프라를 제공하는 cloud/distributed compution 회사이다. 

Designed by Tistory.