[go: up one dir, main page]

CN1604589A - 支持会话启动协议穿越的防火墙实现方法 - Google Patents

支持会话启动协议穿越的防火墙实现方法 Download PDF

Info

Publication number
CN1604589A
CN1604589A CN 200410067564 CN200410067564A CN1604589A CN 1604589 A CN1604589 A CN 1604589A CN 200410067564 CN200410067564 CN 200410067564 CN 200410067564 A CN200410067564 A CN 200410067564A CN 1604589 A CN1604589 A CN 1604589A
Authority
CN
China
Prior art keywords
sip
message
compartment wall
fire compartment
alg
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200410067564
Other languages
English (en)
Inventor
焦圣品
夏心杰
陈凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WUXI SIMTON TECHNOLOGY Co Ltd
Original Assignee
WUXI SIMTON TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WUXI SIMTON TECHNOLOGY Co Ltd filed Critical WUXI SIMTON TECHNOLOGY Co Ltd
Priority to CN 200410067564 priority Critical patent/CN1604589A/zh
Publication of CN1604589A publication Critical patent/CN1604589A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Telephonic Communication Services (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种网络安全技术领域的支持会话启动协议穿越的防火墙实现方法,内容如下:防火墙解析进入系统的IP分组,IP分组通过网络接口进入系统后,防火墙分析IP头部信息,判断数据载荷是SIP信令消息还是语音分组;SIP ALG处理SIP消息,SIP ALG分析SIP消息头确定该消息属于哪个呼叫连接,SIP ALG使用一个呼叫连接状态表来跟踪所有的呼叫连接状态,SIP ALG根据状态表中的信息修改SIP消息头部或/和SDP消息的内容;防火墙处理SIP ALG向下传递的SIP消息,或执行SIP ALG发出的指令,并将结果返回给SIP ALG;SIPALG根据防火墙执行指令的结果,设置或修改呼叫连接表,将SIP消息发送给防火墙,或者执行呼叫连接表的清理工作。本发明易于实现,可方便地实现支持H.323等其他应用层协议穿越的防火墙。

Description

支持会话启动协议穿越的防火墙实现方法
技术领域
本发明涉及一种防火墙的实现方法,具体地说,是一种支持会话启动协议穿越的防火墙实现方法。用于网络安全技术领域。
背景技术
为解决网络安全和IP地址资源匮乏问题,许多企事业网络都采用了RFC1918规定的私有地址,通过带有NAT(Network Address Translation,网络地址转换)功能的防火墙接入公共网络。如无特别说明,下文所述防火墙都是指带有NAT功能的防火墙。
普通防火墙不具备应用层协议知识以及分析和修改数据载荷的能力。对使用固定TCP/UDP端口的应用如HTTP,防火墙只需修改IP/TCP/UDP头部的地址、端口内容,就可实现防火墙的穿透。但对于基于会话启动协议(SessionInitiation Protocol,SIP)或H.323/H.248/MGCP协议的VoIP(Voice over IP)应用来说,要穿越防火墙却存在一定困难。
在使用SIP协议的VoIP通信中,SIP信令使用固定的TCP/UDP端口建立呼叫连接,但以动态协商的方式确定媒体流使用的地址和端口号。在建立呼叫连接过程中,SIP协议在SIP消息的头部嵌入IP地址、信令端口号等信息,在SIP消息体即SDP(Session Description Protocol,会话描述协议)中嵌套了IP地址和媒体流使用的通信端口。在建立了呼叫连接后,SIP UA(User Agent,用户代理)使用动态协商的{地址,端口}对收发媒体流。
由于普通的防火墙只能修改TCP/UDP/IP头部的地址和端口,不能修改应用层的数据。因此,当位于防火墙后的A向Internet的B发起呼叫连接时,A在SIP消息头和消息体中嵌套的私有地址和端口号仍将原封不动地传送给B。B在发送语音流时,将目的地址和目的端口号分别设置为A的私有地址和A用于接收媒体的端口号。但私有IP地址在公网上是不能路由的,Internet路由器将丢弃从B发往A的语音分组。表面上看,A和B建立了呼叫连接。但实质上,A永远都无法接收到B发出的语音。所以,对于使用私有IP地址的电话终端而言,由于地址转换功能的限制,普通防火墙是基于SIP协议的VoIP通信穿越的障碍。
经对现有技术文献的检索发现,中国专利公开号为:CN1440172A、名称为“防火墙包过滤动态开关H.323协议通信通道的方法”的专利,提出了一种防火墙实现方法,但该方法只支持H.323协议,而且该方法工作在数据链路层和网络层,难以扩展以支持SIP等协议。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种支持会话启动协议穿越的防火墙实现方法,使其易于实现,可以方便地实现支持H.323等其他应用层协议穿越的防火墙。
本发明是通过以下技术方案实现的,包括如下步骤:
步骤(1):防火墙解析进入系统的IP分组。
IP分组通过网络接口进入系统后,根据配置的地址转换、过滤规则,防火墙分析IP头部的源地址、目的地址、UDP或TCP端口号,判断数据载荷是否为SIP信令消息还是语音分组。
步骤①:如果数据载荷是SIP信令,防火墙先将SIP消息发送给SIP ALG(Application Layer Gateway,应用层网关)处理。
步骤②:如果数据载荷不是SIP消息,而是其他类型的数据,比如是RTP/RTCP承载的语音数据,防火墙或者丢弃分组,或者修改IP头中的源地址或目的地址后,将分组从发送接口发送出去。
步骤(2):SIP ALG处理SIP消息。
当SIP ALG接收到防火墙传递上来的SIP信令消息后,它通过分析SIP消息头中的命令或响应、Call-ID等字段确定该消息属于哪个呼叫连接。它根据消息的类型分别转步骤①②③④。
SIP ALG使用一个呼叫连接状态表来跟踪所有的呼叫连接状态。状态表中每一个表项描述一个呼叫连接的状态,记录了主叫、被叫的IP地址、Call-ID、主叫的RTP/RTCP端口号、被叫的RTP/RTCP端口号,以及防火墙为内部UA分配的RTP/RTCP端口号等信息。SIP ALG根据这些信息修改SIP消息头部或/和SDP消息的内容。
步骤①:如果SIP消息是一个呼叫的第1条消息,也即是一个呼叫的第1条INVITE消息,SIP ALG将在状态表中创建一个新的表项,将Call-id、主叫IP地址、被叫IP地址记录到表中,并设置其呼叫状态为Calling。如果消息头部via等字段使用的是IP地址,SIPALG创建一条地址映射,将地址映射记录在呼叫连接表中。之后,SIP ALG根据该映射修改SIP消息头嵌套的IP地址。
如果SIP消息中未包含SDP消息,SIP ALG根据该映射修改SIP消息头中嵌套的IP地址后,将SIP消息向下传递给防火墙。
如果SIP消息包含SDP消息,转步骤⑤。
步骤②:如果SIP消息是对OK消息的确认(ACK)消息,SIP ALG将呼叫状态设置为Completed。
如果SIP消息中包含SDP消息,则转步骤⑤。
如果SIP消息中不包含SDP消息,SIP ALG根据状态表中记录的端口、地址信息向NAT发出控制指令,该指令的目的是请求防火墙创建PNAT(端口网络地址转换)规则,从而允许语音流穿越防火墙。该指令为开洞指令。之后,SIP ALG根据地址映射修改SIP消息后,将消息缓存,等待防火墙执行指令后返回的结果。
步骤③:如果SIP消息是对BYE消息的确认(ACK)消息,SIP ALG将呼叫状态设置为Terminated,并向防火墙发出控制指令,该指令的目的是通知防火墙删除已经创建的PNAT规则,从而禁止语音流穿越防火墙。该指令为关洞指令。
SIP ALG根据地址映射修改SIP消息后,将消息缓存,等待防火墙执行指令后返回的结果。
步骤④:如果是其他SIP信令消息,SIPALG在状态表查找其相关的表项,修改呼叫连接的状态,并根据已经建立的地址映射修改消息头部特定字段中的IP地址、修改SDP中嵌套的IP地址和端口号等内容,再将SIP消息发送给防火墙。
步骤⑤:如果SIP信令消息中携带了SDP消息,则SIP ALG将解析SDP消息,特别是分析SDP中“c”、“m”地段,从中提取出主叫、被叫用于接收、发送RTP/RTCP语音流的地址/UDP端口号,将它们记录在呼叫连接表中。对于全双工的语音通信,每一方都要使用两对UDP端口号分别用于发送和接收语音分组,每对UDP端口号应是连续的。
同时,SIP ALG根据网络配置可以判断SDP中嵌套的网络地址是否为防火墙内的UA的地址,并检查记录表中是否为该UA申请了两对连续的UDP端口号。这两个UDP端口号是防火墙系统内部分配的。
如果没有,则需要向防火墙发出控制指令,该指令的目的是指示防火墙分配两个连续的UDP端口号。该指令为分配端口号指令。之后,SIP ALG修改SIP消息头部后,将消息缓存,等待防火墙执行指令后返回的结果。
如果已经申请了端口号,SIP ALG修改SIP消息头部、SDP消息后,将消息发传递给防火墙,再由防火墙发处理。
步骤(3):防火墙处理SIP ALG向下传递的SIP消息,或者执行SIP ALG发出的指令,并将结果返回给SIP ALG。防火墙根据情况转步骤①②③④。
步骤①:防火墙接收到SIP ALG向下传递的SIP消息,它修改分组头部的IP地址后,将分组从网络接口发送出去。
步骤②:防火墙接收到SIP ALG发出的开洞指令后,它根据SIP ALG提供的信息创建PNAT(端口网络地址转换)规则,允许该呼叫建立的RTP/RTCP语音流通过该洞穿越防火墙,即在防火墙上动态地“开洞”。之后,向SIP ALG发送一条消息,该消息用于将开洞是否成功的结果返回给SIP ALG。
步骤③:防火墙接收到SIP ALG发出的关洞指令后,删除与本次呼叫对应的PNAT规则,阻止随后的语音流通过防火墙,即关闭防火墙上的洞。之后,向SIP ALG发送一条消息,该消息用于将关洞是否成功的结果返回给SIP ALG。
步骤④:防火墙执行SIP ALG发出的分配端口号指令,查找空闲的UDP端口号,如果有两对两个连续的空闲端口号,则通过一条消息将4个端口号传递给SIP ALG。
步骤(4):SIP ALG根据防火墙执行指令的结果,设置或修改呼叫连接表,将SIP消息发送给防火墙,或者执行呼叫连接表的清理工作。SIP ALG将根据呼叫连接的状态和防火墙返回的结果转步骤①②③。
步骤①:如果SIP ALG接收到开洞成功的消息,将缓存的SIP消息传递给给防火墙,防火墙对该消息的IP头进行处理后发送出去。否则,SIP ALG丢弃该SIP消息。
步骤②:SIP ALG接收到防火墙关洞成功的消息,删除状态表中的呼叫连接记录。否则,SIP ALG将再次向防火墙发出关洞指令,直至关洞成功。
至此,防火墙完全关闭媒体通道,将阻塞RTP/RTCP语音流通过防火墙。
步骤③:SIP ALG接收到分配端口号成功的消息,首先将申请得到的UDP端口号记录到呼叫连接表对应的表项中,再向防火墙发送开洞指令。如果接收到分配端口号失败的消息,SIP ALG将丢弃缓存的SIP消息,删除连接记录。
采用本发明方法实现的防火墙,其核心组成部分是位于应用层的SIP ALG实体和位于IP网络层的防火墙实体。SIP ALG功能实体的主要功能是解析、处理SIP信令,跟踪呼叫状态,并根据处理结果控制防火墙创建和删除处理规则。防火墙实体的功能是根据处理规则创建和删除映射表,过滤分组或者根据映射表对分组执行NAT操作。在SIP ALG的控制下,防火墙为RTP/RTCP语音流动态地开洞或关洞。
采用本发明的方法实现的防火墙,与TCP/IP协议簇的层次结构一致,SIPALG工作在应用层,防火墙工作在网络层,因此,层次清晰,易于实现。采用同样的方法,可以方便地实现支持H.323等其他应用层协议穿越的防火墙,因此,应用层的扩展不受防火墙的限制。
附图说明
图1 一个SIP呼叫例
图2 本发明防火墙逻辑结构图
图3 SIP穿越防火墙的工作原理
具体实施方式
如图1所示,SIP协议的工作过程如下:
主叫A向被叫B的UDP 5060端口发送一条INVITE消息,该消息携带了SDP消息,用于说明主叫A支持的编码方式、接收和发送语音数据的UDP端口号。
被叫B接收到INVITE消息后,向被叫用户发出提示音(例如振铃),通知被叫有电话打入。同时向主叫A的UDP5060端口返回一条代号为180的回铃消息。
主叫A收到回铃消息后,向主叫用户发出回铃提示音,通知主叫,被叫已经应答。
被叫用户愿意接受本次呼叫,摘机,从而使B向A的发送一条”200 Ok”消息,其中携带了SDP,该SDP消息描述了电话B可支持的编码格式和接受、发送语音分组使用的UDP端口号。
A接收到OK消息后,向B发送一条ACK确认消息,通知B可以通话了。之后用户就通过这两部电话进行交谈。
通话结束时,被叫用户挂机,被叫B向主叫A发送一条BYE命令。A收到该命令后,向B发送一条OK应答消息,从而拆除A和B之间的呼叫。
如图2所示,本发明所述的防火墙的核心部分包括两个逻辑功能实体和一套通信协议:
NAT/防火墙
SIP ALG
用于SIP ALG和NAT/防火墙之间通信的专有协议。
(1)防火墙实体
NAT/防火墙工作在网络层和传输层,和普通的防火墙基本上没有区别,可识别并修改IP头部、ICMP头部、UDP头和TCP头部的信息,但不能识别和修改应用层的数据。它维护一个地址转换和分组过滤规则的集合。该规则是由用户配置的。如果需要防火墙支持VoIP,用户应配置可用的UDP端口号和TCP端口号,配置SIP监听的端口号。在运行过程中,NAT/防火墙将根据规则集合动态和通信情况,创建一个活动转换表,用于记录正在处理的地址转换。
SIP信令使用的端口号,缺省为UDP 5060,也可能为其他UDP端口号或TCP端口。应根据SIP信令实际使用的端口号配置防火墙的地址转换规则,以便NAT/防火墙能识别SIP信令消息,允许SIP消息穿越防火墙,并将SIP消息传送给SIP ALG。
(2)SIP ALG实体
SIP ALG工作应用层,其主要功能包括两方面,1)处理SIP信令消息。接收来自NAT/防火墙的SIP消息,根据SIP协议和SDP协议分析呼叫连接状态,使用呼叫状态表跟踪呼叫连接状态,根据呼叫状态表修改嵌套在SIP消息头和消息体中的地址和端口号后,将SIP消息发送给防火墙,再由防火墙将修改后的SIP消息发送出去。2)跟踪呼叫连接状态,控制防火墙打开或关闭媒体通道。
(3)通信协议
SIP ALG和NAT/防火墙之间的通信协议是一个主-从通信协议。在运行过程,SIP ALG处理SIP消息,跟踪呼叫连接状态,向NAT/防火墙发出指示。在主被叫建立呼叫连接过程中,SIP ALG指示NAT/防火墙提供可用的UDP端口号。NAT/防火墙接受到该指示后,查找可用的UDP端口号,将可用的端口号返回给SIP ALG,并修改其可用UDP端口号列表。
当呼叫连接建立时,SIP ALG指示NAT/防火墙动态地创建地址转换规则。根据该指示,SIP ALG创建端口转换规则。当语音分组进入防火墙后,防火墙创建活动转换表,将分组头部的源IP地址或目的IP地址转换后发送出去。
当呼叫连接终止时,SIP ALG指示NAT/防火墙删除与呼叫连接相关的址转换规则。
(4)SIP穿越防火墙的主要步骤
下面以图3所示的网络中防火墙内的电话呼叫外部电话为例,说明SIP穿越防火墙的过程。
图中,IP电话A的网络地址为192.168.122.3;防火墙的内部网络接口地址为192.168.122.254,外部网络接口地址为2.2.2.2;外部电话B的地址为202.101.1.1。根据需要配置好防火墙系统。
第1步,A发出一个INVITE SIP消息发起向B的呼叫,该消息包含SDP。当承载了该SIP消息的IP分组从防火墙的内部网络接口进入防火墙后,防火墙解析该分组确定其为携带SIP信令的分组。为此,它将该分组发送给SIP ALG,同时将该信令来自哪个网络接口等信息发送给SIP ALG。这时,该消息来自于防火墙的内部网络接口。
SIP ALG对SIP消息进行解析,分析消息头部可判断该消息是一条INVITE消息,它从消息头部例如To-,From-,Call-ID字段中收集呼叫连接状态信息。SIPALG在呼叫连接状态表中创建一条表项,将状态信息填入表中。
如果SIP ALG确定SIP消息中包含SDP,还要分析SDP中“c”,”m”字段。它解析SDP,从中提取出A用于接收RTP/RTCP语音流的地址/UDP端口号,向防火墙申请两个连续的UDP端口号。如果申请成功,SIP ALG将地址和4个端口号填入到表中,否则,SIP ALG丢弃SIP消息。
SIP ALG根据配置信息将外部网络接口地址2.2.2.2填入表中,接着,用地址2.2.2.2替换SIP消息中的地址192.168.122.3,用申请得到的UDP端口号替换SDP中的端口号。之后,设置呼叫连接的状态,将消息发送给NAT。
NAT将IP头部的源地址修改为2.2.2.2后,先创建一条转换表,记录地址对,再将分组从网络接口2.2.2.2发送出去
第2步,当Proxy接收到INVITE消息后,它向A发出“100 trying”应答消息。该消息经外部网络接口进入防火墙。NAT检查IP分组中UDP头部的端口号,判断它是一条SIP消息,将消息发送给SIP ALG。
SIP ALG解析应答消息,从消息头部的To-,From-,Call-ID字段取出相关内容,并在呼叫连接状态表中查找是否有相关的呼叫连接,如果有,则修改嵌入在消息头部中的地址,将地址2.2.2.2修改为192.168.122.3,再将消息传送给NAT。否则将该消息丢弃。
根据已经创建的转换表,NAT将IP头部的目的地址修改后,从内部网络接口发送给A。
第3步,B接收到当INVITE消息后,向A发出“180 Ringing”消息。该消息从防火墙外部网络接口进入防火墙。NAT检查IP分组中UDP头部的端口号,判断它是一条SIP消息,将消息发送给SIP ALG。
SIP ALG解析应答消息,从消息头部的To-,From-,Call-ID字段取出相关内容,并在呼叫连接状态表中查找是否有相关的呼叫连接,如果有,则修改消息嵌入消息头部的地址,将地址2.2.2.2修改为192.168.122.3,再将消息传送给NAT。如果没有,则将该消息丢弃。
根据已经创建的转换表,NAT将IP头部的目的地址修改后,从内部网络接口发送给A。
第4步,B向A发出“200 OK”应答消息。该消息包含SDP。
该消息从防火墙外部网络接口进入防火墙。NAT检查分组中UDP头部的端口号,判断它是一条SIP消息,将消息发送给SIP ALG。
SIP ALG解析应答消息,从消息头部的To-,From-,Call-ID字段取出相关内容,并在呼叫连接状态表中查找是否有相关的呼叫连接,如果有,则修改嵌入在消息头部的地址,将地址2.2.2.2修改为192.168.122.3,再将消息传送给NAT。如果没有,则将该消息丢弃。
SIP ALG确定SIP消息中包含SDP,它解析SDP,从中提取出B用于接收RTP/RTCP语音流的地址/UDP端口号,将地址和端口号填入到表中。
第5步,A收到B发出的“200 Ok”消息后,向B发出“ACK”确认消息。该消息从防火墙的内部网络接口进入防火墙。
NAT检查IP分组中UDP头部的端口号,判断它是一条SIP消息,将该消息发送给SIP ALG。
SIP ALG解析应答消息,从消息头部的To-,From-,Call-ID字段取出相关内容,并在呼叫连接状态表中查找是否有相关的呼叫连接,如果有,则将呼叫连接设置为Completed状态,并向NAT发出指示,控制NAT创建PNAT映射。
根据已经创建的转换表,NAT将IP头部的目的地址修改后,从外部网络接口将消息发送出去。
至此,A和B之间建立了一条媒体会话流,语音流可以通过该防火墙了。
第6步,当防火墙收到B发出的BYE消息,之后又收到A发出的“200 OK”应答消息后,SIP ALG确定A和B之间的通话已经结束,先指示NAT删除有关的PANT映射,再从呼叫连接状态表中删除相关的表项。
本发明解决了基于SIP协议的VoIP穿越防火墙的问题。本发明方法中,对信令的处理由位于应用层的SIP ALG完成,对语音分组的处理由位于网络层的防火墙完成,因此,与将信令和语音分组集中网络层处理的实现方法比较,本发明方法的效率高,更易于实现和扩展。

Claims (5)

1、一种支持会话启动协议穿越的防火墙实现方法,其特征在于:
步骤(1):防火墙解析进入系统的IP分组
IP分组通过网络接口进入系统后,根据配置的地址转换、过滤规则,防火墙分析IP头部的源地址、目的地址、UDP或TCP端口号,判断数据载荷是否为SIP信令消息还是语音分组;
步骤(2):SIP ALG处理SIP消息
当SIP ALG接收到防火墙传递上来的SIP信令消息后,它通过分析SIP消息头中的命令或响应、Call-ID字段确定该消息属于哪个呼叫连接,SIP ALG使用一个呼叫连接状态表来跟踪所有的呼叫连接状态,状态表中每一个表项描述一个呼叫连接的状态,记录了主叫、被叫的IP地址、Call-ID、主叫的RTP/RTCP端口号、被叫的RTP/RTCP端口号,以及防火墙为内部UA分配的RTP/RTCP端口号,SIP ALG根据这些信息修改SIP消息头部或/和SDP消息的内容;
步骤(3):防火墙处理SIP ALG向下传递的SIP消息,或者执行SIP ALG发出的指令,并将结果返回给SIP ALG;
步骤(4):SIP ALG根据防火墙的执行指令的结果,设置或修改呼叫连接表,将SIP消息发送给防火墙,或者执行呼叫连接表的清理工作。
2、根据权利要求1所述的支持会话启动协议穿越的防火墙实现方法,其特征是,所述的步骤(1),具体实现如下:
步骤①:如果数据载荷是SIP信令,防火墙先将SIP消息发送给SIP ALG处理;
步骤②:如果数据载荷是其他类型的数据,防火墙或者丢弃分组,或者修改IP头中的源地址或目的地址后,将分组从发送接口发送出去。
3、根据权利要求1所述的支持会话启动协议穿越的防火墙实现方法,其特征是,所述的步骤(2),具体实现如下:
步骤:如果SIP消息是一个呼叫的第1条消息,也即是一个呼叫的第1条INVITE消息,SIP ALG将在状态表中创建一个新的表项,将Call-id、主叫IP地址、被叫IP地址记录到表中,并设置其呼叫状态为Calling,如果消息头部via等字段使用的是IP地址,SIP ALG创建一条地址映射,将地址映射记录在呼叫连接表中,之后,SIP ALG根据该映射修改SIP消息头嵌套的IP地址;如果SIP消息中未包含SDP消息,SIP ALG根据该映射修改SIP消息头中嵌套的IP地址后,将SIP消息向下传递给给防火墙;如果SIP消息包含SDP消息,转步骤⑤;
步骤②:如果SIP消息是对OK消息的确认消息,SIP ALG将呼叫状态设置为Completed,如果SIP消息中包含SDP消息,则转步骤⑤;如果SIP消息中不包含SDP消息,SIP ALG根据状态表中记录的端口、地址信息向NAT发出控制指令,该指令的目的是请求防火墙创建PNAT规则,从而允许语音流穿越防火墙,该指令为开洞指令,之后,SIP ALG根据地址映射修改SIP消息后,将消息缓存,等待防火墙执行指令后返回的结果;
步骤③:如果SIP消息是对BYE消息的确认消息,SIP ALG将呼叫状态设置为Terminated,并向防火墙发出控制指令,该指令的目的是通知防火墙删除已经创建的PNAT规则,从而禁止语音流穿越防火墙,该指令为关洞指令,SIPALG根据地址映射修改SIP消息后,将消息缓存,等待防火墙执行指令后返回的结果;
步骤④:如果是其他SIP信令消息,SIP ALG在状态表查找其相关的表项,修改呼叫连接的状态,并根据已经建立的地址映射修改消息头部特定字段中的IP地址、修改SDP中嵌套的IP地址和端口号,再将SIP消息发送给防火墙;
步骤⑤:如果SIP信令消息中携带了SDP消息,则SIP ALG将解析SDP消息,特别是分析SDP中“c”、“m”地段,从中提取出主叫、被叫用于接收、发送RTP/RTCP语音流的地址/UDP端口号,将它们记录在呼叫连接表中,对于全双工的语音通信,每一方都要使用两对UDP端口号分别用于发送和接收语音分组,每对UDP端口号应是连续的,同时,SIP ALG根据网络配置判断SDP中嵌套的网络地址是否为防火墙内的UA的地址,并检查记录表中是否为该UA申请了两对连续的UDP端口号,这两个UDP端口号是防火墙系统内部分配的;
如果没有,则需要再向防火墙发出控制指令,该指令的目的是指示防火墙分配两个连续的UDP端口号,该指令为分配端口号指令,SIP ALG修改SIP消息头部后,将消息缓存,等待防火墙执行指令后返回的结果;如果已经申请了端口号,SIP ALG修改SIP消息头部、SDP消息后,将消息发传递给防火墙,再由防火墙发处理。
4、根据权利要求1所述的支持会话启动协议穿越的防火墙实现方法,其特征是,所述的步骤(3),具体实现如下:
步骤①:防火墙接收到SIP ALG向下传递的SIP消息,它修改分组头部的IP地址后,将分组从网络接口发送出去;
步骤②:防火墙接收到SIP ALG发出的开洞指令示,它根据SIP ALG提供的信息创建PNAT规则,允许该呼叫建立的RTP/RTCP语音流通过该洞穿越防火墙,即在防火墙上动态地“开洞”,之后,向SIP ALG发送一条消息,该消息用于将开洞是否成功的结果返回给SIP ALG;
步骤③:防火墙接收到SIP ALG发出的关洞指令后,删除与本次呼叫对应的PNAT规则,阻止随后的语音流通过防火墙,即关闭防火墙上的洞,之后,向SIP ALG发送一条消息,该消息用于将关洞是否成功的结果返回给SIP ALG;
步骤④:防火墙执行SIP ALG发出的分配端口号指令,查找空闲的UDP端口号,如果有两对两个连续的空闲端口号,则通过一条消息将4个端口号传递给SIP ALG。
5、根据权利要求1所述的支持会话启动协议穿越的防火墙实现方法,其特征是,所述的步骤(4),具体实现如下:
步骤①:如果SIP ALG接收到开洞成功的消息,将缓存的SIP消息传递给给防火墙,防火墙对该消息的IP头进行处理后发送出去,否则,SIP ALG丢弃该SIP消息;
步骤②:SIP ALG接收到防火墙关洞成功的消息,删除状态表中的呼叫连接记录,否则,SIP ALG将再次向防火墙发出关洞指令,直至关洞成功,至此,防火墙完全关闭媒体通道,将阻塞RTP/RTCP语音流通过防火墙;
步骤③:SIP ALG接收到分配端口号成功的消息,首先将申请得到的UDP端口号记录到呼叫连接表对应的表项中,再向防火墙发送开洞指令,如果接收到分配端口号失败的消息,SIP ALG将丢弃缓存的SIP消息,删除连接记录。
CN 200410067564 2004-10-28 2004-10-28 支持会话启动协议穿越的防火墙实现方法 Pending CN1604589A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200410067564 CN1604589A (zh) 2004-10-28 2004-10-28 支持会话启动协议穿越的防火墙实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200410067564 CN1604589A (zh) 2004-10-28 2004-10-28 支持会话启动协议穿越的防火墙实现方法

Publications (1)

Publication Number Publication Date
CN1604589A true CN1604589A (zh) 2005-04-06

Family

ID=34666648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200410067564 Pending CN1604589A (zh) 2004-10-28 2004-10-28 支持会话启动协议穿越的防火墙实现方法

Country Status (1)

Country Link
CN (1) CN1604589A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006122446A1 (en) * 2005-05-19 2006-11-23 Utstarcom Telecom Co., Ltd. A method of processing multiple ringback tone in voice service application based on sip fork
WO2008154850A1 (fr) * 2007-06-15 2008-12-24 Huawei Technologies Co., Ltd. Procédé, entité et système pour effectuer un transfert d'adresse de réseau
CN101827029A (zh) * 2010-04-21 2010-09-08 烽火通信科技股份有限公司 一种Linux网络设备动态标记RTP流量的方法
CN1913533B (zh) * 2006-09-05 2011-01-12 北京天地互连信息技术有限公司 基于会话初始化协议的远程视频监控系统及其实现方法
US7904954B2 (en) 2005-11-30 2011-03-08 Huawei Technologies Co., Ltd. Method, device and security control system for controlling communication border security
CN101621342B (zh) * 2008-06-30 2011-05-11 中兴通讯股份有限公司 一种基于实时传输协议实现网络电视节目轮播的方法
CN101631174B (zh) * 2009-08-14 2012-01-11 苏州普适通科技有限公司 基于会话发起协议的网络电话实时识别和过滤方法
CN102377834A (zh) * 2010-08-20 2012-03-14 鸿富锦精密工业(深圳)有限公司 网络地址转换设备及通信方法
CN103404106A (zh) * 2011-03-04 2013-11-20 三星Sds株式会社 Sip消息收发系统及方法
CN104717315A (zh) * 2005-12-19 2015-06-17 艾利森电话股份有限公司 用于建立单播媒体会话的方法
CN105306453A (zh) * 2007-01-16 2016-02-03 艾利森电话股份有限公司 评估初始过滤标准
US9736316B2 (en) 2014-04-17 2017-08-15 Institute For Information Industry Network address translation traversal system and method for real-time communications
CN109510838A (zh) * 2018-12-20 2019-03-22 北京明朝万达科技股份有限公司 端口启动方法和装置
CN111541691A (zh) * 2020-04-22 2020-08-14 北京盛德远景科技有限公司 一种基于sip呼叫的sip呼叫边界控制系统
CN112217766A (zh) * 2019-07-10 2021-01-12 诺基亚通信公司 一种转发rtp数据包的方法和装置

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006122446A1 (en) * 2005-05-19 2006-11-23 Utstarcom Telecom Co., Ltd. A method of processing multiple ringback tone in voice service application based on sip fork
CN101180866B (zh) * 2005-05-19 2010-11-10 Ut斯达康通讯有限公司 基于sip fork的语音服务应用中多回铃音的一种处理方法
US7904954B2 (en) 2005-11-30 2011-03-08 Huawei Technologies Co., Ltd. Method, device and security control system for controlling communication border security
CN104717315A (zh) * 2005-12-19 2015-06-17 艾利森电话股份有限公司 用于建立单播媒体会话的方法
CN104717315B (zh) * 2005-12-19 2018-06-19 艾利森电话股份有限公司 用于建立单播媒体会话的方法
CN1913533B (zh) * 2006-09-05 2011-01-12 北京天地互连信息技术有限公司 基于会话初始化协议的远程视频监控系统及其实现方法
CN105306453B (zh) * 2007-01-16 2020-04-14 艾利森电话股份有限公司 评估初始过滤标准
CN105306453A (zh) * 2007-01-16 2016-02-03 艾利森电话股份有限公司 评估初始过滤标准
WO2008154850A1 (fr) * 2007-06-15 2008-12-24 Huawei Technologies Co., Ltd. Procédé, entité et système pour effectuer un transfert d'adresse de réseau
CN101621342B (zh) * 2008-06-30 2011-05-11 中兴通讯股份有限公司 一种基于实时传输协议实现网络电视节目轮播的方法
CN101631174B (zh) * 2009-08-14 2012-01-11 苏州普适通科技有限公司 基于会话发起协议的网络电话实时识别和过滤方法
CN101827029B (zh) * 2010-04-21 2013-01-02 烽火通信科技股份有限公司 一种Linux网络设备动态标记RTP流量的方法
CN101827029A (zh) * 2010-04-21 2010-09-08 烽火通信科技股份有限公司 一种Linux网络设备动态标记RTP流量的方法
CN102377834A (zh) * 2010-08-20 2012-03-14 鸿富锦精密工业(深圳)有限公司 网络地址转换设备及通信方法
CN102377834B (zh) * 2010-08-20 2014-02-19 鸿富锦精密工业(深圳)有限公司 网络地址转换设备及通信方法
CN103404106A (zh) * 2011-03-04 2013-11-20 三星Sds株式会社 Sip消息收发系统及方法
CN103404106B (zh) * 2011-03-04 2016-11-09 三星Sds株式会社 Sip消息收发系统及方法
US9736316B2 (en) 2014-04-17 2017-08-15 Institute For Information Industry Network address translation traversal system and method for real-time communications
CN109510838A (zh) * 2018-12-20 2019-03-22 北京明朝万达科技股份有限公司 端口启动方法和装置
CN109510838B (zh) * 2018-12-20 2020-08-28 北京明朝万达科技股份有限公司 端口启动方法和装置
CN112217766A (zh) * 2019-07-10 2021-01-12 诺基亚通信公司 一种转发rtp数据包的方法和装置
CN112217766B (zh) * 2019-07-10 2023-03-17 诺基亚通信公司 一种转发rtp数据包的方法和装置
CN111541691A (zh) * 2020-04-22 2020-08-14 北京盛德远景科技有限公司 一种基于sip呼叫的sip呼叫边界控制系统
CN111541691B (zh) * 2020-04-22 2022-04-01 北京盛德远景科技有限公司 一种基于sip呼叫的sip呼叫边界控制系统

Similar Documents

Publication Publication Date Title
CN1604589A (zh) 支持会话启动协议穿越的防火墙实现方法
CN1489354A (zh) 电信业务在宽带异构网络间的实现互通方法的方法和系统
CN1633102A (zh) 实现网络地址转换穿越的方法及其系统
KR100527343B1 (ko) 호 설정을 위한 미디어게이트웨이 제어장치 및 방법
CN1659921A (zh) 通过来自应用的具体指令控制信令分组的传输以优化到无线网络的传输
AU2005201075A1 (en) Apparatus and method for voice processing of voice over internet protocol (VOIP)
CN1553676A (zh) 多种协议终端进行同一音视频会议的方法
CN1716941A (zh) 用于建立双向对等通信链路的方法和呼叫服务器
CN101018229A (zh) 一种媒体业务穿越防火墙的方法及防火墙
CN1293736C (zh) 用于网络地址转换与会话管理的系统与方法
CN1581872A (zh) 基于megaco协议的信令代理实现方法
CN1849808A (zh) 混合多媒体网络的协议的互通
CN1317873C (zh) 基于媒体网关控制协议的信令代理实现方法
US8005099B2 (en) Selecting transport addresses to route streams between endpoints
CN1764172A (zh) 穿越网络地址转换和防火墙的多媒体通信代理系统及方法
CN1551569A (zh) 网络传输多媒体数据的方法
CN1897622A (zh) 一种检测及释放媒体网关异常实时传输协议资源的方法
CN1925461A (zh) 通信系统中通话时主叫识别显示的方法
CN1897720A (zh) 控制集群系统无线一键通方式讲话权的方法
CN1859424A (zh) 媒体资源的控制方法及装置
CN101036342B (zh) 选择呼叫会话的路由模式
CN1863138A (zh) 一种实现多媒体业务nat穿越的方法
CN1946055A (zh) 即时通讯中媒体数据传输通道切换的方法
CN106921615A (zh) 在移动终端中实现固网号码通信的系统、方法及移动终端
CN1735088A (zh) 下一代网络媒体网关呼叫全流程跟踪的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication