北京邮电大学 黄周松 雷振明
实时业务流的识别可以方便我们统计实时业务的流量,并为实时业务质量测量和监控打下基础。目前支持实时业务的协议有很多,例如H.323协议和SIP协议。H.323协议是基于分组交换网络视频会议的端对端通信标准,为适应IP语音通信,H.323进行了改进,由于其标准复杂而严格,产品之间不存在兼容问题。SIP协议需要其终端包含用户代理客户机构和用户代理服务器,由这两部分共同实现呼叫请求、呼叫答应和用户的一些特定需要。SIP协议的普及有待于Internet用户共同的进一步增加,H.323协议仍是目前的主流协议,本文将主要探讨如何识别以H.323协议为基础的实时业务流。为方便陈述,本文将H.323协议支持的实时业务流简称为H.323流。
为保护内部数据和网络安全,企业网大都是通过防火墙连接到因特网。防火墙一般只允许常用的FTP、HTTP、TELNET以及MAIL等业务通过,而对别的协议和端口号实行禁闭。H.323协议对TCP端口、UDP端口的使用有一定要求,需要防火墙允许这些端口的数据流通过。此外,H.323系统中需要使用的组播也要求防火墙对组播地址的数据流予以“放行”,否则内部网络与外部网络之间不可能进行实时业务通信。本文总结了H.323协议使用的协议类型及其端口,分析了因为防火墙的存在给实时业务应用带来的问题。文末提出的防火墙配置要求能解决防火墙在实时业务应用中产生的问题。
一、H.323流的识别
H.323是国际电信联盟(ITU)标准之一,诞生于1996年,并于1998 年更新。H.323 包含语音编码、简单的带宽管理、许可控制、地址转换、呼叫控制和管理以及外部网络链接等标准,为基于分组的网络基础设施上的音频、视频和数据通信提供了基础。H.323定义了四个主要部件用于构筑基于网络的通信系统:终端(Terminals)、网关(Gateways)、网守(Gatekeepers)、多点控制单元(MCU)。
1.H.323协议建立会话的流程
H.323协议中的通道指的是传输层的连接。H.323通过几种通道的先后建立实现会话。
(1)RAS通道
终端用户通过RAS通道登录到网守(Gatekeeper),并请求网守允许它发起呼叫请求。如果该请求获得同意,则网守回送一个传输地址(含IP地址和端口号)作为被叫方的呼叫信令通道。
(2)呼叫信令通道
该通道承载呼叫的相关信息,通道采用H.225.0协议,当呼叫建立好后,H.245控制通道使用的端口号将在本通道内进行协商。
(3)H.245控制通道
这个通道承载H.245协议的信息,该信息用于对媒体的逻辑信道使用的参数进行协商。参与呼叫的各方在完成能力协商之后,通过本通道协商媒体的逻辑通道所使用的端口号。如果只传送音频或视频,则在每个方向上各使用一对UDP相邻端口,需要四个端口号;如果同时传送音频和视频,则在每个方向上各使用两对UDP相邻端口,需要八个端口号。
(4)媒体的逻辑通道
这个通道承载话音、视频信息,每个媒体类型承载在一对单向通道上,在单方向上有自己的RTP通道和RTCP反馈通道。
H.323规定H.245控制通道、呼叫信令通道承载在可靠的传输协议TCP上,而RAS通道和媒体的逻辑通道承载在不可靠传输协议UDP上。
2.H.323流的识别
由于H.323协议是一种新的协议,它的业务没有运行在有特权的端口上(如HTTP业务运行于80端口)。当一种H.323的应用开始时,它将监听两个特定TCP端口,1503和1720,前者用于建立T.120数据通道,后者用于发起H.225.0呼叫连接。
H.323协议声明使用RTP协议来传输数据。通信时一种媒体类型业务使用两个UDP端口,一个用于音频或视频传送,另一个用于RTCP反馈控制,分别称为业务端口和控制端口。业务端口使用偶数端口,控制端口使用相邻的奇数端口。
H.323协议使用的UDP端口号是不确定的,但利用UDP端口相邻的性质、两个TCP端口1503与1720以及终端寻找网守的过程识别H.323流是可行的。用于识别H.323流的设备被称为流识别设备,它可以是独立的设备,也可以集成在网关或者防火墙里。一般地,多个驻地网的H.323终端可以共享一个网守,因此网守的位置一般在驻地网网关或防火墙的外部。H.323流的识别过程分为以下几个步骤。
(1)识别H.323域的网守。
H.323终端需要发现网守并向网守注册。终端首先向网守发送GRQ请求,该请求封装在UDP协议里。终端若没有配置网守的地址,将通过组播地址224.0.1.41与所有的网守通信,使用的UDP端口是1718;若终端配置了网守的地址,使用的UDP端口则为1719。网守收到GRQ请求后,如果允许注册,将回发GCF响应信息给终端;如果不允许注册,将回发GCJ拒绝信息给终端。
流识别设备如果通过这种方法来发现H.323域中的网守,需要其支持H.225.0协议,不易实现。这里提出一种简单的方法来实现流识别设备对网守的发现。流识别设备监测终端发出地址为224.0.1.41且端口为1718的GRQ报文,该域中所有的网守都将向终端发送GCF/GCJ来响应GRQ请求,响应报文都是UDP报文,这些UDP报文的目的IP地址是发出GRQ请求的终端地址,源IP地址则是网守地址,流识别设备通过记录所有响应报文中的源IP地址就可获知H.323域中所有网守的地址。
(2)识别与网守建立RAS通道的终端IP地址,做出备案。
发起连接前,在终端与网守之间需要建立RAS通道。终端向网守发送ARQ请求,然后网守响应ACF请求来完成。ARQ请求报文是UDP报文,其目的IP地址是其注册成功的网守地址,目的端口为1719。这样就可以监测到H.323系统中发起连接请求的终端,即呼叫方,并记录其IP地址。
(3)监听该终端通过1720端口建立TCP连接的目的IP地址,也就是被呼叫方或被呼叫方网关的IP地址。
RAS通道建立成功后,终端将获得网守提供的H.323别名解析,即被呼叫方的IP地址,然后,呼叫方发起目的端口号为1720的TCP连接。流识别设备可以记录被呼叫方的IP地址,与呼叫方的IP地址组成IP地址对,简称IP对。监测至此,说明呼叫建立请求已经发出,呼叫方需要等待被呼叫方的响应。
(4)监听IP对之间是否新建两个TCP连接以分别承载H.245控制通道和T.120数据通道。
H.245通道的TCP连接所使用的TCP端口是不可预知的,仅在H.225通道里进行协商。T.120数据通道的TCP连接的目的端口号为1503。流识别设备可以监测这两个连接的端口,其中一个应该为1503。
(5)鉴别媒体的逻辑通道以及业务类型
上述的四个步骤完成后,说明呼叫已经完毕,控制通道和媒体通道也已经建立,一次实时业务会话开始了。下一步,需要分析UDP协议承载的是不是RTCP报文,再根据RTP报文分析业务类型是音频还是视频业务。
二、防火墙配置策略分析
本文所说的连接可以是TCP连接,也可以是UDP的目的端口号、源端口号、源IP地址以及目的IP地址这四元组标识的一个UDP套接字。由于防火墙的默认特性不允许外部用户主动发起连接来访问内部资源,只有当内部用户发起连接后外部流量才能进来,这会导致一些问题。此外,实时业务使用的UDP端口是动态协商的,一般情况下,防火墙不会开放这些端口因此需要修改防火墙的配置。
1.防火墙在实时业务应用时遇到的问题及其解决办法
使用防火墙时首先会遇到两个问题:设终端A是防火墙内部用户,终端B是外部用户,当终端A发起到终端B的呼叫时,因为A是内部用户,防火墙会允许呼叫请求通过,也会允许B的应答通过,但若B主动发起到A的呼叫,防火墙将不允许B的呼叫请求通过,A也就接收不到B的呼叫请求,这种情况下请求就会因无响应导致超时失败;在通话期间,由于终端A使用的RTP端口号是偶数号,终端B使用的RTCP端口号是相邻奇数号,防火墙会认为B的RTCP报文是一个新的外部请求,将不允许其通过。同理,防火墙将允许A的RTCP报文通过,而不允许B的RTP报文通过,导致A听不到B的声音。上述两个问题的解决办法是:增大UDP端口的开放,以解决第二个问题。配置防火墙以允许外部发起的端口号为1503和1720的TCP连接的报文通过,这样就能解决外部呼叫失败的问题。
2.基于H.323系统的实时业务应用对防火墙配置的要求
根据问题的分析结果,基于H.323系统的实时业务应用对防火墙配置的要求应为:
1.允许TCP端口号为1503、1720的数据通过;
2.允许UDP端口为1718、1719的数据通过;
3.允许UDP端口处于16384~65535动态范围内的数据通过;
4.允许TCP端口处于11000~65535动态范围内的数据通过;
5.由于终端向网守注册可能需要通过组播地址224.0.1.41与网守通信,因此要求防火墙允许组播地址为224.0.1.41的报文通过。
本文分析了H.323协议的特点并描述了建立会话的过程,在此基础上提出了H.323系统下实时业务流的识别方法,为实时业务质量的测量与监控打下了基础。根据H.323协议使用的协议类型和端口号的特性,本文提出了基于H.323系统的实时业务应用对防火墙配置的要求,以解决防火墙带来的问题。
----《通信世界》
|