
1. Video Streaming과 CDNs 개요
스트리밍 비디오 트래픽은 인터넷 대역폭의 주요 소비자임
(ex. Netflix, YouTube 등)
분산 구조를 사용해서, 여러 서버와 위치에 콘텐츠를 미리 배포
가까운 서버에서 사용자에게 스트리밍 하도록 함
2. Video Coding
비디오는 파일 크기가 너무 크기에 압축을 하기 위해 coding 필요함

이미지 내 중복 제거
(ex. 같은 색이 100번 반복되는 경우, 보라색 100번으로 표현)
이미지 사이 중복성 제거하는 방식으로, 연속된 프레임 사이의 차이만 전송
(ex. frame i 와 frame i+1 이 거의 같다면,
i+1 전체를 보내는 대신, i와 다른 부분만 전송)
3. Video Encoding (압축)
항상 일정한 비트 전송율로 영상 전송
(복잡한 장면이든, 단순한 장면이든 상관없이)
장면의 복잡도에 따라 비트 전송율 다름
(장면 복잡하면 더 많은 비트 사용)
4. Streaming Stored Video


클라이언트가 재생하면, 원래 비디오의 타이밍을 그대로 맞춰야함

네트워크 변동(jitter)이 있어도, 끊기지 않고 부드럽게 재생
클라이언트가 버퍼(client-side buffer) 를 사용해서
버퍼를 먼저 채우고, 일정량 채워지면 재생 시작
DASH = Dynamic, Adaptive Streaming over HTTP
주기적으로 네트워크 속도 측정
(최대 코딩 속도 청크를 선택해서 다운로드 받기 위해)
client가 고려해야되는 것
Streaming Stored Video Summary
= Encoding + DASH + Playout Buffering
1) 인코딩 방식 필요
2) DASH 사용해서 청크를 현명하게 가지고 오기
3) 클라이언트 쪽에서 충분한 버퍼 쌓아두기
5. Content Distribution Networks (CDNs)
Content를 분배하는 Network
(CDNs을 사용해야되는 이유 1. 개요에서 설명함)
현실적으로 불가능함 (사용자 감당 x)
여러 지역 서버에 콘텐츠 복사본을 저장하고, 사용자에게 가까운 서버가 제공
많은 access network 안쪽에 CDN 서버를 설치
(사용자가 최대한 가깝게)
비교적 적은 수의 대규모 서버를 access network 바깥쪽에 설치
사용자가 'MadMen'을 보고 싶다고 요청하는 경우

사용자가 CDN 네트워크에 "MadMen" 요청
"MadMen" 복사본이 있는 서버를 찾음 (manifest file 참고)
가장 가까운 서버로 연결하여 콘텐츠를 스트리밍 시작
만약 연결 경로가 혼잡하면, 복사본을 가진 다른 서버로 요청 전환 가능
OTT (Over The Top) 서비스는 인터넷을 통해 직접 콘텐츠를 제공
6. CDN content access Example
Bob이 http://video.netcinema.com/6Y7B23V URL을 요청하는 경우
(실제 비디오는 KingCDN이라는 CDN 서버에 저장)

1) Bob이 URL 입력
2) URL을 로컬 DNS 서버로 질의
video.netcinema.com의 IP 주소를 찾기 위해
3) 로컬 DNS가 netcinema.com의 권한 DNS 서버로 문의
video.netcinema.com의 IP가 어디 있는지 모를 때
4) 권한 DNS가 KingCDN 서버를 추천
"video는 KingCDN이 관리해!"
(도메인에 대한 책임이 있어서, 정보를 넘기는 것)
5) Bob은 KingCDN의 콘텐츠 서버를 찾아 비디오 요청
실제 HTTP 요청을 보냄
6) KingCDN 서버가 비디오 스트리밍 시작
Bob에게 비디오 데이터 전송
Case study : Netflix

1) Bob이 넷플릭스 로그인 및 계정 관리
2) Bob이 넷플릭스에서 보고 싶은 비디오를 탐색
3) 원하는 비디오 선택 시, manifest file(다양한 버전들의 URL 리스트)을 받음
4) Bob이 manifest를 보고 최적의 CDN 서버를 선택 → 비디오 스트리밍 시작