CS/Network

[Chapter 10] UDP 프로토콜(RTP 프로토콜)

devrabbit22 2025. 2. 17. 11:17

음성, 영상 정보를 인터넷에서 실시산으로 서비스하면 데이터그램 변형이나 분실 오류를 복구하는 기능이 상대적으로 덜 중요해진다. 대신 데이터그램의 도착 순서, 수신한 패킷의 지연 간격(지터) 분포의 균일성과 데이터 압축에 의한 전송 정보량의 최소화가 중요하다.

인터넷에서 사용하는 기존의 TCP와 UDP는 실시간 서비스가 요구하는 전송 특성을 충분히 지원하지 못한다. TCP는 패킷의 순서와 신뢰성이 지나치게 강조되어, 재전송 기능과 복잡한 흐름 제어 기능으로 인해 실시간 환경에는 부적합하다.

UDP는 기능이 단순하여 빠른 데이터 전송을 지원하지만, 데이터그램의 순서를 보장하지 못한다는 문제가 있다. 따라서 실시간 데이터 전송 서비스의 특성을 지원할 수 있는 새로운 형태의 프로토콜이 필요하다.

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

RTP의 특징

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

RTP는 실시간 응용 서비스에 유용하다. 그러나 자원 예약이나 QOS 보장과 같은 기능은 제공하지 못하므로 실시간 동영상 서비스를 지원하기에는 아직 부족한 면이 있다.

 

실시간 요구사항

실시간 서비스는 일반 고속 통신 서비스와 구분되는 특징이 있다. 파일 전송, 전자 메일 같은 전통적인 인터넷 서비스 환경에서 가장 중요한 사항은 신뢰성이며, 부차적으로 전체 네트워크 시스템의 성능과 지연 문제가 다루어진다.

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

버퍼의 역할

실시간 전송

  • 송신 프로세스가 전송한 데이터는 데이터그램 사이의 시간 간격이 일정하다가 인터넷을 거쳐 수신 프로세스에 전달되는 과정에서 간격이 불규칙하게 변한다.
  • 수신측에서는 시간 간격이 가변적인 데이터를 수신 프로세스에 즉시 전송하지 않고, 지연 버퍼를 사용해 데이터의 시간 간격을 일정하게 보정한다. 이때 수신 프로세스에도착한 데이터의 시간이 실시간 재생에서 요구하는 일정 범위보다 늦으면 해당 데이터를 버린다.
  • 주어진 시간 안에 데이터 전송을 완료하기 위한 기본 저건은 전송 대역폭을 충분히 확보하는 것이다. 이를 일반적인 관점으로 표현하면 송수신 프로세스 사이의 지연(Latency)시간에 관한 문제라 표현하기도 한다.
  • 지연은 송신 프로세스가 전송한 데이터의 출발 시간과 수신 프로세스에 도착한 시간의 차이이다. 지연에 영향을 미치는 요소는 대역폭뿐 아니라, 네트워크의 구조, 라우팅 방식, 전송 프로토콜의 종류 등 여러가지가 있다.

지터

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

지터 분포

전송 간격이 균일했던 송신 데이터그램이 수신 프로세스에 도착할 때 간격이 일정하지 않음을 보여준다. 이러한 송수신 프로세스 사이의 데이터그램 간격 차이를 b에 표시했는데, 이 분포를 지터라 한다.

RTP의 데이터 전송

RTP 구조

RTP는 실시간 서비스를 제공하기 위해 작고 빠른 전송 기능을 제공하는 UDP 위에서 구현된다. 따라서 비연결형 서비스를 제공하는 UDP의 데이터그램 분실이나 도착 순서 변경과 같은 전송 오류는 RTP 자체에서 해결한다. 그리고 UDP에서 제공하는 포트 주소 기능 등을 사용해 송수신 프로세스 간의 연결을 관리한다. RTP는 하나의 완전한 프로그램 단위로 구현되지 않고, 기능별로 개별적으로 구현된다. 즉, 각각의 응용 서비스의 종류에 따라 요구 조건이 다른 기능들이 추가되는 형식으로 완전한 RTP 모듈이 완성된다. 이를 위해 RTP 헤더 부분에 첨삭이 용이하도록 설계된다. 

 

  • RTP는 다수의 사용자가 하나의 세션에 참여해 서로 실시간 데이터를 전송하도록 지원한다. RTP에서 의미하는 세션은 RTP 참가자 사이의 연관성으로 그룹을 형성하여 멀티 캐스트 전송을 지원하기 위함이다.
  • RTP는 믹서와 트랜슬레이터라는 두 종류의 RTP 릴레이를 지원한다. 릴레이는 데이터 전송 과정에서 송수신 프로세스가 데이터를 직접 전송할 수 없는 상황이 발생했을 때. 데이터를 중개하는 기능이다.

    ex) 송수신 프로세스 사이에 방화벽에 설치되거나 데이터 형식이 다를 경우, 릴레이가 필요한 처리를 수행하여 데이터 전송이 가능하도록 지원한다.

믹서

믹서(Mixer)는 여러 송신 프로세스로부터 RTP 데이터그램 스트림을 받아 이들을 적절히 조합하여 새로운 데이터그램 스트림을 생성한다. 이 과정에서 데이터 형식이 변하거나, 믹싱 기능이 수행될 수 있다. 특히 여러 송신 프로세스로부터 수신한 데이터의 시간 관계가 적절하게 조절되지 않을 수 있기 때문에 조합된 데이터그램 스트림에 시간 정보를 제공한다. 또한 자신이 해당 데이터그램의 시간 정보(Synchronization)를 제공했음을 표시해야 한다. 이렇게 만들어진 데이터그램 스트림은 여러 수신 프로세스에 전달된다.

트랜슬레이터

트랜슬레이터(Translator)는 입력된 각 RTP 데이터그램을 하나 이상의 출력용 RTP 데이터그램으로 만들어주는 장치로, 이 과정에서 데이터 형식이 변할 수 있다. 

ex) 임의의 수신자 그룹에서 특정 수신 프로세스가 고해상도 비디오 신호를 처리할 능력이 없으면, 트랜슬레이터가 이를 저해상도 신호로 변환하여 수신 프로세스가 처리할 수 있도록 도와준다. 

입력된 멀티캐스트 RTP 데이터그램을 복사하여 다수의 유니캐스트 수신 프로세스에 전송하는 기능이다.

 

스트림은 데이터그램을 연속으로 전송한다는 의미인데, 연속 데이터그램은 시간에 민감하다. 믹서는 데이터그램 스트림의 믹싱에 관한 문제를 다루는 반면, 트랜슬레이터는 스트림에 관심이 없고 특정한 변환 작업을 수행한다.

 

RTP 헤더 구조

RTP 고정 헤더의 구조

  • RTP 헤더의 기본구조에 응용 환경과 관련된 가변 크기의 헤더를 추가할 수 있다. 처음 12바이트의 정보는 모든 RTP 패킷에 존재하며, CSRC 구분자 목록은 믹서에 의해 추가되는 경우에 사용된다.
  • RTP는 음성과 영상 데이터의 동기에 필요한 시간 정보와 데이터그램의 분실이나 도착 순서 변경 등의 오류를 검출하는 기능을 제공한다.
  • 유니캐스트와 실시간 전송에 사용되는 rTP의 또 다른 특징은 멀티캐스트 전송도 가능하다는 것이다. 이를 위해 RTP 데이터 형식에는 멀티캐스트 그룹에서 누가 데이터를 전송했는지를 확인하는 송신 구분자(Source Identifier)필드가 존재한다. 또한 수신 프로세스에서 지연 버퍼를 사용해 타이밍 관계를 조절할 수 있도록 Timestamp 필드도 지원된다.

RTP 헤더에 정의된 각 필드의 의미

  • Version : RTP의 버전 저보이며, 현재 2로 지정된다.
  • Padding : RTP 페이로드의 마지막 패딩 데이터가 존재하는지 여부를 나타낸다. 응용 환경에서 페이로드의 크기가 특정 크기의 배수가 되어야 할 때 사용한다.
  • Extension(확장) : 고정 헤더의 마지막에 확장 해더가 하나 더 이어짐을 의미한다. 
  • CSRC Count(CSRC 개수) : CSRC 구분자의 개수를 표시한다.
  • Marker(표식) : 임의의 표식을 위해 이용하므로, 페이로드 유형에 따라 값의 의미가 결정된다. 보통 데이터 스트림의 경계점을 표시하는데 사용한다.
    ex) 비디오 페이로드에서는 프레임의 마지막을 표시하기 위하여 1로 지정된다.
  • Payload Type : 헤더 다음에 이어지는 RTP 페이로드의 유형을 나타낸다.
    예를 들어, RTP 페이로드가 JPEG 엿상인 경우에 그에 대해 표시할 수 있다. 페이로드의 내용은 음성과 영상등의 형식을 포함한다. 
  • Sequence Number(순서 번호) : Timestamp 필드 값이 동일한 페이로드에 대해 패킷 손실이나 순서 변경과 같은 오류를 검출할 수 있도록 한다. 일반적으로 동시에 생성된 일련의 연속 패킷들은 동일한 Timestamp 값을 가지며, 순서 번호는 RTP 패킷 단위로 1씩 증가한다.
  • Timestamp : RTP 페이로드에 포함된 데이터의 생성 시기를 나타낸다. 시간 단위는 페이로드의 종류에 영향을 받으며, 송신 프로세스에서 사용하는 클록에 의해 발생한다.
  • SSRC Identifier(SSRC 구분자) : 임의의 세션 내에서 RTP 페이로드의 발신지가 어디인지를 구분하는 고유 번호로, 랜덤하게 생성되는 32비트 숫자이다.

고정 헤더의 뒷부분에는 CSRC Identifier 필드가 여러 개 존재할 수 있으며, 이는 믹서가 제공하는 구분자이다.

RTP 1890에서 권고한 표준 오디오/비디오 인코딩

RTP 세션을 이용해 데이터를 전송할 떄는 각 미디어가 별도의 RTP 세션을 사용한다. 즉, 오디오와 비디오 등의 데이터가 별도의 세션으로 전송된다. RTP 헤더는 오디오와 비디오 데이터의 동기에 필요한 시간 정보를 제공하며, 페이로드 유형 지정 방식을 사용하여 다양한 종류의 데이터와 압축 유형을 지정한다.

RTP 제어 프로토콜

  • RTP 제어 프로토콜을 RTP 데이터 전송 프로토콜과 구분하기 위해 RTCP(RTP Control Protocol)라 부른다.
  • 데이터 전송 프로토콜은 세션 참가자 사이의 멀티캐스트 기능을 위한 사용자 데이터의 전송을 담당하지만 RTCP는 제어와 관련된 기능을 수행한다.
  • RTCP는 RTP처럼 UDP를 하부 전송 계층으로 사용하며, 세션 참가자는 RTCP 패킷을 다른 모든 멤버에게 주기적으로 전송한다.

RTCP에서 제공하는 주요기능

  • QOS(Qulity of Service)와 혼잡 제어
    • RTCP는 세션에서의 데이터 분배 과정에서 발생하는 서비스 품질에 관한 피드백 기능을 지원한다. 즉, 멀티캐스팅 과정에서 세션 멤버의 데이터 송수신 과정이 어떻게 이루어졌는지를 판단하는데, 이를 위해서 송수신 프로세스가 관련 보고서를 작성한다. 송신 프로세스의 보고서에는 전송률 등의 정보가 포함되고, 수신 프로세스의 보고서에는 수신 과정에서 발생하는 패킷 분실이나 지터 등의 정보가 포함된다.
  • Identification(구분자)
    • RTCP 패킷에는 RTCP 송신 프로세스에 관한 구분자 정보가 포함되며, 서로 다른 세션에서 발신된 스트림 정보를 서로 연관시키는 근거를 제공한다.
  • 세션 크기
    • RTCP의 기능이 올바로 동작하기 위해서는 세션 참가자들 사이에 RTCP 패킷이 주기적으로 전송되어야 한다. 세션 참가자의 수가 증가함에 따라 RTCP 패킷의 전송률은 감소할 수 밖에 없다. RTCP 패킷의 트래픽이 많아지면 세션 전체의 트래픽도 증가하기 때문에 이를 제한하는데, 일반적으로 전체 세션의 트래픽의 5%이내로 유지되도록 알고리즘이 동작한다. 세션 참가자의 수가 적은 경우에도 최대 5초당 1패캣 이상이 전송되는 것은 허용되지 않는다.

RTCP 패킷의 종류와 역할

종류 역할
Sender Report
Receiver Report
데이터 전송 품질을 피드백하기 위한 용도로 사용된다.
Source Description 송신 프로세스가 자신에 대한 정보를 더 많이 제공하는 용도로 이용된다.
Goodbye 송신 프로세스가 더 이상 존재하지 않음을 의미하고,
이는 수신 프로세스가 송신 프로세스를 무한정 기다리지 않도록 한다.
Applicationdefined Packet 응용 환경에 따른 기능을 점검하기 위해 제공된다.

 


Reference 

쉽게 배우는 데이터 통신과 컴퓨터 네트워크

https://soso-hyeon.tistory.com/108

 

[쉽게 배우는 데이터 통신과 네트워크] CH10. 전송 계층

01. UDP 프로토콜비연결형 서비스를 제공한다.헤더와 전송 데이터에 대한 체크섬 기능을 제공한다.Best Effort 전달 방식을 지원한다. 1. UDP 헤더 구조Source Port / Desination Port (송신 포트 / 수신 포트)

soso-hyeon.tistory.com