1. IP 상의 UDP에 실린 RTP 구조
ㅇ RTP는 미디어 패킷 전송을 위한 프로토콜로써, IP 상에서 UDP를 사용
2. RTP 패킷 구조
3. RTP 패킷 각 필드별 설명
ㅇ 제어비트 : 9 비트
- Ver (버젼) : (2 비트)
. 현재 RTP 버젼은, 2 (RFC 3550)
- P (padding) : (1 비트)
. 1 이면 실제 유료부하 끝에 덧붙여진 패딩 데이터 있음
. 응용프로그램이 32 비트 같은 정수배 단위로 RTP 패킷 페이로드 구성을 위함
- X (extension) : (1 비트)
. 1 이면 가변길이 헤더 확장(Extension Header)이 있음을 나타냄
- CC (CSRC Count) : (4 비트)
. 기본 헤더 바로 뒤에 나타나는 CSRC(Countributing SouRCe) ID의 갯수
. 여러 미디어가 합성되는 경우에, 그 개수를 CC로써 나타내고,
모두의 기준 동기를 맞추려면 SRRC ID로써 이를 나타냄
- M (Marker) : (1 비트)
. 이벤트 발생이 시작되었음을 알림
ㅇ 유료부하 타입(Payload type) : (7 비트) 오디오/비디오 인코딩(코덱) 종류
- 오디오 타입 번호 例)
. 0 -> G.711 PCM(mu-law), 샘플링주파수 8000 Hz
. 3 -> GSM, 샘플링주파수 8000 Hz
. 4 -> G.723, 샘플링주파수 8000 Hz
. 6 -> DVI4 (ADPCM), 샘플링주파수 16000 Hz
. 7 -> LPC, 샘플링주파수 8000 Hz
. 8 -> G.711 PCM(A-Law) 샘플링주파수 8000 Hz
. 9 -> G.722, 샘플링주파수 8000 Hz
. 14 -> MPEG 오디오, 샘플링주파수 90000 Hz
. 15 -> G.728, 샘플링주파수 8000 Hz
- 비디오 타입 번호 例)
. 26 -> 화상 JPEG, 31 -> H.261, 32 -> MPEG-1 또는 MPEG-2 비디오,
33 -> MPEG-2 TS 등
- 기타 임의 지정 가능(dynamic payload type) : 96~127
* RTP 내 유료부하 유형(Payload type) 표준 목록 ☞ IANA RTP Parameters
. RFC 3551에서 오디오 신호/비디오 신호의 인코딩 방법,샘플링 주파수 등이 기술됨
ㅇ 순서번호(Sequence number) : (16 비트)
- 패킷 손실 검출 및 순서 재구성
. 초기값은 랜덤이고, 매 패킷 마다 1씩 증가
.. 수신측은 패킷 재전송 요청 보다는 패킷 손실 검출 및 뒤바뀐 순서 복구를 위함
ㅇ 타임스탬프(Timestamp) : (32 비트)
- RTP 스트림 내 각 RTP 패킷이 샘플링된 시간관계를 나타냄
. 랜덤한 초기값부터 시작하며, 통상적으로 카운터에 의해 1씩 증가시킴
- 타임스탬프 간격은 유료부하 유형에 따라 정해진 샘플링 간격을 기준
. 대부분의 오디오 RTP 패킷의 경우 => 1 패킷 당 디폴트 시간 간격을 20 ms으로 함
.. 例) G.711 (PCM A-Law) 오디오 페이로드 패킷 크기
= (유료부하 코덱 데이터율) x (1 패킷 당 시간 간격)
= (64 kbps G.711 코덱) x (20 ms)
= (8000 samples x 8 bits)/sec x (0.02 sec)
= 160 바이트
- 타임스탬프 값의 연속성 의미 구분
. 例1) 일련의 패킷들의 타임스탬프 값이 `같은` 경우
.. 특정 비디오 장면이 같은 시간에 샘플링되었음을 의미
. 例2) 일련의 패킷들의 타임스탬프 값이 `단순 증가하지 않는` 경우
.. MPEG 화면 픽처 처럼 시간 순서가 어긋나며 전후 화면으로부터 예측되었음을 의미
. 例3) 일련의 패킷들의 타임스탬프 값이 `연속 증가`되는 번호 순서를 갖음
.. 오디오 패킷 흐름일 경우 등
ㅇ 동기 발신 식별자 (SSRC ID, Synchronization SouRCe ID) : (32 비트)
- 원래의 정보 스트림에 대한 식별 (즉, RTP 세션에서 소스 구분하는 고유 번호)
. 하나의 RTP 세션 내에서는,
.. 각각의 발송지는 무작위로 선택된 SSRC ID로 나타내고,
.. 다만, 타 발송지와의 구별을 위해 중복 불허하며,
.. 결국, 하나의 웹브라우저에서 2개 동영상 가능 등
* RTP 세션 이란?
. RTP를 통해 양단 간에 형성된 논리적 단방향성 연결 상태
. RTP 세션에서 목적지 확인은,
.. 1개의 IP 주소 및 1쌍의 RTP/RTCP 번호로 식별됨
.. 이때 IP 주소는 멀티캐스트 주소일 수도 있음
* 만일, 여러 미디어가 믹서에서 혼합되면, 그 믹서에 대한 SSRC ID를 갖게됨
. 이때의 SSRC는 일종의 기준 역할이 가능함
ㅇ 기여 발신 식별자 (CSRC ID, Contributor SouRCe ID) 목록 : (32 비트) 1 이상 가변 갯수
- 믹서(Mixer)를 통해 혼합되어 단일의 정보열로 되면, 원래의 각각에 대한 식별 역할
. 여러 미디어가 혼합되면, CC(CSRC Count:4 비트)에 총 개수를 지정하고,
. SSRC 외에, 추가된 스트림들에 대한 식별자를 CSRC ID 값으로 함
* 만일, 하나의 미디어 소스 만 있다면,
. CC=1 이되고, RTP 헤더 길이는 12 바이트(기본헤더 길이)가 됨
. 결국, SSRC ID가 하나의 값을 갖고, CSRC ID 목록은 비어있게 됨
※ [참고_웹] ☞ RTP의 이해
4. RTP 패킷 헤더 또는 이벤트 확장 (Extension Header, 확장 헤더) : 선택사항
ㅇ 일반적으로, RTP 헤더 뒤에 바로 유료부하 데이터가 붙지만, 확장 헤더도 가능
ㅇ 例)
- 하나로 혼합된 스트림 데이터를 포함하는 경우
- 특별한 이벤트를 포함하는 경우 : 例) ☞ RTP DTMF 변환 참조