LG U+ Google TV (u+ tv G) 비디오 요청 및 전달 방식 분석
1. 소개
2. TV에서 실시간 방송 시청 (LiveTV on TV)
▶ 3. TV에서 영화 및 TV 다시보기 시청 (VoD on TV)
4. TV에서 YouTube 동영상 시청 (YouTube on TV)
5. Mobile 단말에서 실시간 방송 시청 (LiveTV on Mobile)
VoD on TV: TV에서 영화 및 TV 다시보기 시청
이번 시간에는 u+ tv G에 VoD 서비스 로직과 스트리밍 특성에 대해서 소개해 드리겠습니다.
1. VoD 전달 로직
■ VoD 서비스 프로토콜 요약
■ VoD 스트리밍 서버 선택하기
■ VoD 스트리밍 서버를 통해 스트리밍 받기
■ Trick Play 하기 ("RTSP acts as a network remote control for multimedia servers")
■ VoD 전달 로직 고찰
LG 데이콤 시절에는 VoD 전달 방식이 D&P(Download & Play) 방식 - VoD 서버에 있는 컨텐츠를 STB의 하드디스크에 다운로드 받아 재생하는 방식으로 현재 OTT 전달 방식과 같이 초기에 빨리 다운로드 받고 패킷 손실시 재전송함. 따라서 IP 망에 QoS 불필요 - 이었었는데 지금의 LG U+는 그 방식을 RTSP로 전환하였습니다.
현재의 RTSP 기반의 LG U+ VoD 전달 로직은 KT 방식과 매우 매우 유사합니다. KT VoD 서비스 역시
KT나 LG U+ 모두 STB이 스트리밍 받을 VoD 서버를 "망에서 선택"해 주는 방식이라면, 네덜란드 Tele2-Versatel 사업자(2005년에 넷매니아즈에서 TPS 컨설팅 수행)의 경우 망에서 STB으로 여러개의 VoD 스트리밍 서버 IP 주소를 전달하고(예. 9개), STB에서 이 서버들로 RTSP DESCRIBE 메시지를 보내어 이 중 응답(RTSP 200 OK 메시지)이 가장 빠른 VoD 서버를 "STB이 선택"하는 방식을 사용하였습니다.
2. VoD 전달 특성
아래 그림은 Wireshark을 이용하여 RTSP 및 VoD 스트리밍 패킷을 캡쳐한 것입니다.
VoD 영상은 아주 일정하게 8Mbps 대역폭으로 전달됨을 볼 수 있고, 스트리밍 패킷의 Transport Protocol은 TCP이며 DSCP 값은 0x88(AF41: Assured Forwarding)로 마킹되어 LG U+ IP 망에서 QoS 보장을 받습니다.
작년 봄에 시험한 KT VoD 스트리밍 서비스의 전달 특성은 아래와 같았습니다.
3. VoD CDN
LG U+ VoD 서비스에 있어 "(1) 이용자가 요청한 컨텐츠가 VoD 스트리밍 서버에 존재하지 않을때(Cache Miss) VoD 오리진 서버로 부터 가져와서(Cache Fill) 이용자에게 전달해 줄까? (2) 만약 Cache Miss/Fill 동작 없이 운영자가 VoD 스트리밍 서버에 미리 컨텐츠를 저장시켜 놓는다면, 이용자가 자주 시청하는 컨텐츠(Hot Contents, 예: 런닝맨)와 그렇지 않은 컨텐츠(Cold Contents, 예: 이승만 다큐멘터리)는 어떻게 분산 배치되어 있을까?"가 궁금했습니다.
먼저 작년 봄 KT 시험 결과를 소개해 드리면 다음과 같습니다.
KT의 경우, traceroute 실행 결과(DOS 명령어: tracert) Hot Contents는 댁내 STB으로 부터 5개의 hop count(# of router) 후에 VoD 스트리밍 서버가 위치해 있었고 Cold Contents는 10개의 hop count 후에 VoD 스트리밍 서버가 위치해 있었습니다. 이 결과를 통해 "KT VoD 서버는 전국 각 시/도에 위치한 POP에 분산 배치되어 있고 이들 서버에는 Hot Contents들이 저장되어 있다. 그리고 서울 여의도에 위치한 KT IPTV Headend에는 모든 Contents(Hot Contents + Cold Contents)가 위치한다."라는 예상이 가능했습니다. Hot과 Cold Contents가 서로 다른 VoD 스트리밍 서버에 위치해 있음을 통해 Cache Miss/Fill 동작은 하지 않는 것으로 추측이 됩니다. (추측의 근거: 만약 Cache Miss/Fill 동작을 한다면 Hot과 Cold Contents 모두 이용자와 가까운 즉, hop count가 5인 VoD 스트리밍 서버로 부터 컨텐츠를 받을 것임)
LG U+ 역시 Hot Contents를 전달해 주는 VoD 스트리밍 서버 대역(123.140.21.0/24)과 Cold Contents를 전달해 주는 VoD 스트리밍 서버 대역(123.140.207.0/24)이 달랐습니다(아래 그림 참조). 이를 통해 일단 Cache Miss/Fill 동작은 하고 있지 않은 것으로 추측이 됩니다.
그런데.... traceroute 결과에서 나온 hop count가 좀 이상했습니다. Hot Contents를 저장하고 있는 VoD 스트리밍 서버는 STB으로 부터 9개 hop count 후에 위치해 있으며 Cold Contents를 저장하고 있는 VoD 스트리밍 서버는 10개 hop count 후에 위치해 있었습니다. 즉, 둘 사이가 너무 가깝습니다. 그리고, Hot Contents를 저장하고 있는 VoD 스트리밍 서버가 KT와 비교했을때 STB과 너무 멀리 위치해 있습니다.
이 결과만을 놓고 봤을때는 Hot Contents를 저장하고 있는 LG U+ VoD 스트리밍 서버가 이용자와 가까운 곳(POP)에 전진/분산 배치되어 있는 것인지 확신이 들지 않습니다. (대전이나 부산에서 한번 시험을 해 보면 그 해석이 좀 더 명확해 질 것 같습니다만...)
■ STB to VoD server
SETUP rtsp://123.140.21.34/M0112BAA63PPV00HD108.mpg RTSP/1.0
CSeq: 0
Transport: CIP/TCP; unicast; destination=192.168.219.21
x-VODRequestID:
■ VoD server to STB
RTSP/1.0 200 OK
CSeq: 0
Session: 1387711
Transport: MP2T/TCP; unicast; client_port=21586; server_port=38156
Content-Type: application/sdp
Content-Length: 1030
m=audio 0 MP2T/TCP 83
m=video 0 MP2T/TCP 89
a=length: 4554912692
a=X-muxrate: 7487329
a=X-duration: 4866785
a=X-trickable: 1
a=X-ptsVideoUnit: 3003.000000
a=X-packetTime: 5423.562895
a=X-patpid: 0
a=X-pmtpid: 256
a=X-pcrpid: 33
a=X-videopid: 33
a=X-audiopid: 34
a=X-videoTrackId: 0
a=X-audioTrackId: 0
a=X-videoTimescale: 0
a=X-audioTimescale: 0
a=X-dwMicroSecPerFrame: 0
a=X-biSize: 0
a=X-biWidth: 0
a=X-biHeight: 0
a=X-biPlanes: 0
a=X-biBitCount: 0
a=X-biCompression: 0
a=X-biSizeImage: 0
a=X-biXPelsPerMeter: 0
a=X-biYPelsPerMeter: 0
a=X-biClrUsed: 0
a=X-biClrImportant: 0
a=X-wFormatTag: 0
a=X-nChannels: 0
a=X-nSamplesPerSec: 0
a=X-nAvgBytesPerSec: 0
a=X-nBlockAlign: 0
a=X-wBitsPerSample: 0
a=X-cbSize: 0
a=X-cicpport: 32127
a=X-pmt: R0EAHwACsFAAAcEAAOAh8CiRJgBDU1A9TEdEYWNvbSZJRD0nTT......