*RTSP(Real Time Streaming Protocol)
RTSP(RealTime Streaming Protocol)은 On Demand 형식으로 리얼타임 미디어 전송을 행하는 애플리케이션 계층의 프로토콜
RTSP는 인터넷 상에서 스트리밍 데이터를 제어하는 방법에 대한 표준안으로 스트리밍 기술이 사용하는 표준 프로토콜RTP 스트림 제어를 위한 메시지 패킷
TCP를 하부 계층 프로토콜로 사용
RTSP도H.323과 마찬가지로, 멀티미디어 콘텐츠 패킷 포맷을 지정하기 위해RTP를 사용한다. 그러나 H.323이 적당한 크기의 그룹간에 화상회의를 하기 위해 설계된 데 반해, RTSP는 대규모 그룹들에게 오디오 및 비디오 데이터를 효율적으로 브로드캐스트 하기 위한 목적으로 설계되었다.
RTSP는RealNetworks, Netscape Communications Corporation, Columbia대학등에서공동으로개발하여1996년IETF에draft를제출하였고, 1998년4월에RFC2326으로표준화되었다.기본적으로RTSP는오디오나비디오와같은시간적으로동기화된스트림을생성하고제어한다.그러나전형적으로연속매체자체는전송하지는않고멀티미디어서버를위한네트웍원격제어역할을수행한다.
RTSP는기본적으로HTTP와비슷한신택스와오퍼레이션을가지나,서버와클라이언트모두가요구(request)를보내고응답(response)을받을수있으며,초기상태,준비상태,재생상태등의프로토콜상태(state)를가진다.또한, HTTP의메서드로GET, POST만있지만RTSP는다양한메서드를가진다.
<RTSP의실행시나리오
웹서버는텍스트,이미지등의비연속매체를주로서비스를하며, RTSP서버는HTTP의기본적인기능에실시간특성을가진멀티미디어데이터를전송하기위한기능을추가한개념으로써HTTP의확장이라고할수있다.사용자가멀티미디어데이타를웹상에서얻고자할때는일단웹서버에접속해서미디어에대한정보를얻은후RTSP서버에접속해서미디어의스트리밍서비스를받게된다.
<RTSP 서버>
RTSP서버는클라이언트의요구를분석하여처리하며미리저장되어있는멀티미디어데이터를클라이언트에게스트리밍하는기능을수행한다. [그림2]는RTSP서버의모듈구성도를나타낸다.
·Socket모듈
RTSP데이터의전송을위한TCP소켓과RTP데이타를위한UDP소켓을관리하는함수를구현한다.
·EventLoop모듈
소켓을열고클라이언트가연결된소켓에데이터를보냈는지를계속해서폴링하다가실제데이터가소켓에실려있을경우이를버퍼에 담는다.그리고이데이터를파싱해서Request를분석하고이를RequestHandler모듈에전달한다.
·Parser모듈
RTSP프로토콜은텍스트기반프로토콜이므로버퍼에담긴데이터를토큰으로분리하여Request를분석해야한다.
·Request Handler모듈
서버의핵심기능으로서분석된Request에대해적절한처리를수행한다.
·Streamer모듈
연속매체데이터를RTP패킷으로만들어주기적으로전송한다.또한클라이언트의패킷손실과지터등의피드백정보를참조하여전송률을조정할수있다.
·Scheduler모듈
현재서비스중인세션들의관리하며이를적절히스케쥴링한다.
<RTSP클라이언트>
RTSP클라이언트는서버에서전송되는스트림을초기지연을최소화시켜재생하는기능을수행한다.이때RTP패킷의헤더정보를이용하여여러가지QoS를분석하고이를서버측에피드백해야한다. [그림3]은클라이언트의모듈구성도를나타낸다.
·Socket모듈
서버와동일한기능으로통신에필요한소켓을설정및관리하는함수를구현한다.
·EventLoop모듈
RTSP서버에서와동일한기능으로서버에연결된소켓들을모니터링하다가데이터가전달될때버퍼에읽어들이는기능을수행한다.
·Parser모듈
버퍼에담긴데이터를분석하여Command/Event Handler에게보낸다.
·Command/Event Handler모듈
실제클라이언트의핵심모듈로서서버에서전송된메시지에대한처리를수행하며,사용자의명령을분석하여서버에게요구를보내는기능을구현한다.
·Decorder모듈
서버에서전송된RTP패킷을디코딩하여재생장치에보낸다.본논문에서는디코딩을위한멀티미디어미들웨어로서MS의DirectShow를이용한다.
<흐름제어>
인터넷의트래픽이과잉밀집이되었을경우서버에서보낸패킷이클라이언트에게재대로도착되지않을수있다.따라서,지터를줄이고연속적인비디오재생을위해서는흐름제어가필수적이다.패킷손실률을기반으로네트웍의가부하여부를판단한다.패킷손실률은클라이언트측에서계산되며전송한패킷수에대한손실된패킷수의비율로계산한다.이패킷손실률이임계값을넘어갈때흐름제어를수행하게된다.즉,네트웍이과부하일경우는전송률을낮추고,네트웍이언로드일경우에는전송률을높인다.
또한클라이언트버퍼의오버플로우나언더플로우를방지하기위해서다음과같은방법을사용한다.즉,버퍼의수준이오버플로우의임계값을넘을경우서버에게전송률을낮추라고요청을보내고,언더플로우일경우에는플레이어를중지시키고재생이가능할때까지버퍼링을수행한다.