본문 바로가기
CS이론/네트워크

멀티미디어 네트워크

by limew 2024. 2. 16.

Multimedia networking

- 어떻게 유튜브 같은 멀티 미디어 서비스가 동작하는지 공부

- 아날로그 => 디지털화  

 

오디오

 

멀티미디어 서비스가 제공하는 첫번째 기능: 오디오

- 아날로그 시그널을 디지털 신호로 변환하는 작업을 sampling 이라고 함

- 자연스러운 소리를 정영화된 비트로 변환하는 작업

- 샘플링 주기를 짧게하면 짧게할수록, 샘플링 할때 비트수가 많으면 많을수록 더 완벽하게 아날로그 소리와 같아짐

- 1초에 나타내는 비트 양: CD는 1.411 Mbps, MPS는 96, 128, 160 kbps, CD가 더 고음질

- coding rate가 높을수록 음질이 좋음

 

 

비디오

 

- 비디오는 이미지의 연속, 초당 나타내는 이미지 횟수가 많을수록 고화질

- 각 이미지는 프레임이라고 한다, 프레임에는 해당 이미지에 모든 픽셀 정보가 담겨있음

- 어차피 근처 픽셀끼리는 같은 색을 가지고 있음, 그렇기에 중복되는 픽셀은 압축시켜서 프레임에 저장해놈

- 초당 나타내는 프레임 수를 coding rate 라고 함

- coding rate가 높을수록 화질이 좋음

 

멀티미디어 네트워크의 3가지 타입

1. streaming, stored: 이미 서버에 저장되어있는 오디오, 비디오를 틀어줌(youtube, Netflix)

2. conversational: voice/video over IP (Skype)

3. streaming live: 라이브 송출(아프리카)

 

Streaming stored video

유트브는 어떻게 동작할까

 

 

jitter: 딜레이가 일정하지 않은 문제점

빨간색 그래프가 서버가 보내고 검정색이 클라이언트가 받는 것을 나타내는데 그래프를 보면 알 수 있듯이 jitter가 나타난다.=> 바로 플레이할 수 없다

=> 첫번째 프레임을 받고나서 바로 플레이하지 않고 어느정도 기다린 뒤 플레이한다 = 이것이 버퍼링이다

 

버퍼

 

들어오는 속도보다 playout하는 속도가 빠르면 텅 비면서 갑자기 멈춘다

 

- 서버에서 주는 그대로 host에서 플레이를 하는게 베스트, 하지만 네트워크 상황 때문에 바로 송출하기는 어려움

- host는 서버에서 받은 데이터를 바로 송출하지 않고 잠시 버퍼에 담았다가 해당 버퍼가 어느정도 차면 그때 송출(버퍼링)

 

멀티미디어의 Transport 계층

- UDP는 네트워크 상황을 고려 안하니 네트워크 상황이 나쁠경우 하나도 제대로 가지 않아서 사용하기 어려움

- TCP는 또 너무 네트워크 상황에만 의존해서 컨트롤 하기 어려움

- 그래서 멀티미디어 서비스에서는 TCP 기반의 DASH라는 프로토콜을 사용 (http를 사용해 streming)

 

 

- 2GB 짜리 영화가 있을때 2GB를 통째로 인코딩(저장)하는게 아니라 256kb 등 작은 단위(chunks)로 쪼갬

- 각 chunks를 하나의 버전으로 인코딩 하는 것이 아닌 128kbps, 256kbps, 512kbps, 1mbps, 2mbps, 5mbps... 등으로 인코딩 해놓음

- 각 chunks별 인코딩된 url을 담아놓는 테이블을 manifest file이라고 함

- 사용자가 영상을 시청하면 이 manifest file을 넘겨줌

- 처음에 영상을 틀때 128kbps부터 틀어줌, 그리고 네트워크 상황을 판단해서 괜찮으면 인코딩 버전을 점점 늘리고 상황이 안좋으면 점점 낮춤

 

 

- youtube는 동시 사용자가 많음, 이 경우 모든 영상을 한 곳에 저장돼 있으면 요청이 너무 많아지면 수용을 못하는 문제가 발생함

- 파일 저장 서버를 한곳에 두는 것이 아닌 전세계에 두는 CDN (Content Distribution Network)방식을 사용함

- 사용자가 요청이 오면 메인 서버는 manifest file만 넘겨주고 사용자는 근처 서버에서 데이터를 받아옴

 

- 근데 사용자마다 같은 manifest file을 받는데 어떻게 각각 다른 서버에서 데이터를 받아올수 있지?

- manifest file url을 찾아가려면 해당 IP를 알아야함

- DNS 쿼리를 보내 해당 IP를 알 수 있음

- 한국에서 요청이 오면 한국 cdn의 ip를, 캐나다에는 캐나다 cdn의 ip를 알려줌 (요청한 사람의 src ip를 보고 가장 근처의 cdn ip를 알려줌)

- DNS 쿼리를 보내는 과정에서 사용자의 IP 주소가 manifest file을 관리하는 CDN의 DNS 서버에게 전달됨

- 해당 DNS 서버는src IP주소로 판단해서 근처 CDN 서버의 IP를 알려줌

- 그래서 같은 manifest file을 받아도 각 지역마다 다른 서버에 접속하게 됨