이번 장에서는 비디오 스트리밍과 CDN (Content Distribution Networks)에 대해 알아본다 !
유튜브, 넷플릭스 등 우리가 자주 사용하는 플랫폼에서 어떻게 수많은 영상들을 수많은 사용자에게 제공하는지에 대해 알아보자 ~ !
1. Video Streaming and CDNs - context
우선 기술적으로 배우기에 앞서 비디오 스트리밍과 CDN의 배경, 문맥에 대해 알아보자!
- 비디오 트래픽 : 인터넷 대역폭의 주 사용자인 video traffic
→ 넷플릭스, 유튜브는 각각 ISP트래픽의 37%, 16%를 사용한다 !
하지만 문제점이 있는데 .. - 문제점1. ~1Billion에 달하는 수많은 사용자들에게 도달하는 방법
- 하나의 대형 비디오 서버는 이러한 트래픽을 감당할 수 없음
- 문제점 2 . heterogeneity - 사용자의 다양성
- 서로 다른 사용자는 서로 다른 capabilities을 가짐 ( 사용자의 대역폭이 모두 다름 ! )
- 해결방법 : 분산형 응용 프로그램 수준의 인프라가 필요함
2. Multimedia : Video
비디오에 관한 개념들
- 비디오 : 일정한 속도로 표시되는 이미지의 연속 (ex. 1초당 24개의 이미지)
- 디지털 이미지 : 픽셀의 배열 !
각 픽셀은 bits로 나타낸다 - 코딩(coding) : 이미지 내부 및 이미지 간 중복을 활용하여 이미지 인코딩에 사용되는 비트 수를 줄이는 것
- 공간(within image)
- 시간 (from one image to next)
- CBR (Constant Bit Rate) : 고정된 비디오 인코딩 속도
- VBR (Variable Bit Rate) : 공간 및 시간 코딩의 양에 따라 비디오 인코딩 속도가 변화
- 예시 :
- MPEG 1 (CD-ROM) 1.5Mbps
- MPEG2 (DVD) 3-6 Mbps
- MPEG4 (인터넷에서 주로 사용 <1Mbps)
3. Streaming stored video
유튜브, 넷플릭스를 보면 '비디오 스트리밍'에 관한 이해가 바로 될 것이다.이러한 비디오 스트리밍 서비스는 저장된 비디오를 스트리밍하여 사용자가 인터넷에 연결된 장치에서 즉시 재생할 수 있도록 한다.
즉 ,stored video는 인터넷을 통해 비디오 파일을 다운로드 하지 않고 실시간으로 재생할 수 있도록 하는 기술이다 ~~ !
이 글을 보는 우리는 (대부분) 전산학도(우리학교 송 교수님의 말을 빌려보았다)기 때문에 아 스트리밍이 이거구나 ~~ 라고 이해하고 넘어갈 것이 아니라 어떻게 네트워크에서 스트리밍을 할 수 있는가와 그에 관한 프로토콜을 알아보아야한다.. 그렇기에 DASH에 대해 알아보자 !
Streaming multimedia : DASH
Dynamic, Adaptive Streaming over HTTP , 동적 적응형 스트리밍
네트워크 대역폭에 따라 자동으로 비디오 품질을 조정하여 사용자에게 최적의 스트리밍 경험을 제공할 수 있게 하는 HTTP기반 스트리밍 프로토콜이다.
유튜브, 넷플릭스를 사용하다보면 네트워크가 좋지 않을 때 영상이 바로 끊기기 보다 1080 → 720 이런 식으로 화질이 낮아지는 경험이 있었을 것이다 ! 이러한 내용을 생각해보면 쉽다 ~~
서버와 클라이언트의 역할
→ 서버는 동영상 파일을 청크단위로 나누고 각각을 다른 속도로 인코딩하여 저장하고, 클라이언트는 서버와의 대역폭을 측정하고 매니페스트를 통해 동영상 파일의 각 청크를 요청하면서 현재 대역폭에 따라 최적의 코딩 속도를 선택한다 !
- server :
- 비디오 파일을 여러개의 청크로 나눈다
- 각각의 청크는 다른 속도로 인코딩되고 저장된다.
- manifest file: 서로 다른 청크들의 URL제공
- client :
- 일정 주기로 서버에서 클라이언트로의 대역폭을 측정한다.
- manifest를 확인하여 한 time 마다 한 청크씩 요청한다.
- 현재 대역폭에 따라 지속가능한 최대 코딩 속도를 선택한다.
- 다양한 시간에 다른 코딩 속도를 선택할 수 있다. (해당 시점에서 사용 가능한 대역폭에 따라 ! )
- 'Intelligence at client' :클라이언트가 결정(determine)한다
- 1. when : 언제 청크를 요청할 것인가
→ 클라이언트는 현재 버퍼 상태를 계속 모니터링하여, 버퍼가 공백(Starvation)에 빠지거나 오버플로(Overflow) 상태가 되지 않도록 청크를 요청할 시기를 결정한다. - 2. what encoding rate : 어떤 인코딩 속도로 요청할 것인가
→ 클라이언트는 현재 대역폭을 특정하여, 가능한 최대 인코딩 속도로 청크를 요청한다. 대역폭이 증가하면 더 높은 인코딩 속도로 청크를 요청하여 더 높은 화질의 비디오를 볼 수 있다. - 3. where : 어디서 청크를 요청할 것인가
→ 클라이언트는 서버와의 거리나 대역폭 등을 고려하여, 클라이언트와 가까운 서버 또는 대역폭이 높은 서버에서 청크를 요청한다, 이를 통해 클라이언트는 최적의 성능으로 동영상을 스트리밍할 수 있다.
- 1. when : 언제 청크를 요청할 것인가
- Progressive Download
- Adaptive HTTP Streaming
4. CDN : Content Distribution networks
콘텐츠 전송 네트워크 , 동영상 파일을 더 빠르고 안정적으로 전송하기 위한 기술
😱 비디오를 보낼 때 우리는 문제점에 직면한다.
: 수백만개의 비디오 중에서 선택된 콘텐츠를 동시에 수십만명의 사용자에게 스트리밍하는 문제점 🥺
✅ Option I : 하나의 대형 메가 서버
하지만 이러한 방식에도 여러 문제점이 존재하는데 ..
1. 단일 장애 지점
: 한 서버가 다운되면 모든 사용자들이 서비스를 이용할 수 없음 .. !
2. 네트워크 병목 현상
: 모든 사용자들이 대형 서버로부터 비디오를 받아야하기 때문
3. 먼 거리에 있는 클라이언트
: 서버와의 연결 경로가 길어져 지연시간이 높아질 가능성이 높다 !
4. 서버에서 나가는 링크의 대역폭이 쉽게 과부화될 수 있음
: 모든 사용자들이 비디오의 복사본을 받아야하기 때문에 ~ !
이러한 문제점들이 존재하기 때문에 하나의 대형 메가 서버를 해결책으로 삼기에는 좀 에바인 것 같다.
✅ Option II : 콘텐츠를 여러 지리적 위치에 저장하고 서비스하는 방법 (CDN)
1. enter dpeep : CDN서버를 다양한 엑세스 네트워크에 분산 배치하는 것
- 사용자들과 가까이 위치
- ex. Akamai : 1700개 이상의 위치에서 서비스를 제공
2. bring home : 적은 수의(10개 정도)의 대형 클러스터를 엑세스 네트워크 근처의 POPs에 배치하는 것 → Limelight와 같은 기업에서 사용
** 액세스 네트워크 : ISP나 통신사와 같은 서비스 제공자가 일반 사용자들에게 제공하는 인터넷 연결 수단 (ex. 가정이나 사무실에서 사용하는 인터넷 연결 = 브로드밴드 인터넷 서비스를 말함)
** 클러스터 : 여러 대의 컴퓨터나 서버를 묶어서 하나의 시스템처럼 동작하게 만든 것
** POPs : 인터넷 서비스 제공자나 CDN이 사용자에게 제공하기 위해 사용하는 지리적으로 분산된 위치 (POP3와 헷갈리지말것 ! )
이제 ~ CDN을 사용하는 이유를 알게 되었다 동영상 스트리밍을 할 때 문제점이 생기는데 그 문제점을 하나의 단일 서버로 하는 것이 힘드니까 CDN을 사용하는 것 ! 그럼 이제 본격적으로 CDN에 대해 알아보러 가자 ~
CDN이란
CDN은 앞서 살~짝 말한 것처럼 콘텐츠를 여러 지리적 위치에 분산하여 저장하는 시스템이다.
- CDN : 콘텐츠의 복사본을 CDN nodes에 저장하는 것
ex. 넷플릭스는 복사본을 MadMen에 저장한다.
- 구독자는 콘텐츠를 CDN에게 요청한다.
→ directed to nearby copy, retrieves content : CDN에서 콘텐츠를 요청하는 해당 콘텐츠의 복사본이 저장되어 있는 가장 가까운 CDN노드로 리디렉션된 다음, 해당 복사본을 검색하고 다운로드하는 과정 !
→ 만약 네트워크 경로가 혼잡하다면, 다른 복사본을 선택함
넷플릭스에서 MADMEN 예시를 자세히 보자
넷플릭스가 MADMEN이라는 콘텐츠의 다수의 복사본을 여러 지리적 위치의 CDN 노드에 저장할 수 있다. 사용자가 MADMEN을 시청하려면 CDN에 요청하고, 해당 콘텐츠가 저장되어 있는 가장 가까운 노드로 리디렉션된다. 네트워크 경로에 혼잡이 발생할 경우, 사용자는 다른 CDN노드에서 해당 콘텐츠를 검색할 수도 있다. 이렇게 함으로써 CDN은 더 나은 엑세스 속도와 더 적은 네트워크 혼잡을 제공한다 ~~
⚠️ 하지만 이런 CDN에서도 문제점이 발생하는데 ..
바로 OTT(over the top)문제이다.
OTT 문제 : 혼잡한 인터넷 환경에서의 콘텐츠 문제
- 어떤 CDN노드에서 콘텐츠를 검색해야할까 ?
→ OTT서비스는 가까운 CDN노드에서 콘텐츠를 검색함으로써 더 나은 시청 경험을 제공할 수 있다. 따라서 CDN노드의 위치 및 네트워크 상태에 대한 실시간 정보를 수집하고 분석하여 사용자가 현재 위치안 지역에 가장 가까운 CDN노드에서 콘텐츠를 검색할 수 있도록 해야한다. - 혼잡한 인터넷에서의 사용자의 행동 ?
→ OTT 서비스를 이용하는 사용자가 인터넷 네트워크의 혼잡과 같은 문제를 겪으면 시청 경험이 저하될 수 있다 = 소비량이 준다! 이를 방지하기 위해 사용자가 네트워크 혼잡 문제를 감지할 수 있도록 하는 기능을 제공해야함. 또한 이러한 상황에서 사용자에게 적극적으로 대처할 수 있는 다양한 옵션을 제공하여 사용자가 적절한 조치를 취할 수 있도록 해야한다. - 어떤 콘텐츠를 어떤 CDN노드에 배치해야할까?
OTT 서비스에서는 다양한 콘텐츠를 제공하는 경우가 많음 그렇기에 어떤 콘텐츠를 어떤 CDN노드에 배치할지 결정하는 것이 중요하다! CDN 노드에 배치되는 콘텐츠의 특성, 노드의 지역 및 성능, 그리고 콘텐프의 인기도 등을 고려하여 최적의 배치를 결정해야한다.
CDN content access : a closer look
자세히 보자 ~ 오늘은 Alice대신 Bob이 등장했다 !
Bob(클라이언트)가 비디오 http://netcinema.com/6Y7B23V를 요청했다 (들어가봤자 아무것도 안나온다)
- 비디오는 http://KingCDN.com/NetC6y&B23V CDN에 저장되어 있다.
1-6번까지 따라가다보면 이해가 잘 될 것이다 ~ !
Case Study (사례 분석) : Netflix
[요약 및 정리]
항상 주변에서 접하지만 ~ 그 원리는 잘 몰랐던 비디오 스트리밍 서비스에 대해 네트워크의 관점에서 찬찬히뜯어 살펴 보았다 !
비디오는 인코딩, 디코딩 과정을 통해 서버에 업로드 & 다운로드 하고 스트리밍 서비스에서는 DASH방식을 사용하여 서버가 비디오 파일을 여러개의 청크로 나누어 저장한 것을 클라이언트가 네트워크 상태(대역폭)에 맞게 time마다 한 청크를 가지고 온다 !
그리고 수많은 유저에게 수많은 영상을 스트리밍하기 위해 콘텐츠를 여러 지리적 위치에 분상하여 저장하는 기술인 CDN을 이용한다.
그리고 Bob의 시나리오까지 보았다 ~
[출처 및 참고]
한국항공대학교 「컴퓨터 네트워크」 강의 자료
정기훈, 「원리로 이해하는 네트워크 입문」 정보문화사 ,2003
https://ko.wikipedia.org/wiki/%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4
'[지식창고] > 네트워크' 카테고리의 다른 글
[ 컴퓨터 네트워크 ] 3장에 들어가기 앞서 (0) | 2023.04.06 |
---|---|
[ 컴퓨터 네트워크 ] 2.8 socket programming with UDP and TCP (0) | 2023.04.02 |
[ 컴퓨터 네트워크 ] 2.6 P2P applications (3) | 2023.04.01 |
[컴퓨터 네트워크] 2.5 DNS (1) (0) | 2023.03.29 |
[컴퓨터 네트워크] 2.4 electronic mail (SMTP, POP3, IMAP) (0) | 2023.03.28 |