RTSP ALG
실시간 스트리밍 프로토콜(RTSP)은 오디오 및 비디오와 같은 실시간 속성을 통해 데이터 전달을 제어합니다. 미디어는 동일한 RTSP 제어 스트림에서 전송될 수 있습니다. 이것은 HTTP와 유사한 텍스트 기반 프로토콜이지만 클라이언트와 서버는 세션 정보를 유지합니다. 설정 메시지를 사용하여 세션이 설정되고 TEARDOWN 메시지를 사용하여 종료됩니다. 전송(미디어 프로토콜, 주소 및 포트 번호)은 설정 및 설정 응답에서 협상됩니다.
스테이트풀 방화벽 및 NAT 서비스를 지원하려면 TCP 포트 554에 대한 RTSP ALG를 구성해야 합니다. ALG는 제어 연결을 모니터링하고, 미디어(RTP/RTSP) 스트림에 대해 동적으로 플로우를 열고 NAT 주소와 포트 재작성을 수행합니다.
RTSP ALG 이해하기
개요
RTSP(실시간 스트리밍 프로토콜)는 실시간 속성을 통해 데이터 전달을 제어하는 애플리케이션 레이어 프로토콜입니다. 구문과 작동에서 HTTP/1.1과 유사합니다. SIP 및 H.323과 달리 RTSP의 목적은 네트워크를 통해 기존 미디어 파일에 액세스하고 미디어 재생을 제어하는 것입니다. 일반적인 커뮤니케이션은 클라이언트(예: RealPlayer 실행)와 스트리밍 미디어 서버 간의 통신입니다. 명령에는 원격 서버에서 미디어 파일을 일시 중지하고 재생하는 기능이 포함됩니다.
RTSP는 미디어 클라이언트와 미디어 서버 간의 제어 채널 프로토콜입니다. 데이터 채널은 다른 프로토콜(일반적으로 RTP(Real-Time Transport Protocol) 또는 RTCP(RTP Control Protocol)를 사용합니다.
RTSP 표준 모드에서 클라이언트는 UDP를 통해 RTP를 사용하여 미디어 데이터가 전달될 때 RTSP 서버로 세 개의 네트워크 채널을 설정합니다.
RTSP는 TCP를 통해 실행됩니다. RTP 및 RTCP는 UDP를 통해 실행됩니다. RTP 및 RTCP 패킷의 포트는 RTSP를 사용하여 클라이언트와 서버가 동적으로 협상합니다. RTP 및 RTCP 포트는 동적이기 때문에 이러한 포트는 정적 정책에 의해 허용될 수 없습니다. 방화벽에 RTSP ALG를 도입하는 주요 목적은 RTP 및 RTCP 트래픽이 통과할 수 있도록 클라이언트/서버 협상 결과에 따라 동적 정책(핀홀)을 생성하는 것입니다.
클라이언트와 서버가 서로 다른 영역에 있을 때 피어가 제공하는 RTP 또는 RTCP 오퍼의 주소로 라우팅하는 방법을 결정하지 못할 수 있습니다. 이 경우 ALG는 RTP 또는 RTCP 제안 주소에 대한 변환 작업을 수행하여 페이로드에서 수정해야 합니다.
연결이 설정된 후 RTSP ALG는 클라이언트와 서버 간에 교환된 메시지를 모니터링하고, 대화 상자의 상태 변경을 추적하며, 대화 상자가 완료되거나 실패한 후 RTSP 대화 상자를 지원하기 위해 얻은 모든 리소스를 다시 시스템으로 반환합니다.
RTSP 모드
표준 모드
RTSP 표준 모드에서 클라이언트는 UDP를 통해 RTP를 사용하여 미디어 데이터가 전달될 때 RTSP 서버로 세 개의 네트워크 채널을 설정합니다.
전이중 TCP 연결은 제어 및 협상에 사용됩니다. 전이중 UDP 채널은 RTP 패킷 형식을 사용한 미디어 데이터 제공에 사용됩니다. 대부분의 경우, RTP는 서버에서 시작됩니다. RTCP라는 전이중 UDP 채널은 클라이언트에 동기화 정보를 제공하고 서버에 패킷 손실 정보를 제공하는 데 사용됩니다.
그림 1 은 RTSP ALG 표준 모드를 보여줍니다.
인터리브 모드
RTSP 인터리브 모드에서는 TCP를 통해 RTP 또는 RDT를 사용하여 미디어 데이터를 패킷으로 만들 수 있습니다. 이 시나리오에서는 단일 전이중 TCP 연결이 RTSP 서버에서 클라이언트로의 미디어 데이터 전달과 제어에 사용됩니다. 데이터 스트림은 RTSP 제어 스트림과 인터리브됩니다.
그림 2 는 RTSP ALG 인터리브 모드를 보여줍니다.
RTSP ALG 메시지 이해
RTSP 메시지 형식
RTSP는 텍스트 기반이며 UTF-8 인코딩에서 설정된 ISO 10646 문자를 사용합니다. 선은 CRLF에 의해 종료되고 빈 선은 메시지와 본문의 분리자입니다.
첫 번째 라인을 시작 라인이라고합니다. 클라이언트에서 서버까지의 요청 메시지의 경우, 시작 줄은 RTSP 방법을 나타냅니다. 서버에서 클라이언트로의 응답 메시지의 경우, 시작 줄은 방법의 응답으로 RTSP 상태 코드를 나타냅니다. 상태 코드 요소는 3 자릿수 정수 결과 코드입니다.
RTSP 방법
하나의 트랜잭션 중에는 9가지 유형의 방법이 있습니다.
OPTION— 요청-URL로 식별된 요청/응답 체인에서 사용할 수 있는 통신 옵션에 대한 정보 요청을 나타냅니다. 이 방법을 사용하면 클라이언트가 리소스 작업을 의미하거나 리소스 검색을 시작하지 않고 리소스와 연결된 옵션, 요구 사항 또는 서버 기능 모두를 결정할 수 있습니다.
DESCRIBE—요청 URL로 식별된 프레젠테이션 또는 미디어 개체에 대한 설명을 서버에서 검색합니다. 이 방법은 허용 헤더를 사용하여 클라이언트가 해석하는 설명 형식을 지정할 수 있습니다.
ANNOUNCE—클라이언트에서 서버로 전송된 요청은 이 방법은 요청 URL로 식별된 프레젠테이션 또는 미디어 개체의 설명을 서버에 게시합니다. 서버에서 클라이언트로 요청이 전송되면 이 방법은 세션 설명을 실시간으로 업데이트합니다.
SETUP—URI를 요청하고 스트리밍 미디어에 사용할 전송 메커니즘을 지정합니다.
PLAY-설정에 지정된 메커니즘을 사용하여 서버에게 데이터 전송을 시작하도록 알려줍니다.
PAUSE—스트림 딜리버리를 일시적으로 중단하도록 요청합니다.
TEARDOWN—주어진 URI에 대한 스트림 전달을 중지하여 관련 리소스를 확보합니다.
GET_PARAMETER—URI에 지정된 프레젠테이션 또는 스트림 매개 변수의 값을 검색합니다.
SET_PARAMETER—URI가 지정한 프레젠테이션 또는 스트림에 대한 매개 변수의 값을 설정합니다.
RTSP 상태 코드
상태 코드의 첫 번째 자릿수는 응답 클래스를 정의합니다.
1**: 정보—요청 수신, 지속적인 프로세스.
2**: 성공
3**: 리디렉션 — 요청을 완료하려면 추가 작업이 이뤄져야 합니다.
4**: 클라이언트 오류 - 요청에 잘못된 구문이 포함되어 있거나 이행할 수 없습니다.
5**: 서버 오류 - 서버가 유효한 요청을 이행하지 못했습니다.
RTSP 헤더
RTSP 헤더는 다음 필드로 구성됩니다.
CSeq- RTSP 요청 응답 쌍에 대한 시퀀스 번호를 지정합니다. 주어진 시퀀스 번호를 포함하는 모든 RTSP 요청의 경우, 동일한 수를 갖는 해당 응답이 있을 것입니다.
Content-Length- 방법의 내용 길이를 포함합니다. 즉, 마지막 헤더를 따르는 더블 CRLF 다음에 해당합니다.
TRANSPORT- 사용할 전송 프로토콜을 나타내고 매개 변수를 구성합니다.
SESSION—설정 응답에서 미디어 서버에서 시작된 RTSP 세션을 식별하고 프레젠테이션 URL의 삭제로 끝납니다.
RTSP ALG 대화 및 NAT 이해하기
이 주제는 일반적인 RTSP ALG 대화에 대한 세부 정보를 제공합니다.
일반적으로 RTP 및 RTCP 패킷은 양방향이며, 이는 클라이언트 또는 서버가 RTP 또는 RTCP 세션을 시작할 수 있음을 의미합니다.
그림 3 은 표준 RTSP 대화에서 패킷 캡처 샘플의 예를 설명합니다.
RTSP ALG는 표준 RTSP 대화에서 RTSP 샘플 패킷 캡처에 대해 다음 작업을 수행합니다.
설정 및 200개의 OK 메시지를 모니터링합니다.
협상 포트 수신(이 예에서 6543 및 8765)
서버에서 클라이언트까지 UDP 미디어 데이터에 대한 핀홀을 엽니다.
페이로드에서 IP 주소를 수신하고 NAT가 필요한 경우 주소를 변환합니다.
표 1 은 RTSP 페이로드 IP NAT에 대해 설명합니다.
표 1: RTSP 페이로드 IP NAT 포워드(C->S)
Reverse(S->C)
핀 홀
페이로드 IP 변환
페이로드 포트 변환
NAT 없음
A/4321->B/554
A/4321<-B/554
B/9876->A/5678
A/5678->B/9876
해당(N/A)
해당(N/A)
소스 NAT(IPvx)
A/4321->B/554
A'/P'<-B/554
B/9876->A'/P''
A/5678->B/9876
해당/A(*)
5678<->P''
대상 NAT(IPvx)
A/4321->B'/554
A/4321<-B/554
B/9876->A/5678
A/5678->B'/9876
B' -> B(**)
해당(N/A)
NAT64
A/4321->B'/554
A'/Q'<-B/554
B/9876->A'/Q''
A/5678->B'/9876
B'(IPv6)->B(IPv4)
5678<->Q''
NAT46
A/4321->B''/554
A''/R'<-B/554
B/9876->A''/R''
A/5678->B''/9876
B''(IPv4)->B(IPv6)
5678<->R''
표 1에서 다음 문자와 기호가 사용됩니다.
A—RTSP 클라이언트 IP 주소
A'—RTSP 클라이언트의 IPv4 또는 IPv6 주소 변환
A'—번역된 IPv4 주소
A''—번역된 IPv6 주소
B—RTSP 서버 IP 주소
B'—목적지 NAT 이전의 RTSP 서버 IP 주소
B'—IPv6 영역의 RTSP 서버 IP 주소
B''— IPv4 영역의 RTSP 서버 IP 주소
P'—RTSP 클라이언트의 번역된 포트(4321에서 번역)
P'—RTSP 클라이언트의 번역된 포트(메시지 페이로드의 5678에서 번역)
Q'—RTSP 클라이언트의 번역(IPv6에서 IPv4로) 포트(4321에서 변환)
Q'—RTSP 클라이언트의 번역(IPv6에서 IPv4로) 포트(메시지 페이로드의 경우 5678에서 변환)
R'—RTSP 클라이언트의 번역(IPv4에서 IPv6로) 포트(4321에서 변환)
R'—RTSP 클라이언트의 번역(IPv4에서 IPv6로) 포트(메시지 페이로드의 경우 5678에서 변환)
(*) - RTSP 서버 IP 주소 B가 페이로드 메시지에 나타납니다. 번역할 필요가 없습니다.
(**) - 클라이언트에서 서버까지 페이로드 메시지에 IP 주소 B'가 나타납니다. B로 번역해야 합니다.
예: RTSP ALG 구성
이 예는 주니퍼 네트웍스 디바이스의 소스 NAT 풀을 사용하여 RTSP 트래픽을 통과하도록 RTSP ALG를 구성하는 방법을 보여줍니다.
요구 사항
소스 NAT 풀의 모든 IP 주소에 대한 프록시 ARP를 구성합니다.
RTSP ALG를 활성화합니다.
RTSP ALG의 기본 개념을 이해합니다. RTSP ALG 이해를 참조하십시오.
개요
이 예에서 RTSP ALG는 RTSP 트래픽이 주니퍼 네트웍스 디바이스의 반대편에 있는 클라이언트와 서버 간에 미디어를 전송하도록 모니터링하고 허용하도록 구성됩니다.
구성
RTSP ALG 활성화
CLI 빠른 구성
예의 이 섹션을 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브러브를 제거하고, 네트워크 구성과 일치하는 데 필요한 세부 사항을 바꾸고 계층 수준에서 명령을 CLI [edit]
로 복사해 붙여 넣은 다음, 구성 모드에서 을(를) 입력 commit
합니다.
소스 NAT 풀의 모든 IP 주소에 대한 프록시 ARP를 구성하고 RTSP ALG를 활성화하려면:
set security nat proxy-arp interface <interface-name> address 10.10.10.1/32 to 10.10.10.10/32 set security alg rtsp
구성 모드에서 을(를) 입력합니다 commit
.
NAT 소스 풀 및 규칙 세트 및 정책 구성
CLI 빠른 구성
예의 이 섹션을 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브러브를 제거하고, 네트워크 구성과 일치하는 데 필요한 세부 사항을 바꾸고 계층 수준에서 명령을 CLI [edit]
로 복사해 붙여 넣은 다음, 구성 모드에서 을(를) 입력 commit
합니다.
set security nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32 set security zones security-zone green address-book address sa1 1.1.1.0/24 set security zones security-zone red address-book address da1 2.2.2.0/24 set security nat source rule-set rs1 from zone green set security nat source rule-set rs1 to zone red set security nat source rule-set rs1 rule r1 match source-address 1.1.1.0/24 set security nat source rule-set rs1 rule r1 match destination-address 2.2.2.0/24 set security nat source rule-set rs1 rule r1 then source-nat pool pool1
set security policy from-zone green to-zone red policy pol1 match destination-address da1 set security policy from-zone green to-zone red policy pol1 match source-address sa1 set security policy from-zone green to-zone red policy pol1 match application junos-rtsp set security policy from-zone green to-zone red policy pol1 then permit
구성 모드에서 을(를) 입력합니다 commit
.
RTSP 클라이언트 및 서버 IP 주소를 잘 모르면 "da1"과 "sa1"을 "any"로 바꿀 수 있습니다.
단계별 절차
다음 예제에서는 구성 계층에서 다양한 수준의 탐색이 필요합니다. 이를 수행하는 방법에 대한 지침은 CLI 사용자 가이드의 구성 모드에서 CLI 편집기 사용을 참조하십시오.
소스 NAT 풀을 구성하려면 다음을 수행합니다.
NAT 소스 풀을 생성합니다.
[edit security] user@host# set nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32
보안 영역 주소록 항목을 구성합니다.
[edit security zones security-zone] user@host# set green address-book address sa1 1.1.1.0/24 user@host# set red address-book address da1 2.2.2.0/24
NAT 소스 규칙 집합을 생성합니다.
[edit security nat source rule-set rs1] user@host# set from zone green user@host# set to zone red user@host# set rule r1 match source-address 1.1.1.0/24 user@host# set rule r1 match destination-address 2.2.2.0/24 user@host# set rule r1 then source-nat pool pool1
정책을 구성합니다.
[edit security policies from-zone green to-zone red policy pol1] user@host# set match source-address sa1 user@host# set match destination-address da1 user@host# set match application junos-rtsp user@host# set then permit
결과
구성 모드에서 및 show security policies
명령을 입력하여 구성을 show security nat
확인합니다. 출력에 의도한 구성이 표시되지 않으면 이 예의 구성 지침을 반복하여 수정합니다.
[edit ] user@host# show security nat source { pool pool1 { address { 10.10.10.1/32 to 10.10.10.10/32; } } rule-set rs1 { from zone green; to zone red; rule r1 { match { source-address 1.1.1.0/24; destination-address 2.2.2.0/24; } then { source-nat { pool { pool1; } } } } }
[edit] user@host# show security policies from-zone green to-zone red {policy pol1 { policy pol1 { match { source-address sa1; destination-address da1; application [junos-rtsp]; } then { permit; } } } default-policy { permit-all; }
디바이스 구성이 완료되면 구성 모드에서 을(를) 입력합니다 commit
.
RTSP ALG 추적 옵션 구성
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브러브를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 바꾸고 계층 수준에서 명령을 CLI [edit]
로 복사해 붙여 넣은 다음, 구성 모드에서 을(를) 입력 commit
합니다.
set security alg rtsp traceoptions flag all set security alg traceoptions file trace set security alg traceoptions file size 1g set security alg traceoptions level verbose
단계별 절차
RTSP ALG 추적 옵션을 구성하려면 다음을 수행합니다.
RTSP ALG 추적 옵션을 활성화합니다.
[edit security alg] user@host# set rtsp traceoptions flag all
추적 작업에서 출력을 수신하도록 파일 이름을 구성합니다.
[edit security alg] user@host# set traceoptions file trace
최대 추적 파일 크기를 지정합니다.
[edit security alg] user@host# set traceoptions file size 1g
추적 출력 수준을 지정합니다.
[edit security alg] user@host# set traceoptions level verbose
결과
구성 모드에서 명령을 입력하여 구성을 확인합니다 show security alg
. 출력에 의도한 구성이 표시되지 않으면 이 예의 구성 지침을 반복하여 수정합니다.
[edit] user@host# show security alg traceoptions { file trace size 1g; level verbose; } rtsp traceoptions flag all;
디바이스 구성이 완료되면 구성 모드에서 을(를) 입력합니다 commit
.
확인
구성이 제대로 작동하는지 확인합니다.
RTSP ALG 확인
목적
RTSP ALG가 활성화되어 있는지 확인합니다.
작업
운영 모드에서 명령을 입력합니다 show security alg status
.
user@host> show security alg status DNS : Enabled FTP : Enabled H323 : Enabled RTSP : Enabled
의미
출력은 다음과 같이 RTSP ALG 상태를 보여줍니다.
활성화 - RTSP ALG가 활성화되어 있는 것을 보여줍니다.
비활성화 - RTSP ALG가 비활성화되어 있는 것을 보여줍니다.
RTSP ALG 제어 세션 확인
목적
제어 세션이 생성되고 모든 RTSP 제어 및 데이터 세션이 생성되었는지 확인합니다.
작업
운영 모드에서 명령을 입력합니다 show security flow session
.
user@host>show security flow session Flow Sessions on FPC5 PIC0: Session ID: 100004087, Policy name: dns-alg/4, Timeout: 1798, Valid Resource information : RTSP ALG, 1, 0 In: 1.1.0.100/59889 --> 1.1.0.202/554;tcp, If: ge-0/0/1.0, Pkts: 28, Bytes: 7618 Out: 1.1.0.202/554 --> 1.1.0.100/59889;tcp, If: ge-0/0/2.0, Pkts: 27, Bytes: 24304 Session ID: 100004088, Policy name: dns-alg/4, Timeout: 120, Valid Resource information : RTSP ALG, 1, 1 In: 1.1.0.202/5004 --> 1.1.0.100/62092;udp, If: ge-0/0/2.0, Pkts: 19, Bytes: 17013 Out: 1.1.0.100/62092 --> 1.1.0.202/5004;udp, If: ge-0/0/1.0, Pkts: 0, Bytes: 0 Session ID: 100004089, Policy name: dns-alg/4, Timeout: 120, Valid Resource information : RTSP ALG, 1, 4 In: 1.1.0.202/5004 --> 1.1.0.100/62094;udp, If: ge-0/0/2.0, Pkts: 433, Bytes: 346183 Out: 1.1.0.100/62094 --> 1.1.0.202/5004;udp, If: ge-0/0/1.0, Pkts: 0, Bytes: 0 Session ID: 100004090, Policy name: dns-alg/4, Timeout: 120, Valid Resource information : RTSP ALG, 1, 3 In: 1.1.0.100/62093 --> 1.1.0.202/5005;udp, If: ge-0/0/1.0, Pkts: 2, Bytes: 260 Out: 1.1.0.202/5005 --> 1.1.0.100/62093;udp, If: ge-0/0/2.0, Pkts: 0, Bytes: 0 Total sessions: 4
의미
Session ID—세션을 식별하는 번호입니다. 이 ID를 사용하여 정책 이름 또는 패킷 수와 같은 세션에 대한 자세한 정보를 얻을 수 있습니다.
Policy name-트래픽을 허용한 정책 이름.
In-수신 플로우(해당 소스 및 대상 포트 번호가 있는 소스 및 대상 IP 주소, 세션은 TCP이며, 이 세션의 소스 인터페이스는 ge-0/0/1.0)입니다.
Out-역 플로우(해당 소스 및 대상 포트 번호가 있는 소스 및 대상 IP 주소, 세션은 TCP, 이 세션의 대상 인터페이스는 fe-0/0/2.0)입니다.
RTSP ALG 플로우 게이트 정보 확인
목적
TCP 데이터 채널 연결을 위해 플로우 게이트가 열려 있는지 확인합니다.
작업
운영 모드에서 명령을 입력합니다 show security flow gate
.
user@host>show security flow gate Flow Gates on FPC5 PIC0: Hole: 1.1.0.202-1.1.0.202/5005-5005->1.1.0.100-1.1.0.100/62093-62093 Translated: 0.0.0.0/0->0.0.0.0/0 Protocol: udp Application: RTSP ALG/11 Age: 32 seconds Flags: 0x0080 Zone: untrust Reference count: 1 Resource: 4-1-2 Hole: 1.1.0.100-1.1.0.100/62093-62093->1.1.0.202-1.1.0.202/5005-5005 Translated: 0.0.0.0/0->0.0.0.0/0 Protocol: udp Application: RTSP ALG/11 Age: 32 seconds Flags: 0x0080 Zone: trust Reference count: 1 Resource: 4-1-3 Hole: 1.1.0.202-1.1.0.202/5004-5004->1.1.0.100-1.1.0.100/62094-62094 Translated: 0.0.0.0/0->0.0.0.0/0 Protocol: udp Application: RTSP ALG/11 Age: 32 seconds Flags: 0x0080 Zone: untrust Reference count: 1 Resource: 4-1-4 Hole: 1.1.0.100-1.1.0.100/62094-62094->1.1.0.202-1.1.0.202/5004-5004 Translated: 0.0.0.0/0->0.0.0.0/0 Protocol: udp Application: RTSP ALG/11 Age: 32 seconds Flags: 0x0080 Zone: trust Reference count: 1 Resource: 4-1-5 Valid gates: 4 Pending gates: 0 Invalidated gates: 0 Gates in other states: 0 Total gates: 4
의미
샘플 출력은 TCP 데이터 채널 연결을 위해 플로우 게이트가 열려 있음을 보여줍니다.
RTSP 리소스 관리자 그룹 확인
목적
RTSP ALG에서 사용하는 총 리소스 관리자 그룹 및 활성 그룹의 수를 확인합니다.
작업
운영 모드에서 명령을 입력합니다 show security resource-manager group active
.
user@host>show security resource-manager group active Group ID 1: Application - RTSP ALG Total groups 19763, active groups 1
의미
샘플 출력은 RTSP ALG에서 사용하는 리소스 관리자 그룹 및 활성 그룹의 총 수를 보여줍니다.
RTSP 리소스 정보 확인
목적
RTSP ALG에서 사용하는 총 리소스 및 활성 리소스 수를 확인합니다.
작업
운영 모드에서 명령을 입력합니다 show security resource-manager resource active
.
user@host>show security resource-manager resource active Resource ID 2: Group ID - 1, Application - RTSP ALG Resource ID 1: Group ID - 1, Application - RTSP ALG Total Resources 93286, active resources 2
의미
샘플 출력은 RTSP ALG에서 사용하는 총 리소스 및 활성 리소스 수를 보여줍니다.