Cloud Streaming 소개: 개념, 기술적 어려운 점, 그리고 응용..

최근(2013.5.20)에 SK Broadband (SKB)에서 Cloud Streaming (CS)기반 IPTV 서비스에 대한 기자 간담회가 있었습니다. 그 내용을 간략히 소개하면 Set Top Box(STB)의 computation을 서버로 옮기고 서버에서 구동된 결과를 STB에서 보여주는 “CS기반 STB 가상화”기술을 통해 STB의 성능을 현재 최고 성능의 STB보다 월등하게 향상시켜 smart한 TV서비스를 제공하겠다는 것입니다. CS는 SKB에서 언급한 “STB 가상화”  뿐만 아니라 OnLive, LG U+의 C-Games, CJ 헬로비전의 X-Game과 같은 Game Cloud에도 사용되고 있는데, Game Cloud 덕분에 조금씩 CS에 대한 관심이 증가하고 있는 상황이지만, 아직까지는 국내에서는 상용화 기술을 보유하고 있는 업체가 없는 상황이라 관련된 기술에 대한 정보가 많이 부족한 상황입니다. 이번 포스트에서는 기본적인 CS의 원리, 상용화를 위한 기술적인 난점들, CS의 응용현황에 대해 간단히 소개하도록 하겠습니다. 참고로 SK planet에서는 2009년 말부터 현재까지 4년째 CS관련 R&D를 진행해 오고 있습니다.

1. Cloud Streaming (CS)이란

2011년 MIT에서 발행하는 기술잡지인 Technology Review (TR)에서는 2011년 10대 유망기술을 발표하면서 CS를 그 중 하나의 기술로 소개하였습니다. TR에서는 CS를 “높은 연산능력이 필요한 그래픽 집약적인 소프트웨어를 클라우드 컴퓨팅 서버에서 구동하고 결과만 video stream형태로 모바일 기기에 전송한다.“라고 설명하고 있습니다. 위의 설명에서 CS의 대상 기기를 모바일로, 대상 app을 그래픽 집약적 소프트웨어로 한정하는 점을 제외하면 CS를 가장 잘 설명하고 있는 문구라고 생각됩니다. (물론 OnLive의 CEO인 Steve Pearlman은 CS를 모든 app에 적용할 생각이라고 언급하고 있습니다).

그림 1.은 CS 개념을 설명하는 그림입니다.  먼저 서버에서는 프로그램을 구동하고, 그 결과 화면과 오디오를 실시간으로 압축하여 사용자 기기에 전송하면, 사용자 기기에서는 실시간으로 전송(live streaming)되고 있는 video를 재생하여 서버의 app이 구동되는 화면을 자신의 기기를 통해 보게 됩니다. 사용자가 app을 조작하기 위해 기기에 스크린을 터치하거나 키를 입력하면 사용자 기기는 사용자의 입력을 서버로 전송하고 서버에서 구동되는 app에 입력됩니다. 이러한 기술은 Server Based Computing (SBC)이라는 이름으로 예전부터 알려져 왔으며, VNC (Virtual Network Computing), RDS(Remote Desktop Service)가 대표적입니다. “서버에서 computing이 진행되고 원격 사용자의 단말은 rendering만 수행”한다는 점에서 SBC의 기본적인 concept은 CS와 동일하지만 CS는 서버의 결과가 압축된 video로 전송되는 점이 다릅니다. (다르다기 보다는 CS를 SBC의 subset으로 보는 것이 맞을 듯 합니다.) 현재는 SBC에도 Graphics 위주의 application을 위해서 CS를 접목하고 있습니다.

그림 1. Cloud Streaming 개념

   CS의 장점은 사용자 기기에게  streaming video player기능만을 요구한다는 것입니다. 네트워크를 통해 streaming되는 video를 재생할 수 있는 기기라면 OS, H/W 성능에 관계없이 CS Client가 될 수 있으며, 서버에서 구동 가능한 어떠한 application도 CS Client를 통해 서비스 받을 수 있습니다. 그렇기 때문에, 고사양의 PC 또는 Playstation, XBox와 같은 별도의 게임기를 필요로 하는 게임을 저 사양의 단말( 스마트TV, Set Top Box, 저 사양 PC, 모바일 기기)에서 경험할 수 있도록 하는 Game Cloud가 가장 먼저 상용화 되어 서비스되고 있습니다.

2. 상용화를 위한 기술적 난제들

CS를 상용화하는데 가장 큰 어려움은 실시간성과 경제성을 보장하는 것입니다. 실시간성은 서버에서 구동되는 app화면이 사용자 기기의 화면에서 재생되기까지의 지연 시간을 사용자가 느낄 수 없을 정도로 짧게 하는 것이고, 경제성은 서버 투자 대비 이윤을 보장할 수 있는 수준으로 서비스에 필요한 서버의 대수를 최소화하는 것입니다. 먼저 실시간성을 살펴보면, 사람은 입력에 대해 시각적으로 인지하는 데 걸리는 시간이 80 msec (0.08초)보다 작으면 시간 지연(latency)을 느끼지 못합니다.  그림 2는 현재 CS 시스템에서 실제로 생각할 수 있는 지연 요소들입니다. 크게 서버, 전송 단계, 그리고 CS Client에서의 지연 요소로 구분할 수 있습니다.


그림 2. CS 시스템에서의 지연 요소들

 CS서버 측에서는 app구동단계, app의 화면 capture 단계, encoding하는 단계, 그리고 encoding된 화면을 streamer로 전송하는 단계에서 latency가 발생합니다. 각 단계별 processing에서 latency가 발생할 수 있으며, processing과 processing사이에서 화면 data가 전송되면서도 latency가 발생합니다. 특히 가장 latency가 높은 Processing은 video encoding입니다. 이 부분은 뒤에서 별도로 설명을 하도록 하겠습니다. 서버 내에서 화면 데이터 전송시 latency를 줄이기 위해서는 process간의 buffer 개수의 최적화가 필요합니다.

전송 단계에서는 전송 망 내에서 router를 통과하면서 latency가 발생하게 됩니다. 모든 router는 수신되는 데이타 패킷을 입력 버퍼에 buffering하고 입력되는 순서대로 전송합니다(FIFO). 많은 량의 데이타가 router에 유입되면 buffering시간이 길어져 latency가 발생하게 됩니다. 이를 해결하기 위한 가장 쉬운 방법은 QoS가 보장되는 빠른 네트워크를 사용하고, CS 패킷의 QoS level을 높이는 방법입니다. 차선책으로는 전송 망의 capacity를 측정하고 이에 맞추어 adaptive하게 streaming하는 기술이 필요합니다.

마지막으로 CS Client에서는 데이타 수신단, audio/video decoding, audio/video 동기화, 화면 rendering, 그리고, 사용자 입력전송에서 latency가 발생합니다. CS Client에서의 latency를 최소화하는 데 가장 중요한 요소는 a/v동기화와 네트워크 수신에서 요구되는 buffer를 최소화하는 것입니다. a/v 동기화  buffer의 경우, 서버에서 동기화를 고려한 streaming을 통해 buffer 크기의 최소화가 가능하며, 네트워크 수신단의 buffer는 buffer under-run을 방지하는 기술인 adaptive streaming을 통해 최소화가 가능합니다.

참고로 아래 동영상은 adaptive streaming 적용 여부에 따른 buffer under-run문제 발생 여부를 3G Mobile망에서 테스트한 결과입니다.


동영상 1. Adaptive streaming 적용여부에 따른 Buffer under-run 정도

이와 함께, 서버에서와 마찬가지로 processing간 data전송 latency 최소화를 위해 processing간의 buffer개수를 최소화하는 것이 중요합니다. 재미있게도 TV에서도 latency가 발생하는데, 요즘 TV는 LCD의 잔상을 최소화하기 위해 frame rate을 원 입력 비디오보다 높여주는 frame rate up-conversion을 수행합니다. 예를 들어 240Hz로 광고하는 TV는 일반적으로 입력되는 신호인 30Hz(또는 60Hz)를 4배로 높이기 위해 interpolation을 통해 새로운 picture를 만들어 frame rate을 올리고, 이로 인해 높은 수준의 latency가 발생합니다. CS가 널리 확대되면 TV 제조사에서도 CS전용의 낮은 latency를 보장하는  TV를 생산하겠지요. CS의 실시간성은 위의 3가지 latency를 모두 최소화함으로써 구현할 수 있습니다. 현재 알려진 CS 시스템 중에서는 Game Cloud 서비스가 가장 latency가 짧으며, NVIDIA의 GeForce GRID는 latency가 약 150 msec정도로 알려져 있습니다.

또 다른 CS의 기술적인 이슈인 경제성은 서비스를 위해 사용하는 서버의 대수를 최소화하는 것, 즉 서버가 처리하는 동시 동접 CS Client의 수 (ConCurrent User: CCU) 를 최대화 하는 것입니다. CS 서버에서 CCU를 높이지 못하는 원인 중 가장 큰 것은 live video encoder입니다. Video encoder는 네트워크를 통해 전송이 용이하도록 video data의 크기를 줄여줍니다. 현재 인터넷으로 서비스되는 대부분의 비디오는 전세계 표준인 h.264로 encoding되고 있으며, 최고 100배의 압축률을 보여주고 있습니다. 그런데 h.264 video encoder는 매우 높은 연산량이 필요한데, 잘 알려진 h.264 encoder인 x264의 경우, Intel i7 CPU를 가진 PC에서 HD급 video를 4개정도 encoding할 수 있습니다. 여기에 app에 필요한 연산량을 고려한다면 실제 구동할 수 있는 app의 수는 3개 이하가 되어 경제성 있는 서비스가 어렵습니다. 이러한 문제를 해결하기 위해 GPGPU기반의 video encoder 또는 H/W기반의 video encoder를 사용하는 기술이 제안되고 있으며, CUDA 기반의 video encoder, H/W video encoder를 내장한 GPU를 사용하는 NVIDIA의 GRID, AMD의 SKY등이 최근에 소개되고 있습니다.

앞에서 언급했듯이 video encoder는 CS의 실시간성과도 관계가 있습니다. Video encoder의 연산량을 낮추면 latency도 줄일 수 있습니다. h.264의 경우, 사용 목적에 따라 baseline, main, high profile 가운데 선택할 수 있으며, 화면을 I(Intra), P(Prediction), B(Bidirectional) mode중 하나로 encoding할 수 있는데, 연산량 순서가 baseline<main<high profile , encoding mode중에서는 I < P< B mode와 같습니다. 다만 압축성능은 연산량 순서와 반대입니다. 그런데, B mode로 encoding하는 경우, 화면을 encoding하는 순서와 실제 화면의 시간적인 순서가 달라서 encoder내부에서 picture re-ordering을 위해 화면을 buffering하게 되어 latency가 발생합니다. 이러한 picture-re-ordering은 decoder에서도 동일한 과정을 거쳐야 해서 높은 latency가 발생하므로 CS에서는 사용이 불가능합니다.

3. CS 서비스 현황

3.1 Gaming Cloud

현재 CS는 Game on Demand로 불리는 Gaming Cloud 서비스에 적극적으로 활용되고 있는데, Ubitus, G-Cluster, Agawii, CiiNow, Playcast등 많은 Gaming Cloud 업체가 현재 활약하고 있으며, 한국에서는 LG U+와 CJ 헬로비전이 모바일과 STB를 통해 서비스 중이며, SK Broadband에서도 서비스를 open 예정입니다.

3.2 Set Top Box Virtualization

SK planet에서는 Gaming Cloud이외에 STB의 기능을 서버에서 제공하기 위한 STB virtualization을 CS를 통해 구현하였으며, SK Broadband와 Cable TV 사업자를 통해 서비스를 제공할 예정입니다. STB는 사업자가 구매해야 하므로 사업자에게는 높은 투자 비용을 요구합니다. 대당 10만원 정도로 높은 비용이 필요하여, 100만 명의 사용자를 위해서는 1000억의 비용이 듭니다. 또한 대부분의 사업자들이 오래된 STB를 보유하고 있는데, 이 STB들은 기계적인 수명은 아직 남았으나 서비스하기에는 성능이 부족해서 더 이상 사용이 어려운 상황입니다. CS를 적용하면, 이러한 STB들을 기계적 수명까지 사용이 가능하게 할 뿐만 아니라 높은 성능이 요구되는 스마트 서비스 또한 가능하게 할 수 있습니다. 참고로 SKB에서 언급한 CS기반 STB 가상화 기술을 SK planet에서는  vSTB (virtual STB)로 명칭하고 있습니다.

동영상 2. SKP BTV Cloud Streaming 시연 동영상

3.3 Remote Graphics

2013년 GPU Technology Conference (GTC)에서 NVIDIA는 Remote Graphics기술을 소개하였습니다. Remote Graphics는 3D rendering이나 video 편집과 같은 그래픽 집약적인 소프트웨어를 remote로 사용할 수 있도록 하는 기술입니다. 기존의 Remote Desktop으로 불가능했던 것을 CS기술을 통해 가능하게 하고 있습니다.

4. 맺음말

CS를 소개하면 사용자 기기의 성능이 빠르게 발전하는 데 CS는 의미가 없다는 의견과 전체투자비용 측면과 N-Screen 서비스측면에서 좋은 접근방법이라는 의견으로 크게 나눠지는데, 두 가지 의견이 모두 의미가 있다고 봅니다. 다만 CS를 통해 사용자는 고사양의 기기를 구매해야만 경험할 수 있었던 서비스를 좀 더 경제적으로 누릴 수 있으며, 서비스 제공자는 기기의 다양성으로 인한 서비스 제공 대상의 제약이라는 문제를 쉽게 해결할 수 있어서 그 장점에 대해서는 생각해 볼 필요가 있다고 봅니다.

배태면 Media기술개발2팀

1996년부터 영상/비디오 신호처리, Video Codec분야에 종사해왔으며, 주 관심 분야는 Semantic Video analysis, Video Compression, 그리고 Cloud Streaming입니다. 2005~2007년까지 h.264 Scalable Video Codec 표준화에 참가하였으며 관련한 표준특허를 보유하고 있습니다. 2007년에 SK Telecom에 join하여 h.264 codec 성능개선, adaptive streaming관련 R&D를 담당했으며, 2009년말부터 현재까지 SK planet에서 Cloud Streaming 개발을 담당하고 있으며, 금번에 SK Broadband를 통해 세계최초로 Cloud Streaming기반 STB 가상화기술을 상용화하였습니다.

공유하기