7.4 실시간 대화형 애플리케이션을 위한 프로토콜
- 컴퓨터공학
- 2016. 3. 21. 19:22
7.4 실시간 대화형 애플리케이션을 위한 프로토콜
VoIP나 화상회의와 같은 실시간 대화형 애플리케이션을 위한 프로토콜(Protocols for real-time conversational applications: RTP, SIP)인 RTP, SIP에 대해서 살펴봅시다.
7.4.1 RTP
단도직입적으로 말해서 RTP라는 프로토콜은 멀티미디어 애플리케이션을 위한 프로토콜입니다. 오디오를 위한 PCM, GSM 또는 MP3, 비디오를 위한 MPEG과 H.263과 같은 일반적인 형식을 전달하는데 사용될 수 있습니다. 오늘날 RTP는 많은 상용 제품과 연구용 시작품 제작에 사용되고 있으며, 또 다른 중요한 실시간 대화형 프로토콜인 SIP도 서비스합니다.
- RTP 기초
일반적으로 RTP는 UDP 상에서 실행됩니다. 송신자는 단위 데이터를 RTP 패킷으로 캡슐화한 후 그 패킷을 UDP 세그먼트로 캡슐화해서 IP에게 넘겨줍니다. 수신자는 UDP 세그먼트로부터 RTP 패킷을 추출한 후에 RTP 패킷으로부터 단위 데이터를 추출해서 디코딩 및 렌더링을 위해 미디어 플레이어에게 전달합니다.
예를 들어, 음성을 전달하기 위해 RTP을 사용하는 경우를 고려해봅시다. 음성데이터는 64kbps의 PCM 방식으로 인코딩된다고 가정합니다. 또한 애플리케이션이 인코딩된 데이터를 20msec의 단위 데이터(한 단위 데이터에 160바이트)로 모은다고 가정합시다.
송신자는 오디오 데이터의 각 단위 데이터 앞에 오디오 인코딩 종류, 순서번호, 타임스탬프 등을 가진 RTP 헤더를 붙입니다. 헤더는 보통 12바이트입니다. 오디오 단위 데이터에 헤더를 붙여서 RTP 패킷을 구성한 후, UDP 소켓 인터페이스로 전송합니다.
수신자의 애플리케이션은 소켓에서 RTP 패킷을 수신한 후, RTP 패킷에서 오디오 단위 데이터를 추출하고, 추출된 RTP 패킷의 헤더필드를 살핀 후에 오디오 단위 데이터를 적절히 디코드 및 재생합니다.
여기서 강조하는 것은 RTP 자체가 데이터 전달을 시간에 맞춰 보장하거나 다른 서비스 품질 보장(Quality of Service)을 제공하지 않는다는 것입니다. 즉, RTP는 패킷 전달을 보장하거나 패킷 전달 순서를 보장하지 않습니다.
- RTP 패킷 헤더 필드
아래 슬라이드와 같이 4가지 RTP 패킷 헤더 필드에는 페이로드 타입(payload type), 순서번호(sequence number), 타임스탬프(time stamp), 출발지 식별자(source ID)가 있습니다.
- payload type :RTP 패킷의 페이로드 타입 필드의 길이는 7비트입니다.
오디오 스트림의 경우, 사용되는 오디오 인코딩 타입을 나타내기 위해 페이로드 타입 필드를 사용합니다. 송신자는 세션 중간에 오디오 품질을 향상시키거나 RTP 스트림 비트율을 감소시키기 위해 인코딩을 변경할 수 있으며, 이때 수신자에게 페이로드 타입 필드를 사용해서 변경사항을 알려줍니다. ( 슬라이드에서 0,3,7번은 오디오 페이로드 타입, 나머지는 비디오 페이로드 타입)
비디오 스트림의 경우, 페이로드 타입은 비디오 인코딩 타입을 나타내기 위해 사용됩니다. 이때도 송신자는 세션 중에 비디오 인코딩을 변경할 수 있습니다.
- sequence number : 순서번호 필드의 길이는 16비트입니다. TCP에서의 순서번호와 같은 역할을 합니다.
- time stamp : 타임 스탬프 필드의 길이는 32비트입니다. 이 필드는 RTP 데이터 패킷의 첫 번째 바이트의 샘플링 시점을 나타냅니다. 수신자는 네트워크에 의해 만들어진 패킷 지터를 제거하고 수신자가 동기적인 재생을 가능하도록 타임스탬프를 사용할 수 있습니다. 타임스탬프는 송신자 샘플링 클록으로부터 생성됩니다. 예를 들어, 오디오의 경우 타임스탬프 클록은 각 샘플링 주기마다 하나 증가합니다. 만일 오디오 애플리케이션이 160개의 인코딩된 샘플로 구성된 단위 데이터를 생성한다면 출발지가 활성일 때 타임스탬프는 RTP 패킷마다 160씩 증가합니다. 타임스탬프 클록은 출발지가 비활성일 때 조차도 일정 비율로 계속 증가합니다.
- Synchronization Source ID(SSRC) : SSRC 필드의 길이는 32비트입니다. 이 필드는 RTP 스트림의 출발지를 식별합니다. 대개, RTP 세션의 각 스트림은 상이한 SSRC를 가집니다. SSRC는 송신자의 IP 주소 대신에 새로운 스트림이 시작될 때 출발지에서 임의 할당한 숫자입니다. 두 스트림이 동일한 SSRC를 할당받을 확률은 매우 작습니다. 만일 이러한 일이 발생한다면 두 출발지는 새로운 SSRC을 선택합니다.
- RTCP
RTCP는 RTP의 QoS를 유지하기 위해 함께 쓰이는 트랜스포트 계층 프로토콜입니다.
RTP는 데이터 전송에만 관계하지만, RTCP는 데이터 전송상태를 감시하고, 세션 관련 정보를 전송하는데 관여합니다.
RTP 노드들은 네트워크 상태를 분석하고 주기적으로 네트워크 정체 여부를 보고하기 위해 RTCP 패킷을 서로에게 보냅니다. (양방향 통신)
RTP와 RTCP는 모두 UDP 상에서 동작하므로, 그 특성상 품질보장이나 신뢰성, 뒤바뀐 순서, 전송 방지 등의 기능을 제공하지는 못하지만, 실시간 응용에서 필요한 시간 정보와 정보 매체의 동기화 기능을 제공하기 때문에, 최근 인터넷상에서 실시간 정보를 사용하는 거의 모든 애플리케이션 (VOD, AOD, 인터넷 방송, 영상 회의 등)들이 RTP 및 RTCP를 이용하고 있습니다.
'컴퓨터공학' 카테고리의 다른 글
7.4 부가설명 (2) RTP, RTCP, RTSP 간략히 요약 비교 (0) | 2016.03.21 |
---|---|
7.4 부가설명 (1) RSTP (0) | 2016.03.21 |
3.3 비연결형 트랜스포트 : UDP (0) | 2016.03.21 |
3.2 다중화와 역다중화 (0) | 2016.03.18 |
3.1 트랜스포트 계층 서비스 및 개요 (0) | 2016.03.17 |
이 글을 공유하기