Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

RTSP ALG

实时流协议 (RTSP) 通过音频和视频等实时属性控制数据传输。介质可以在同一 RTSP 控制流上传输。这是一种基于 HTTP 文本的协议,但是客户端和服务器维护会话信息。使用 SETUP 消息建立会话,然后使用"终止"消息终止。在设置和设置响应中协商传输(介质协议、地址和端口号)。

对有状态防火墙和NAT服务的支持要求为 TCP 端口 554 配置 RTSP ALG。ALG 将监控控制连接,为媒体 (RTP/RTSP) 流动态打开流,并执行NAT和端口重写。

了解 RTSP ALG

概述

RTSP(实时流协议)应用层协议,用于控制具有实时属性的数据传输。它在语法和操作方面与 HTTP/1.1 类似。与 SIP 和 H.323 不同,RTSP 的目的是通过网络访问现有媒体文件并控制媒体的回放。典型的通信是在客户端(例如运行 RealPlayer)和流媒体服务器之间通信。命令包括从远程服务器暂停并播放媒体文件的功能。

RTSP 是媒体客户端与媒体服务器之间的一种控制通道协议。数据通道使用不同的协议,通常是实时传输协议 (RTP) 或 RTP 控制协议 (RTCP)。

在 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 标准模式。

图 1:RTSP ALG 标准模式 RTSP ALG Standard Mode

交错模式

在 RTSP 交错模式下,可通过 TCP 上 RTP 或 RDT 将媒体数据转换为数据包。在这种情况下,一个全双工 TCP 连接同时用于从 RTSP 服务器到客户端的控制和媒体数据交付。数据流与 RTSP 控制流交织。

图 2 显示了 RTSP ALG 交错模式。

图 2:RTSP ALG 交错模式 RTSP ALG Interleave Mode

了解 RTSP ALG 消息

RTSP 消息格式

RTSP 基于文本,并使用 UTF-8 编码中的 ISO 10646 字符集。行由 CRLF 终止,空行是消息和正文的分隔符。

第一行称为开始行。对于从客户端到服务器的请求消息,开始行表示 RTSP 方法。对于从服务器到客户端的响应消息,开始行表示 RTSP 状态代码作为方法的回复。状态代码元素是一个 3 位数的整数结果代码。

RTSP 方法

一个事务处理期间有九种类型的方法。

  • 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 上以 TEARDOWN 结束。

了解 RTSP ALG 对话与NAT

此主题提供典型的 RTSP ALG 对话的详细信息。

通常,RTP 和 RTCP 数据包为双向数据包,这意味着客户端或服务器可发起 RTP 或 RTCP 会话。

图 3 描述了标准 RTSP 对话中的数据包捕获示例。

图 3:RTSP ALG 对话 RTSP ALG Conversation

RTSP ALG 在标准的 RTSP 对话中对 RTSP 示例数据包捕获执行以下操作:

  1. 监控设置和 200 OK 消息。

  2. 接收协商的端口(此示例中为 6543 和 8765)

  3. 为服务器到客户端的 UDP 媒体数据打开一个针孔。

  4. 在需要时,接收有效负载中的 IP 地址并NAT地址。

    表 1 说明了 RTSP 有效负载 IP NAT。

    表 1:RTSP有效负载 IP NAT
     

    转发(C->S)

    反向(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

    N/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'—目标地址之前的 RTSP 服务器 IP NAT

    • B'—IPv6 领域的 RTSP 服务器 IP 地址

    • B''— IPv4 领域的 RTSP 服务器 IP 地址

    • P'—RTSP 客户端的转换端口(从 4321 转换)

    • RTSP 客户端的 P''—转换端口(从 5678 中的消息有效负载转换)

    • Q'—RTSP 客户端的 Q'—转换(IPv6 至 IPv4)端口(从 4321 转换)

    • Q'—RTSP 客户端的 Q'—转换(IPv6 至 IPv4)端口(从 5678 以消息有效负载转换)

    • R'—RTSP 客户端的 R'—转换(IPv4 至 IPv6)端口(从 4321 转换)

    • R'-Translated(IPv4 至 IPv6)RTSP 客户端的端口(从 5678 中的消息有效负载转换)

    • (*)—RTSP 服务器 IP 地址 B 显示在有效负载消息中;无需转换

    • (**)—IP 地址 B' 显示在客户端到服务器的有效负载消息中;需要转换为 B

示例:配置 RTSP ALG

此示例展示如何配置 RTSP ALG,以通过 RTSP 流量,NAT设备上的瞻博网络流量。

要求

  • 为源设备池中的所有 IP 地址配置NAT ARP。

  • 启用 RTSP ALG。

  • 了解 RTSP ALG 的基本概念。请参阅 了解 RTSP ALG

概述

此示例将 RTSP ALG 配置为监控并允许 RTSP 流量在位于设备两侧的客户端和服务器瞻博网络传输。

配置

启用 RTSP ALG

CLI快速配置

要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit] commit

要为源设备池内的所有 IP 地址配置代理 ARP NAT并启用 RTSP ALG:

commit 配置模式进入。

配置NAT源池和规则集以及策略

CLI快速配置

要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit] commit

commit 配置模式进入。

注意:

如果您不确定 RTSP 客户端和服务器 IP 地址,可以将"da1"和"sa1"替换为"any"。

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关如何操作的说明,请参阅 CLI用户指南 中的 在配置模式下CLI编辑器 。

要配置源NAT池:

  1. 创建一NAT源池。

  2. 配置安全区域地址簿条目。

  3. 创建一NAT源规则集。

  4. 配置策略。

结果

在配置模式下,输入 和 命令以确认 show security nat 您的 show security policies 配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。

如果完成设备配置,请从配置 commit 模式输入 。

配置 RTSP ALG 追踪选项

CLI快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit] commit

逐步过程

要配置 RTSP ALG 追踪选项,

  1. 启用 RTSP ALG 追踪选项。

  2. 配置文件名以从追踪操作接收输出。

  3. 指定最大追踪文件大小。

  4. 指定追踪输出级别。

结果

在配置模式下,输入 命令以确认 show security alg 您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。

如果完成设备配置,请从配置 commit 模式输入 。

验证

确认配置工作正常。

验证 RTSP ALG

目的

验证 RTSP ALG 是否已启用。

行动

在操作模式下,输入 show security alg status 命令。

意义

输出显示 RTSP ALG 状态,如下所示:

  • 启用 — 显示已启用 RTSP ALG。

  • 禁用 - 显示 RTSP ALG 已禁用。

验证 RTSP ALG 控制会话

目的

验证是否创建了控制会话以及创建了所有 RTSP 控制和数据会话。

行动

在操作模式下,输入 show security flow session 命令。

意义
  • 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 命令。

意义

示例输出显示,流门为 TCP 数据通道连接打开。

验证 RTSP 资源管理器组

目的

验证 RTSP ALG 使用的资源管理器组和活动组总数。

行动

在操作模式下,输入 show security resource-manager group active 命令。

意义

示例输出显示 RTSP ALG 使用的资源管理器组和活动组总数。

验证 RTSP 资源信息

目的

验证 RTSP ALG 使用的资源和活动资源总数。

行动

在操作模式下,输入 show security resource-manager resource active 命令。

意义

示例输出显示 RTSP ALG 使用的资源和活动资源总数。