우리라이프

[개발-RTP] RTP 분석_Introduction 본문

IT/프로토콜

[개발-RTP] RTP 분석_Introduction

적당히벌고아주잘살자 2018. 2. 7. 23:43
반응형


 RTP 프로토콜에 대하여 알기위해 작성.

RFC 3551(Standard 65, RTP Profile for Audio and Video Conferences with Minimal Control)을 기준으로 작성하였으며, 후에 G.711과 H.264를 정리할 예정이다.


Introduction 

RTP : Real-time Transport Protocol 

RTP는 음성, 영상 또는 시뮬레이션 데이터와 같은 실시간 데이터를 멀티캐스트 또는 유니캐스트 네트워크를 이용하여 전송하는 응용서비스를 위한 end-to-end 네트워크 전송 프로토콜이다. RTP는 RTCP(Real-time Control Protocol)에 의해 데이터의 전달 상황을 감시하며, 최소한의 제어 기능과 미디어 식별 기능을 제공한다. 

RTP Packet Forms and Protocol Behavior

RTP data header : 고정 RTP 데이터 헤더의 표준 형식을 이용한다. (one marker bit).


처음 12개의 옥텟은 모든 RTP 패킷에 존재하지만, CSRC 식별자의 목록은 믹서에 의해 삽입될 때만 존재한다.

version (V) : 2 bits

RTP 버전정보를 표시함. 이 사양에서는 2로 정의됨. (The value 1 is used by the first draft version of RTP and the value 0 is used by the protocol initially implemented in the "vat" audio tool.)

padding (P) : 1 bit

패딩은 헤더나 패킷의 크기를 일정하게 유지하기 위해 의도적으로 추가하는 비트입니다. 예를 들어, 몇몇 암호화 알고리즘과 블록사이즈를 고정하기 위하여 또는 lower-layer 프로토콜 데이터를 RTP packets로 보낼때 필요하다.

extension (X) : 1 bit

고정헤더 이후의 하나의 확장헤더가 추가적으로 있음을 의미한다. 

CSRC count(CC) : 4 bits

RTP의 기본 크기인 12바이트 고정헤더 이후에 표시되는 CSRC identifier의 수를 표시한다.

marker (M) : 1 bit

패킷 스트림 내에서 프레임 경계와 같은 중요한 이벤트들을 표시하는데 이용된다. 다음에 오는 PT(Payload Type) 필드의 확장을 위해 M비트를 없애기도 한다.

payload type(PT) : 7 bits

페이로드 타입은 RTP payload(음성 샘플인지, 압축된 비디오 영상인지)를 구별하고, 응용프로그램에서 해석할 수 있는지 식별한다. 또한, 수신 장비가 페이로드 타입을 이해할 수 없다면 반드시 무시해야 한다. 이 말의 의미는 실제 Payload Type은 Capability Exchange 시에 항상 교환되므로 상호 인지를 하고 있어야 한다는 것이다. 

sequence number : 16 bits

Sequence number는 보안상의 이유로 랜덤한 번호에서 시작하지만, 패킷이 증가할 때마다 1씩 증가한다. 이를 통해 수신장비는 패킷 손실을 인지하고, 복구 매커니즘을 동작한다. 

timestamp : 32 bits

RTP 패킷의 첫번째 바이트의 샘플링 순간을 나타낸다. 샘플링 순간은 동기화 및 지터 계산(이상적인 기준(reference point)으로부터의 시간 변위)을 허용하기 위해 시간에 따라 선형적으로 증가하는 클락으로부터 유도된다. 초기값은 Sequence number와 마찬가지로 랜덤하게 결정된다. timestamp는 미디어 스트림에 따라 다르게 정의 된다. 만일 샘플링이 160단위로 발생한다면 각 블럭은 160단위로 증가하게 된다. 실제 코덱에 대한 샘플링 레이트는 차이가 있을 수 있다. 위키피디아에서 정의하는 예를 들면 125μs (8kHz, 디지털 전화에서 일반적인 샘플 속도)마다 데이터를 샘플링하는 오디오 애플리케이션은이 값을 클럭으로 사용한다. 비디오 스트림은 일반적으로 90 kHz 클럭을 사용한다. 클록 세분성은 응용 프로그램의 RTP 프로필에 지정된 세부 사항 중 하나이다. 

SSRC(Synchronization Source) Identifier : 32 bits

동기화 소스로 랜덤하게 결정된다. 동일한 RTP 세션내의 SSRC는 동일한 SSRC 식별자를 사용한다.

CSRC (Contributing Source) Identifiers : 32 bits, 0 to 15 items.

다수의 음원이 Audio Mixer를 통해 하나로 통합될 경우 사용하므로 옵션필드이다. 이 필드를 통해 원 음원에 대해 알려준다. 이 목록에서는 모든 음원의 SSRC identifier가 포함된다.


Payload Types : RTP Data Header에 있는 페이로드 타입

RTP Data Header Additions : No additional fixed fields are appended to the RTP data header.

RTP Data Header Extensions : No RTP header extensions are defined, bur applications operating under this profile MAY use such extensions.

나머지 RTCP Packet types, RTCP report interval, SR/RR extension, SDES use, Security, String-to-key mapping, Congestion, Underlying protocol, Transport mapping, Encapsulation은 생략한다. 

RFC3551 Standard 문서의 Page 5~6을 참조한다.



참조 :

https://tools.ietf.org/html/rfc3551

https://en.wikipedia.org/wiki/Real-time_Transport_Protocol

http://www.nexpert.net/556

 

 

반응형

'IT > 프로토콜' 카테고리의 다른 글

[개발-RTP] RTP 분석_H.264  (0) 2018.02.26
Comments