CN101257435B - 基于nat-pt的sip应用层网关的实现方法 - Google Patents
基于nat-pt的sip应用层网关的实现方法 Download PDFInfo
- Publication number
- CN101257435B CN101257435B CN2007100377135A CN200710037713A CN101257435B CN 101257435 B CN101257435 B CN 101257435B CN 2007100377135 A CN2007100377135 A CN 2007100377135A CN 200710037713 A CN200710037713 A CN 200710037713A CN 101257435 B CN101257435 B CN 101257435B
- Authority
- CN
- China
- Prior art keywords
- message
- address
- port
- ipv4
- transitional information
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于NAT-PT的SIP应用层网关的实现方法,用以在IPv4网络和IPv6网络间转换SIP报文,包括以下步骤:获取SIP报文的标识号、长度;解析消息头第一行,判断SIP报文的类型是请求报文还是响应报文;如果是请求报文,执行请求报文处理流程;如果是响应报文,执行响应报文处理流程。本发明通过转换信息表来记录IP地址和端口转换,通过状态机来管理报文转换中的状态,以及通过地址前缀和地址池来实现IPv4地址到IPv6地址(或者相反)的转换,实现了在IPv4网络和IPv6网络间SIP报文的转换。
Description
技术领域
本发明涉及一种用以在IPv4网络和IPv6网络间转换SIP(session initiation protocol,会话发起协议)报文的方法,尤其涉及一种基于NAT-PT(网络地址转换-端口转换协议)的SIP应用层网关(SIP ALG)的实现方法。
背景技术
SIP是由IETF(internet engineering task force)组织提出的IP电话信令协议。SIP是一种基于文本格式的客户机/服务器模式的通讯协议,SIP消息包括了请求消息和响应消息。二者都具有相同的消息格式,这两种消息类型都由一个起始行,一个或者多个头部域,一个可选的消息体组成:
在请求消息的起始行(又称请求行)中,SIP定义了请求执行的操作。SIP提供了给用户扩充的功能集,到目前为止的版本共定义了:邀请(INVITE)、回应(ACK)、选择(OPTIONS)、结束(BYE)、取消(CANCEL)、注册(REGISTER)、信息(INFO)、分配(AILOCATE)和更新(UPDATE)。
在响应消息的起始行(又称状态行)中共定义了6类响应来表示指示请求执行的结果,每个响应代码均用3位数表示,第1位数字指示响应的类别,后2位数字表示具体的响应。
SIP的头部字段定义了:
From:指示请求的发端;
To:指示请求的收端;
Call_ID:用于唯一标识一个特定的邀请或标识某一客户的所有登记
Cseq:表示命令序列号;
Via:指示请求经历的路径;
Contact:给出直接通信的地址;
Expires:给出消息内容超期的时间。
SIP消息体采用SDP定义,SDP会话描述由文本行组成,每个文本行的格式均为<类型>=<值>,包含了参与现存会话相关的必要信息:
会话信息:会话名和目的;会话激活的时间区段;构成会话的媒体;接收媒体所需地址、端口、格式等;会话所用的带宽信息(任选);会话负责人的联系信息(任选)。
媒体信息:媒体类型(视频/音频等);传送协议(RTP/UDP/IP、H.323等);媒体格式(H.261视频/MPEG视频等);媒体地址和端口。
时间信息:会话的开始和结束时间。
加密信息:可选。
在单一网络(例如单纯的IPv4网络或IPv6网络)中SIP的呼叫过程如下:
首先是SIP客户机注册到SIP服务器上。客户机发送注册(Register)报文给SIP服务器,如果注册成功,服务器发送带200 OK代码的回应报文。如果注册不成功,返回带错误代码的回应报文。
SIP客户机注册成功后,即可呼叫其他注册用户。请参阅图1所示,其呼叫过程如下:
步骤101:用户A发送邀请(INVITE)报文给用户B。
步骤102:用户B接到INVITE报文后发Trying报文给用户A。
步骤103:用户B接到INVITE报文后发Ringing震铃报文给用户A。
步骤104:用户B处理INVITE报文后回应200 OK报文给用户A。
步骤105:用户A回应ACK报文给用户B。
步骤106:用户A发送RTP(Real-time transport protocol,实时传输协议)数据流,用户A和用户B之间进行通话。
步骤107:用户A挂断发送BYE报文给用户B。
步骤108:用户B回应200 OK报文。
基于SIP协议标准,整合了传统的语音及增值服务,并提供及最新的即时通信服务以及IP网络上的视频服务,并且可以为其他更多的增值应用服务商提供一个标准的具有高扩展性的平台。系统平台完全采用因特网的分布式的体系结构,具有高度的灵活性和可扩展性,并具有大型电信服务所需要的高可靠性和容错性,可支持百万级及千万级的用户量。
然而随着因特网的发展,IPv4的地址越用越少,地址枯竭问题就更加严重,现在国家大力发展IPv6网络,作为下一代互联网协议的势必要替代现有的IPv4网络,但现存的IPv4网络不会立即消失,IPv6网络和IPv4网络共存的现象还会持续很长一段时间。
在IPv6地址和IPv4地址共存的时期,如何让IPv6网络和IPv4网络之间SIP协议实现无缝转换,是迫切需要解决的技术难题。
发明内容
本发明所要解决的技术问题是提供一种提出了基于NAT-PT的SIP应用层网关的实现方法,从而在网络层和应用层上实现了SIP协议在IPv6和IPv4网络之间的相互转换。
本发明为解决上述技术问题而采用的技术方案是提供一种基于NAT-PT的SIP应用层网关的实现方法,用以在IPv4网络和IPv6网络间转换SIP报文,其特点是,包括以下步骤:
a.获取SIP报文的标识号、长度;
b.解析消息头第一行,判断SIP报文的类型是请求报文还是响应报文;
c.如果是请求报文,执行请求报文处理流程,包括:
c1.对于INVITE报文和Register报文,执行下列步骤:
对报文消息体进行处理,以对消息体中IP地址和端口进行转换;
对报文消息头进行处理,以对消息头中IP地址和端口进行转换;
建立包含报文标识号,IP地址、端口转换信息条目的转换信息表;
根据报文类型为所述转换信息条目设置会话状态标志;
c2.对于非INVITE或Register报文,执行下列步骤:
根据标识号查找转换信息表;
根据查找到的转换信息条目对报文中的IP地址和端口进行转换;
根据报文类型为所述转换信息条目设置会话状态标志;
d.如果是响应报文,执行响应报文处理流程,包括:
根据标识号查找转换信息表,根据查找到的转换信息对报文中的IP地址和端口进行转换;
根据响应报文的响应代码和所查找到的转换信息的会话状态标志,修改所述查找到的转换信息。
上述的基于NAT-PT的SIP应用层网关的实现方法,其中,所述步骤c1中,对报文消息体进行处理的流程包括:
判断所述报文是IPv4报文还是IPv6报文;
对于IPv4报文,执行下列步骤:
提取消息体中的IPv4地址和端口;
以所述IP地址和端口分别查找一静态映射表和动态映射表;
根据找到的映射条目中的IPv6地址和端口替换消息体中的IPv4地址和端口;以及
更改报文消息头的内容长度;
对于IPv6报文,执行下列步骤:
提取消息体中的IPv6地址和端口;
以所述IP地址和端口分别查找一转换信息表,若找到对应的转换信息条目,则利用其中的IPv4地址和端口替换消息体中的IPv6地址和端口;若找不到对应的转换信息条目,则以所述IP地址和端口分别查找一静态映射表和前缀表,利用找到的映射条目中的IPv4地址和端口替换消息体中的IPv6地址和端口;以及
更改报文消息头的内容长度。
上述的基于NAT-PT的SIP应用层网关的实现方法,其中,所述步骤c1中,所述根据报文类型为所述转换信息设置会话状态标志的步骤包括:
对于Register报文,标识会话状态为Register;
对于INVITE报文,标识会话状态为Request。
上述的基于NAT-PT的SIP应用层网关的实现方法,其中,所述步骤d中,根据响应报文的响应代码和所查找到的转换信息条目的会话状态标志的步骤修改所述查找到的转换信息条目的步骤包括:
若响应代码是200,则判断当前会话状态,若会话状态是BYE状态,则删除转换信息表中的所述转换信息条目,若会话状态是Register状态,则更新转换信息表中的所述转换信息条目,以及若会话状态是Request状态,则建立媒体流的通道,并更新转换信息表;
若响应代码既不是200,也不是以1开头的,则删除转换信息表中的所述转换信息条目。
上述的基于NAT-PT的SIP应用层网关的实现方法,其中,
对于IPv4报文,以IP地址和端口查找一静态映射表和动态映射表的步骤包括:
判断所述报文是IPv4报文还是IPv6报文;
查找动态映射表中是否有匹配的IP地址和端口,若有,则返回相应的IPv6地址,若没有,进入下一步骤;
查找静态映射表中是否有匹配的IP地址和端口,若有,则返回相应的IPv6地址,若没有,进入下一步骤;
根据一前缀表为IPv4地址添加前缀,组成IPv6地址;
对于IPv6报文,以IP地址和端口查找一静态映射表和前缀表的步骤包括:
判断所述报文是IPv4报文还是IPv6报文;
查找前缀表中是否有匹配的IP地址,若有,则返回IPv4地址,若没有,则进入下一步骤;
查找静态映射表中是否有匹配的IP地址和端口,若有,则返回相应的IPv4地址,若没有,进入下一步骤;
从一包含一组IPv4地址和端口的地址池中选择一IPv4地址和端口。
上述的基于NAT-PT的SIP应用层网关的实现方法,其中,所述前缀表是以如下方式建立:对于每个连接IPv4网络的SIP应用层网关的端口,建立该端口与地址前缀对应的前缀表,所述地址前缀用于与IPv4地址组成IPv6地址。
上述的基于NAT-PT的SIP应用层网关的实现方法,其中,所述地址池中的IPv4地址为连续的同一网段地址或不连续的一组地址。
上述的基于NAT-PT的SIP应用层网关的实现方法,其中,所述地址池以位图形式分布,其中每一行代表一个IPv4地址,每一位代表一端口号。
上述的基于NAT-PT的SIP应用层网关的实现方法,其中,从所述地址池中选择一IPv4地址和端口的步骤包括:选择与前次所取IP地址相同的地址以及该地址中空闲的端口,或者选择与前次所取IP地址不同的地址以及该地址中空闲的端口。
本发明由于采用以上技术方案,使之与现有技术相比,具有如下优点:
1.实现了SIP协议报文在IPv4和IPv6网络之间的互通。
2.地址池分配和管理,使地址池同时实现了地址和端口的分配,并可以分配连续或不连续的地址。
3.多端口前缀,每个IPv4端口可以设置一个地址前缀,也可以多个IPv4端口配置一个地址前缀。
4.通过状态机的管理,实现SIP协议报文转换中状态的管理。
附图说明
为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明,其中:
图1是单一网络中SIP的呼叫过程示意图。
图2是应用本发明的SIP应用层网关实现方法的网络示意图。
图3是本发明SIP应用层网关的实现方法建立的报文注册状态机示意图;
图4是本发明SIP应用层网关的实现方法建立的报文会话状态机示意图;
图5是本发明SIP应用层网关的实现方法的处理流程图。
图6是本发明SIP应用层网关的实现方法中的请求报文处理流程图。
图7是本发明SIP应用层网关的实现方法中的消息体处理流程图。
图8是本发明SIP应用层网关的实现方法中的查找静态/动态映射表处理流程图。
图9是本发明SIP应用层网关的实现方法中的响应报文处理流程图。
具体实施方式
图2是应用本发明的SIP应用层网关实现方法的网络示意图。请参阅图2所示,该网络是包含IPv6网络10和IPv4网络20的混合网络,其中以SIP应用层网关30(SIP ALG)连接该两个网络,该SIP ALG 30是结合在一个图未示的NAT-PT路由器中。IPv6网络10中具有SIP注册服务器11(Register Sever)、代理服务器12(Proxy Server)、以及SIPv6客户机机13(User Agent,UA)。类似地,IPv4网络20中具有SIP注册服务器21、代理服务器22、以及SIPv4客户机23;此外,IPv4网络20中还可以具有IP电话24。
在一个IPv6网络和IPv4网络混合的网络中,需要解决的问题是SIP信令报文的转换。SIP信令报文分为请求报文和响应报文两种。在SIP ALG中,要处理如下几种情况的报文转发和转换:
1.SIP报文的路由转发。
2.SIP IPv4客户机和SIP IPv6端代理服务器的报文转换。
3.SIP IPv6客户机和SIP IPv4端代理服务器的报文转换。
4.SIP IPv4代理服务器和SIP IPv6代理服务器之间报文的转换。
5.SIP IPv4客户机和SIP IPv6客户机之间的报文转换。
在转换过程中需要对信令报文进行解析,维护信令的状态,处理异常报文、超时等情况,并分配地址和端口,同时还要保持和IP层的地址转换的一致。
例如在SIP客户机注册中,如果客户机与SIP注册服务器在同一网络(例如IPv6网络10或IPv4网络20)中,SIP ALG 30只需将注册报文根据路由信息转发即可。
对IPv4网络20里的SIP客户机23和IPv6网络10里的SIP注册服务器11,SIP ALG 30需要把SIP客户机23的注册报文(为IPv4报文)转换成IPv6网络下的注册(注销)报文后,发给IPv6网络10中的注册服务器11,同时记录该信令的特征参数,对服务器回应的报文,SIP ALG根据前面记录下的信息,把它转换成IPv4网络中的报文发给SIP客户机23。对IPv6网络10中的SIP客户机13和IPv4网络20中的SIP注册服务器21,也需要上述相应的转换。
同时在上面情况下,由于客户机(13或23)与SIP注册服务器(21或11)不在同一网络中,SIP ALG 30需要将注册报文中涉及到的IP地址(IPv4地址或IPv6地址)和端口,用另一种网络中的IP地址(IPv6地址或IPv4地址),同时还要记录注册报文的转换信息、注册状态,以供后面的信令使用,然后转发到注册服务器所在网络端。
SIP报文中除了进行控制连接,还带有组建数据连接的信息,这些信息放在SDP(消息体)段里。为了保证SIP客户机之间的通信,同样需要SIP ALG 30对其中的信息进行转换。这包括媒体地址和媒体端口,特别是多个媒体流的处理问题。对于RTP(Real-time Transport Protocol,实时传送协议)媒体流还要对RTCP控制进行处理。
下表1示出在SIP报文中,几种报文中需要转换的IP地址和/或端口的示例,应当指出,对于未在下表中列出的报文种类,虽然其需要转换的IP地址和/或端口的数量和位置有所不同,但凡是报文中涉及的IP地址和端口,也均应进行转换。
表1
在上述IPv4地址到IPv6地址的转换中,采用IP地址前缀来组成IPv6地址。SIP ALG 30需要解决IP4到地址转换过程中,地址前缀的设置和分配使用问题。SIP ALG 30是一个多端口的网关,对于每个连接IPv4网络的端口,建立一个端口和地址前缀的对应的前缀表,可以给每个IPv4端口配置相同或者不同的地址前缀,用于IPv4地址转换成IPv6地址。
而上述IPv6地址到IPv4地址的转换中,采用地址池分配地址的方式获取IPv4地址。SIP ALG 30中需要分配一组IPv4地址和端口(称为地址池),供IPv6报文转换成IPv4报文时使用。SIP ALG的地址池用于IPv6地址转换成IPv4地址时使用。地址池里中的地址,可以是连续的同一网段地址也可以是不相连的一组IPv4地址。地址池采用位图形式分布,每一行代表一个IPv4地址,每一Bit代表一个端口号。
在取地址池的地址时,可以首先根据上一次所取IP地址的索引值(也是前一次使用的IP地址),可以取相同IP地址,也可以取一个不同的IP地址,来确保本次使用的IP地址和前一次取的IP地址不一样,以适应某些应用下的要求。
IP地址确定后根据该地址位图的占用情况,如果端口有空闲则取空闲的端口供地址端口转换用,如果端口全部被占用则取下一个IP地址进行相同的操作。
会话结束和会话异常中断后,会话过程中占用的地址池里的IP地址和端口会释放回收,供下次分配地址时使用。
其次,在SIP ALG 30中,对报文转换中,需要记录报文的状态信息,以供后续报文使用。例如对SIP注册报文,通过SIP ALG 30进行转换时,需要对注册报文的状态进行记录,如图3所示,当客户机(13或23)发注册报文时,SIP ALG 30标识其状态为Register,注册服务器(21或11)回应注册成功(OK报文)后其状态标志改为Binding,如果注册失败或者注销则标志其状态为END。状态为END时,SIP ALG 30会释放该连接信息,并回收其占用的IP地址和端口。
对SIP报文的其他报文,根据SIP呼叫的过程把它分为如图4所示的五个状态,即Request、OK、ACK、BYE和END状态。
当SIP客户机请求呼叫时,会发送INVITE请求报文,SIP ALG 30记录其状态为Request,对方客户机如果回应200 OK的消息,则SIP ALG标志连接状态为OK,如果返回以1开头的回应报文,则其状态不做变化,如果收到服务器错误等错误消息报文,则置其状态为END。
在OK状态,如果受到ACK的应答报文,置状态为ACK,如果收到错误消息报文则置状态为END。
客户机挂断电话,通话结束,客户机发送BYE报文,此时连接状态会由ACK状态转换到BYE状态,当对端客户机或服务器回应200 OK的消息报文后,连接状态变成END。
下面结合图5~图9详细叙述本发明基于NAT-PT的SIP应用层网关的实现方法的流程。
首先请参阅图5,总的流程图包括:
步骤51,获取SIP报文的标识号(Call-ID),该标识号是唯一标识一个特定的邀请或标识某一客户的所有登记;
步骤52,获取SIP报文长度,即报文数据长度;
步骤53,解析消息头第一行(起始行),对于请求报文的起始行,SIP定义了请求执行的操作,对于响应报文的起始行(即状态行),SIP定义了6类响应来表示指示请求执行的结果,每个响应代码均用3位数表示,第1位数字指示响应的类别,后2位数字表示具体的响应;
步骤54,判断SIP报文的类型,对于请求报文,执行请求报文处理流程55,其中,请求报文处理流程请参阅图6所示,包括:
步骤60,判断报文是否为INVITE报文或Register报文;
对于INVITE报文和Register报文,执行下列步骤:
步骤61,对报文消息体进行处理,以对消息体中IP地址和端口进行转换;
步骤62,对报文消息头进行处理,以对消息头中IP地址和端口进行转换;
步骤63,根据上述IP地址和端口转换的结果,建立转换信息表,该转换信息表包含报文标识号(Call-ID),IP地址、端口转换信息条目、存活信息和该连接的会话状态,并以报文标识号作为索引;
步骤64,根据报文类型为转换信息条目设置会话状态标志,该步骤是根据图3或图4所示的状态机完成,例如对于INVITE报文,设置会话状态为Request,对于Register报文,设置会话状态为Register。
对于非INVITE或Register报文,执行下列步骤:
步骤65,根据标识号(Call-ID)查找转换信息表,该转换信息表是在SIP ALG 30接收到上述INVITE报文或Register报文后建立的,其中包含了IP地址、端口转换信息条目;
步骤66,若查找到对应的转换信息条目,根据所查到的转换信息条目对报文中的IP地址和端口进行转换;
步骤67,根据报文类型为所述转换信息条目设置会话状态标志;然后结束(步骤68)。
若找不到对应的转换信息条目,则直接进入结束步骤68。
在上述步骤61中,对报文消息体的处理流程进一步如图7所示,包括:
步骤701,判断报文是IPv4报文还是IPv6报文;
对于IPv4报文,执行下列步骤:
步骤702,提取消息体中的IPv4地址和端口;
步骤703,以IP地址和端口分别查找一静态映射表和动态映射表;
步骤704,若找到对应的映射条目,则用其中的IPv6地址和端口替换消息体中的IPv4地址和端口,若找不到对应的映射条目,则直接结束(步骤711);以及
步骤705,更改报文消息头的内容长度,然后进入结束步骤711。
而对于IPv6报文,则执行下列步骤:
步骤706,提取消息体中的IPv6地址和端口;
步骤707,以IP地址和端口分别查找一转换信息表;
步骤708,若找到对应的转换信息条目,则进入步骤709,利用其中的IPv4地址和端口替换消息体中的IPv6地址和端口,然后更改报文消息头的内容长度(步骤710),最后结束(步骤711);若找不到对应的转换信息条目,则进入步骤708,以IP地址和端口分别查找一静态映射表和动态映射表,若找到对应的映射条目,同样进入步骤709,以其中的IPv4地址和端口替换消息体中的IPv6地址和端口,然后进入步骤710;若找不到对应的映射条目,则直接结束(步骤711)。
请参阅图8所示,上述步骤703、步骤707中,静态映射表是预先设置的,动态映射表是由DNS应用层网关(DNS-ALG)在进行IPv4网络和IPv6网络间的域名服务时动态生成的,查找一静态映射表和动态映射表的步骤进一步包括:
步骤801,判断报文是IPv4报文还是IPv6报文;
对于IPv4报文,执行下列步骤:
查找动态映射表中是否有匹配的IP地址和端口(步骤802),若有,则返回相应的IPv6地址(步骤805),若没有,进入步骤803。在步骤803中,查找静态映射表中是否有匹配的IP地址和端口,若有,则返回相应的IPv6地址(步骤805),若没有,进入步骤804,根据一前缀表为IPv4地址添加前缀,组成IPv6地址,最后结束(步骤811),该前缀表是由前述的为每个IPv4端口配置的前缀组成的。
对于IPv6报文,执行下列步骤:
查找前缀表中是否有匹配的IP地址和端口(步骤806),若有,则返回IPv4地址(步骤807),若没有,则进入步骤808。在步骤808中,查找静态映射表中是否有匹配的IP地址和端口,若有,则返回相应的IPv4地址(步骤809),若没有,进入步骤810,从前述的包含IPv4地址和端口的地址池中选择一IPv4地址和端口,最后结束(步骤811)。
从地址池中选择地址和端口,可以例如首先根据上一次所取IP地址的索引值(也是前一次使用的IP地址),可以取相同IP地址,也可以取一个不同的IP地址,来确保本次使用的IP地址和前一次取的IP地址不一样。IP地址确定后根据该地址位图的占用情况,如果端口有空闲则取空闲的端口供地址端口转换用,如果端口全部被占用则取下一个IP地址进行相同的操作。
对于响应报文,其处理流程56请参阅图9所示,包括:
以标识号(Call-ID)作为索引,查找转换信息表(步骤901),若查找不到转换信息条目,直接返回(步骤902),若查找到对应的转换信息条目,根据该转换信息对报文中的IP地址和端口进行转换(步骤903)。然后,以下根据响应报文的响应代码和所查找到的转换信息的会话状态标志,修改转换信息,首先,判断报文的响应代码是否是200(步骤904),如果是,则判断当前会话状态,若会话状态是BYE状态(步骤905),则删除转换信息表中的所述转换信息条目(步骤906),若会话状态是Register状态(步骤907),则更新转换信息表中的所述转换信息条目(步骤908),若会话状态是Request状态(步骤909),则建立媒体流的通道,并更新转换信息表(步骤910),然后结束(步骤913)。
此外,判断响应代码是否以1开头的,即1XX(步骤911),若是则直接结束(步骤913),若响应代码既不是200,也不是以1开头的,则删除转换信息表中的所述转换信息条目(步骤912),然后结束(步骤913)。
经过上述处理流程,本发明的基于NAT-PT的SIP应用层网关的实现方法实现了SIP ALG在IPv4网络和IPv6网络之间的SIP报文的转换。
以上的实施例说明仅为本发明的较佳实施例说明,本领域技术人员可依据本发明的上述实施例说明而作出其它种种等效的替换及修改。然而这些依据本发明实施例所作的种种等效替换及修改,属于本发明的发明精神及由权利要求所界定的专利范围内。
Claims (7)
1.基于NAT-PT的SIP应用层网关的实现方法,用以在IPv4网络和IPv6网络间转换SIP报文,其特征在于,包括以下步骤:
a.获取SIP报文的标识号、长度;
b.解析消息头第一行,判断SIP报文的类型是请求报文还是响应报文;
c.如果是请求报文,执行请求报文处理流程,包括:
c1.对于INVITE报文和Register报文,执行下列步骤:
对报文消息体进行处理,以对消息体中IP地址和端口进行转换;
对报文消息头进行处理,以对消息头中IP地址和端口进行转换;
建立包含报文标识号,IP地址、端口转换信息条目的转换信息表;
根据报文类型为所述转换信息条目设置会话状态标志;
c2.对于非INVITE或Register报文,执行下列步骤:
根据标识号查找转换信息表;
根据查找到的转换信息条目对报文中的IP地址和端口进行转换;
根据报文类型为所述转换信息条目设置会话状态标志;
d.如果是响应报文,执行响应报文处理流程,包括:
根据标识号查找转换信息表,根据查找到的转换信息对报文中的IP地址和端口进行转换;
根据响应报文的响应代码和所查找到的转换信息的会话状态标志,修改所述查找到的转换信息,
其中所述步骤c1中,对报文消息体进行处理的流程包括:
判断所述报文是IPv4报文还是IPv6报文;
对于IPv4报文,执行下列步骤:
提取消息体中的IPv4地址和端口;
以所述IP地址和端口分别查找一静态映射表和动态映射表;
根据找到的映射条目中的IPv6地址和端口替换消息体中的IPv4地址和端口;以及
更改报文消息头的内容长度;
对于IPv6报文,执行下列步骤:
提取消息体中的IPv6地址和端口;
以所述IP地址和端口分别查找一转换信息表,若找到对应的转换信息条目,则利用其中的IPv4地址和端口替换消息体中的IPv6地址和端口;若找不到对应的转换信息条目,则以所述IP地址和端口分别查找一静态映射表和一前缀表,利用找到的映射条目中的IPv4地址和端口替换消息体中的IPv6地址和端口;以及
更改报文消息头的内容长度;
对于IPv4报文,以IP地址和端口查找一静态映射表和动态映射表的步骤包括:
判断所述报文是IPv4报文还是IPv6报文;
查找动态映射表中是否有匹配的IP地址和端口,若有,则返回相应的IPv6地址,若没有,进入下一步骤;
查找静态映射表中是否有匹配的IP地址和端口,若有,则返回相应的IPv6地址,若没有,进入下一步骤;以及
根据一前缀表为IPv4地址添加前缀,组成IPv6地址;
对于IPv6报文,以IP地址和端口查找一静态映射表和前缀表的步骤包括:
判断所述报文是IPv4报文还是IPv6报文;
查找前缀表中是否有匹配的IP地址,若有,则返回IPv4地址,若没有,则进入下一步骤;
查找静态映射表中是否有匹配的IP地址和端口,若有,则返回相应的IPv4地址,若没有,进入下一步骤;以及
从一包含一组IPv4地址和端口的地址池中选择一IPv4地址和端口。
2.如权利要求1所述的基于NAT-PT的SIP应用层网关的实现方法,其特征在于,所述步骤c1中,所述根据报文类型为所述转换信息设置会话状态标志的步骤包括:
对于Register报文,标识会话状态为Register;
对于INVITE报文,标识会话状态为Request。
3.如权利要求1所述的基于NAT-PT的SIP应用层网关的实现方法,其特征在于,所述步骤d中,根据响应报文的响应代码和所查找到的转换信息条目的会话状态标志的步骤修改所述查找到的转换信息条目的步骤包括:
若响应代码是200,则判断当前会话状态,若会话状态是BYE状态,则删除转换信息表中的所述转换信息条目,若会话状态是Register状态,则更新转换信息表中的所述转换信息条目,以及若会话状态是Request状态,则建立媒体流的通道,并更新转换信息表;
若响应代码既不是200,也不是以1开头的,则删除转换信息表中的所述转换信息条目。
4.如权利要求1所述的基于NAT-PT的SIP应用层网关的实现方法,其特征在于,所述前缀表是以如下方式建立:对于每个连接IPv4网络的SIP应用层网关的端口,建立该端口与地址前缀对应的前缀表,所述地址前缀用于与IPv4地址组成IPv6地址。
5.如权利要求1所述的基于NAT-PT的SIP应用层网关的实现方法,其特征在于,所述地址池中的IPv4地址为连续的同一网段地址或不连续的一组地址。
6.如权利要求1所述的基于NAT-PT的SIP应用层网关的实现方法,其特征在于,所述地址池以位图形式分布,其中每一行代表一个IPv4地址,每一位代表一端口号。
7.如权利要求1所述的基于NAT-PT的SIP应用层网关的实现方法,其特征在于,从所述地址池中选择一IPv4地址和端口的步骤包括:选择与前次所取IP地址相同的地址以及该地址中空闲的端口,或者选择与前次所取IP地址不同的地址以及该地址中空闲的端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100377135A CN101257435B (zh) | 2007-02-28 | 2007-02-28 | 基于nat-pt的sip应用层网关的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100377135A CN101257435B (zh) | 2007-02-28 | 2007-02-28 | 基于nat-pt的sip应用层网关的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101257435A CN101257435A (zh) | 2008-09-03 |
CN101257435B true CN101257435B (zh) | 2011-08-17 |
Family
ID=39891918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100377135A Expired - Fee Related CN101257435B (zh) | 2007-02-28 | 2007-02-28 | 基于nat-pt的sip应用层网关的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101257435B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102008048872A1 (de) * | 2008-09-25 | 2010-04-08 | Siemens Ag Österreich | Verfahren und Einrichtung zur bidirektionalen Adressumsetzung in SIP-gesteuerten Datenströmen zwischen IPv4- und IPv6-Datenendgeräten |
CN103124253B (zh) * | 2011-11-18 | 2018-04-17 | 中兴通讯股份有限公司 | 一种ip协议类型切换的方法和家庭网关 |
CN105450515B (zh) * | 2015-11-12 | 2018-06-12 | 清华大学 | 一种针对应用层协议的IPv4/IPv6数据翻译网关及方法 |
CN107995184B (zh) * | 2017-11-28 | 2020-10-30 | 航信德利信息系统(上海)有限公司 | 一种连接器及使用该连接器通讯的方法 |
CN108011989B (zh) * | 2017-11-30 | 2020-09-15 | 杭州盈高科技有限公司 | 一种重定向方法及装置 |
CN111131315B (zh) * | 2019-12-31 | 2023-04-07 | 西安抱朴通信科技有限公司 | 一种会话连接方法、设备及介质 |
CN111885219B (zh) * | 2020-07-28 | 2023-04-07 | 杭州迪普科技股份有限公司 | 一种基于sip媒体协商的通信方法、装置和nat设备 |
CN114268583B (zh) * | 2021-11-26 | 2024-01-23 | 网络通信与安全紫金山实验室 | 基于sdn的双栈骨干网管理方法、装置、及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1423201A (zh) * | 2001-12-07 | 2003-06-11 | 株式会社日立制作所 | 地址变换装置、消息处理方法及装置 |
CN1674565A (zh) * | 2005-05-10 | 2005-09-28 | 中国科学院计算技术研究所 | 一种用于网络地址转换和协议翻译中的应用层网关的方法 |
-
2007
- 2007-02-28 CN CN2007100377135A patent/CN101257435B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1423201A (zh) * | 2001-12-07 | 2003-06-11 | 株式会社日立制作所 | 地址变换装置、消息处理方法及装置 |
CN1674565A (zh) * | 2005-05-10 | 2005-09-28 | 中国科学院计算技术研究所 | 一种用于网络地址转换和协议翻译中的应用层网关的方法 |
Non-Patent Citations (1)
Title |
---|
沈军等.SIP ALG穿透NAT的实现.《电子技术应用》.2006,(第7期),参见第22-24页,附图5. * |
Also Published As
Publication number | Publication date |
---|---|
CN101257435A (zh) | 2008-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101257435B (zh) | 基于nat-pt的sip应用层网关的实现方法 | |
US6992974B1 (en) | System and method for providing fault tolerance in a network telephony system | |
US7257837B2 (en) | Firewall penetration system and method for real time media communications | |
JP5363461B2 (ja) | グループ呼機能の問い合わせ | |
CN101060532B (zh) | 因特网网络电视业务信息传输方法 | |
CN101369906B (zh) | 一种会议业务实现方法及设备 | |
JP2011147007A (ja) | 通話録音装置及び通話録音システム | |
CN1902889B (zh) | 呼叫建立系统 | |
CN101511072A (zh) | 一种sip或ims网络中实现增强型一号通业务的方法 | |
CN100484104C (zh) | 通信系统中寻址方法 | |
JP4622817B2 (ja) | 着信呼転送装置および着信呼転送方法 | |
CN102484641B (zh) | 用于选择网络资源的方法 | |
US8213373B2 (en) | Supporting method for REFER message expansion parameter | |
CN101179491A (zh) | 私用网络内部终端之间通信的方法、设备、装置及系统 | |
CN101325744A (zh) | 一种根据终端能力触发业务的方法、装置及系统 | |
CN101005708A (zh) | 呼叫跟踪方法、系统及设备 | |
CN101552721B (zh) | 一种融合业务系统及其业务实现方法 | |
CN100596093C (zh) | 智能媒体流旁路的实现方法 | |
CN101247386B (zh) | 媒体流获取方法及其系统、装置 | |
US20050013285A1 (en) | Optimal routing when two or more network elements are integrated in one element | |
CN100499469C (zh) | 离线计费方法 | |
CN100496049C (zh) | Sip多媒体系统中用户面互通方法 | |
CN101741871B (zh) | 会议中隔离或重接isdn用户的方法、系统和接入节点 | |
CN101188546B (zh) | 分组网络业务实现方法、系统及用户签约数据库 | |
KR100673175B1 (ko) | 이기종 망에서의 화상전화 연동 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110817 Termination date: 20150228 |
|
EXPY | Termination of patent right or utility model |