RTSP 协议的应用程序层网关

实时流协议 (RTSP) 是一种用于传输实时媒体数据的应用级协议。RTSP 是媒体客户端和媒体服务器之间的控制通道协议,用于建立和控制端点点之间的媒体会话。典型的通信是客户端和流媒体服务器之间的通信。

从专用网络到公共网络的流媒体需要通过网络转换 IP 地址和端口号。Citrix ADC 功能包括用于 RTSP 的应用程序层网关 (ALG),该网关可与大型 NAT (LSN) 一起使用,以解析媒体流并进行任何必要的更改,以确保协议在网络上继续工作。

IP 地址转换的执行方式取决于消息的类型和方向,以及客户端-服务器部署支持的媒体类型。消息翻译如下:

  • 出站请求-到 Citrix ADC 拥有的公有 IP 地址的私有 IP 地址,称为 LSN 池 IP 地址。
  • 入站响应-LSN 池 IP 地址到私有 IP 地址。
  • 入站请求-无翻译。
  • 出站响应-LSN 池 IP 地址的私有 IP 地址。

注意

Citrix ADC 独立设备、Citrix ADC 高可用性设置以及 Citrix ADC 群集设置均支持 RTSP ALG。

RTSP ALG 的局限性

RTSP ALG 不支持以下内容:

  • 多播 RTSP 会话
  • 通过 UDP 进行的 RTSP 会话
  • TD/行政分区
  • RSTP 身份验证
  • 網道隧道

RTSP 和幸存者网络设想

下图显示了 RTSP 设置请求流。通常,SENUP 请求指定必须如何传输单个媒体流。请求包含媒体流 URL 和传输说明符。此说明符通常包括一个用于接收 RTP 数据(音频或视频)的本地端口,另一个用于接收 RTCP 数据(元信息)的本地端口。服务器回复通常会确认所选参数并填充缺失的部分,例如服务器选择的端口。在发送聚合播放请求之前,必须使用 SEDENT 命令配置每个媒体流。

本地化后的图片

在典型的 RTSP 通信中,公用网络中的媒体客户端将 SEUP 请求发送到专用网络中的媒体服务器。RSTP ALG 拦截请求,并在媒体流中,将公有 IP 地址和端口号替换为 LSN 池 IP 地址和 LSN 端口号。下图显示了 Citrix ADC 设备在媒体流中为出站请求执行的转换:

本地化后的图片

专用网络中的媒体服务器使用 LSN 池 IP 地址和 LSN 端口号发送 200 OK 响应到公用网络中的媒体客户端。Citrix ADC RTSP ALG 拦截响应,并将 LSN 池 IP 地址和 LSN 端口号替换为媒体客户端的公有 IP 地址和端口号。下图显示了 Citrix ADC 设备在媒体流中为入站响应执行的转换:

本地化后的图片

配置 RTSP ALG

将 RTSP ALG 配置作为 LSN 配置的一部分。有关配置 LSN 的说明,请参阅 LSN 的配置步骤。配置 LSN 时,请确保:

  • 在添加 LSN 池时,将 NAT 类型 设置为确定性或动态。
  • 在添加 LSN 应用程序配置文件时设置以下参数:
    • IP 池 = 已配对
    • 地址和端口映射 = 与端点无关
    • 过滤 = 与端点无关
  • 创建 RTSP ALG 配置文件并将 RTSP ALG 配置文件绑定到 LSN 组

RTSP ALG 配置示例:

以下示例配置演示了如何使用单个订阅者网络、单个 LSN NAT IP 地址和 RTSP ALG 设置创建简单的 LSN 配置:

enable ns feature WL SP LB CS LSN

Done

add lsn pool pool1 -nattype DETERMINISTIC

Done

bind lsn pool pool1 10.102.218.246

Done

add lsn client client1

Done

bind lsn client client1 -network 200.200.200.11 -netmask 255.255.255.0

Done

add lsn appsprofile app1 TCP -ippooling PAIRED -mapping ENDPOINT-INDEPENDENT -filtering ENDPOINT-INDEPENDENT

Done

add lsn appsprofile app2 UDP -ippooling PAIRED -mapping ENDPOINT-INDEPENDENT -filtering ENDPOINT-INDEPENDENT

Done

bind lsn appsprofile app1 1-65535

Done

bind lsn appsprofile app2 1-65535

Done

add lsn rtspalgprofile rtspalgprofiledefault -rtspIdleTimeout 1000 -rtspportrange 554

Done

add lsn group group1 -clientname client1 -nattype DETERMINISTIC -portblocksize 512 -rtspalg ENABLED

Done

bind lsn group group1 -poolname pool1

Done

bind lsn group group1 -appsprofilename app1

Done

bind lsn group group1 -appsprofilename app2

Done

bind lsn group group1 -rtspalgprofilename rtspalgprofiledefault

Done