K 개발자

RTP 프로토콜 본문

OS/네트워크

RTP 프로토콜

ddingz 2021. 8. 5. 13:41

RTP 프로토콜

TCP와 UDP를 근간으로 인터넷 환경에서 실시간 서비스를 제공하는 가장 현실적인 방법 중 하나는 UDP에 데이터그램의 순서 번호 기능을 추가하는 것이다.
이러한 프로토콜의 대표적인 예가 실시간 멀티미디어 데이터의 전송을 지원하는 RTPReal Time Protocol이다.
RTP는 유니캐스팅뿐 아니라 멀티캐스팅도 지원한다.
RTP의 특징은 다음과 같다.

  1. 불규칙하게 수신되는 데이터의 순서를 정렬하기 위해 타임스탬프Timestamp 방식을 사용한다.
  2. 프로토콜의 동작이 응용 프로그램의 라이브러리 형태로 구현되는 ALFApplication Level Framing 방식을 사용하기 때문에, 프로토콜 내부에 위치하는 버퍼의 크기를 각 응용 프로그램마다 별도로 관리하기가 용이하다. 따라서 응용 환경이 요구하는 알고리즘에 따라 버퍼 크기를 개별적으로 조절할 수 있다.

실시간 요구 사항

실시간 서비스는 전송 시간이 중요하다.
송신 프로세스가 전송한 데이터의 전송 간격이 수신 프로세스에 그대로 유지되도록 하는 것이 중요하며, 대부분 특정 데이터가 정해진 시간 안에 반드시 도착하도록 요구한다.
특정 시간을 초과하여 도착한 데이터는 결과적으로 무용지물이 되고 만다.

버퍼의 역할

실시간 전송

송신 프로세스가 전송한 데이터는 데이터그램 사이의 시간 간격이 일정하다가 인터넷을 거쳐 수신 프로세스에 전달되는 과정에서 간격이 불규칙하게 변한다.
수신 측에서는 시간 간격이 가변적인 데이터를 수신 프로세스에 즉시 전송하지 않고, 지연 버퍼를 사용해 데이터의 시간 간격을 일정하게 보정한다.
이때 수신 프로세스에 도착한 데이터의 시간이 실시간 재생에서 요구하는 일정 범위보다 늦으면 해당 데이터를 버린다.

지터

지터 분포

실시간 데이터를 전송하는 환경에서는 지터Jitter라는 중요한 변수를 고려해야 한다.
지터 분포는 데이터그램의 도착 시간을 측정하였을 때 각 데이터그램의 도착 시간이 일정하지 않고 불규칙적으로 도착하는 정도를 나타낸다.


RTP의 데이터 전송

RTP 구조

RTP는 실시간 서비스를 제공하기 위해 작고 빠른 전송 기능을 제공하는 UDP 위에서 구현된다.
따라서 비연결형 서비스를 제공하는 UDP의 데이터그램 분실이나 도착 순서 변경과 같은 전송 오류는 RTP 자체에서 해결한다.
그리고 UDP에서 제공하는 포트 주소 기능 등을 사용해 송수신 프로세스 간의 연결을 관리한다.
RTP는 하나의 완전한 프로그램 단위로 구현되지 않고, 기능별로 개별적으로 구현된다.
즉, 각각의 응용 서비스의 종류에 따라 요구 조건이 다른 기능들이 추가되는 형식으로 완전한 RTP 모듈이 완성된다.
RTP는 다수의 사용자가 하나의 세션에 참여해 서로 실시간 데이터를 전송하도록 지원한다.
RTP에서 의미하는 세션은 RTP 참가자 사이의 연관성으로 그룹을 형성하여 멀티캐스트 전송을 지원하기 위한 것이다.
RTP는 믹서와 트랜슬레이터라는 두 종류의 RTP 릴레이RTP Relay를 지원한다.
릴레이는 데이터 전송 과정에서 송수신 프로세스가 데이터를 직접 전송할 수 없는 상황이 발생했을 때, 데이터를 중개하는 기능이다.

  • 믹서
    믹서Mixer는 여러 송신 프로세스로부터 RTP 데이터그램 스트림을 받아 이들을 적절히 조합하여 새로운 데이터그램 스트림을 생성한다.
  • 트랜슬레이터
    트랜슬레이터Translator는 입력된 각 RTP 데이터그램을 하나 이상의 출력용 RTP 데이터그램으로 만들어주는 장치이다.

'OS > 네트워크' 카테고리의 다른 글

상위 계층의 이해  (0) 2021.08.05
UDP 프로토콜  (0) 2021.08.04
TCP 프로토콜을 이용한 데이터 전송  (0) 2021.08.04
TCP 프로토콜  (0) 2021.08.03
전송 계층의 기능  (0) 2021.08.02
Comments