[네트워크 상식 26] RTP의 데이터 전송 프로토콜에 대해 알아보자
관리자 | 2024-02-19 | 조회 15
[네트워크 상식] RTP의 데이터 전송 프로토콜에 대해 알아보자
인터넷의 멀티미디어 서비스가 비디오, 오디오 파일 전체를 하나의 단위로 다운로드한
후에 재생하던 시대에서 실시간으로 다운로드하며 재생하는 형태로 변했다. 특히 TV나 라디오 같은 방송 서비스뿐만 아니라, 영화와 같은 동영상 서비스에도 이러한 경향이 일반화되었다. 멀티미디어 장비를 부착한 개인용 컴퓨터의 인터넷 접속이 늘면서 인터넷으로 음성 전화 서비스를 보급하려는 노력이 활발히 진행되고, 기존 전화망과 연동하는 서비스도 일부 이루어졌다.
음성, 영상 정보를 인터넷에서 실시간으로 서비스하면 데이터그램 변형이나 분실 오류를 복구하는 기능이 상대적으로 덜 중요해진다. 대신 데이터그램 도착 순서, 수신한 패킷의 지연 간격(지터) 분포의 균일성과 데이터 압축에 의한 전송 정보량의 최소화가 중요하다.
인터넷에서 사용하는 기존의 TCP와 UDP는 실시간 서비스에서 요구하는 전송 특성을 충분히 지원하지 못한다. TCP는 패킷의 순서와 신뢰성이 지나치게 강조되어, 패킷의 재전송 기능과 복잡한 흐름제어 기능으로 인해 실시간 환경에는 부적합하다.
UDP는 기능이 단순하여 빠른 데이터 전송을 지원하지만, 데이터그램의 순서를 보장하지 못한다는 문제가 있다. 따라서 실시간 데이터 전송 서비스의 특성을 지원할 수 있는 새로운 형태의 프로토콜이 필요하게 되었다.
TCP와 UDP를 근간으로 인터넷 환경에서 실시간 서비스를 제공하는 가장 현실적인 방법 중 하나는 UDP에 데이터그램 순서 번호 기능을 추가하는 것이다.
이러한 프로토콜의 대표적인 예가 실시간 멀티미디어 데이터의 전송을 지원하는 RTP
(Real Time Protocol)다. RTP는 유니캐스팅뿐만 아니라 멀티캐스팅도 지원한다.
RTP의 특징은 첫째, 불규칙하게 수신되는 데이터 순서를 정렬하기 위해 타임스탬프
(Time stamp) 방식을 사용한다. 둘째, 프로토콜 동작이 응용 프로그램의 라이브러리
형태로 구현되는 ALF(Application Level Framing) 방식을 사용하기 때문에, 프로토콜 내부
에 위치하는 버퍼의 크기를 각 응용 프로그램마다 별도로 관리하기가 용이하다.
따라서 응용 환경이 요구하는 알고리즘에 따라 버퍼 크기를 개별적으로 조절할 수 있다.
RTP는 실시간 응용 서비스에 유용하다. 그러나 자원 예약이나 QoS 보장 같은 기능은
제공하지 못하므로 실시간 동영상 서비스를 지원하기에는 아직 부족한 면이 있다.
상기 그림은 RTP의 동작 원리를 설명한다. RTP는 실시간 서비스를 제공하기 위해
작고 빠른 전송 기능을 제공하는 UDP 위에서 구현된다. 따라서 비연결형 서비스를 제공
하는 UDP의 데이터그램 분실이나 도착 순서 변경 같은 전송 오류는 RTP 자체에서 해결
해야 한다. 그리고 UDP에서 제공하는 포트주소 기능 등을 사용하여 송수신 프로세스
간의 연결을 관리한다.
UDP는 실시간 서비스에 필요한 기능을 전부 제공하지 않기 때문에 RTP의 내부 기능에 이와 관련된 사항을 구현해야 한다. 대표적인 예가 데이터 순서 번호 기능을 대체할 수
있는 기능을 작성하여 데이터 분실과 순서 변경 오류를 해결하는 것이다.
RTP는 상기 그림처럼 프로그램 하나를 단위로 하지 않고 일부 기능이 개별적으로 구현
된다. 즉, 각각의 응용 서비스의 종류에 따라 요구 조건이 다른 기능들이 추가되는 형식
으로 완전한 RTP 모듈이 완성되는데, 이를 위하여 RTP 헤더 부분에 첨삭이 용이하도록
설계되어 있다. 그림은 비디오 데이터를 전송하기 위해 필요한 인코딩 표준 모듈과 RTP
의 관계를 설명한다.
RTP는 다수의 사용자가 하나의 세션을 사용해 실시간 데이터를 전송하도록 지원한다.
RTP에서 의미하는 세션은 RTP 참가자 사이의 연관성이다.
RTP는 믹서와 트랜슬레이터라는 두 종류의 RTP 릴레이(RTP Relay)를 지원한다.
릴레이는 데이터 전송 과정에서 송수신 프로세스가 데이터를 직접 전송할 수 없는
상황이 발생하였을 때, 데이터를 중개하는 기능이다. 예를 들어 송수신 프로세스 사이에
방화벽이 설치되거나 데이터 형식이 다를 때, 릴레이가 필요한 처리를 수행하여 데이터
전송이 가능하도록 지원한다.
믹서(Mixer)는 여러 송신 프로세스로부터 RTP 데이터그램 스트림을 받아 이들을 적절히
조합하여 새로운 데이터그램 스트림을 생성한다. 이 과정에서 데이터 형식이 변하거나
믹싱 기능이 수행될 수 있다. 특히 여러 송신 프로세스로부터 수신한 데이터의 시간
관계가 적절하게 조절되지 않을 수 있기 때문에 조합된 데이터그램 스트림에 시간 정보
를 제공해야 한다. 또한 자신이 해당 데이터그램의 시간 정보(Synchronization)를 제공
했음을 표시해야 한다. 이렇게 만들어진 데이터그램 스트림은 여러 수신 프로세스에
전달된다.
트랜슬레이터(Translator)는 입력된 각 RTP 데이터그램을 하나 이상의 출력용 RTP 데이터
그램으로 만들어주는 장치로, 이 과정에서 데이터 형식이 변할 수 있다. 예를 들어, 여러
수신 프로세스 그룹에서 특정 수신 프로세스가 고속의 비디오 신호를 처리할 능력이
없으면, 트랜슬레이터가 비디오 신호를 저해상도 신호로 변환하여 수신 프로세스가 처리
할 수 있도록 도와준다. 또 다른 예는 입력된 멀티캐스트 RTP 데이터그램을 복사하여
다수의 유니캐스터 수신 프로세스에 전송하는 기능이다.
스트림은 데이터그램을 연속으로 전송한다는 의미인데, 연속 데이터그램은 시간에 민감
하다. 믹서는 데이터그램 스트림의 믹싱에 관한 문제를 다루는 반면, 트랜슬레이터는
스트림에는 관심이 없고 특정한 변환 작업을 수행한다.
참조문헌: 데이터 통신과 컴퓨터 네트워크