基于路由的会话初始化协议透明穿越网络地址转换的方法

文档序号:7960140阅读:103来源:国知局
专利名称:基于路由的会话初始化协议透明穿越网络地址转换的方法
技术领域
本发明属于计算机网络技术领域,它涉及基于路由的会话初始化协议透明穿越网络地址转换的方法。
背景技术
一个会话(Session)是指用户间的数据交换过程,互联网上大量的应用都需要使用会话的创建与管理功能,这也是IETF提出会话初始化协议(Session Initiation Protocol,简称会话初始化协议)的初衷。在IETF定义的网络协议体系结构中,会话初始化协议协议是位于传输层之上的应用层协议,通过携带可选的SDP(Session DescriptionProtocol)载荷,会话初始化协议协议可以轻松地开启/关闭会话、协商会话参数、建立数据交换流以及管理会话。
在会话初始化协议协议中定义了四种网络元素1.用户代理(User Agent,简称UA)负责发送请求与接受响应;2.代理服务器(Proxy)专门用于转发会话初始化协议消息,进行会话初始化协议路由;3.注册服务器(Registrar)则用于登记用户的登陆位置;4.重定向服务器(Redirect Server)管理并通知用户的当前登录位置。
因此可以将会话初始化协议网络元素划分为客户端与服务端,在当前大多数的会话初始化协议实现中,也往往把用户代理放在个人主机上,譬如KPhone,把代理服务器、注册服务器与重定向服务器作为一个整体服务器实现,如SER。对于后三者,会话初始化协议协议并没有规定如何实现,以及它们之间使用的通信协议,我们将统一用代理服务器代表代理服务器、注册服务器、重定向服务器的统一体。
IETF在设计会话初始化协议协议时广泛借鉴了已有的互联网协议,譬如HTTP、SMTP等,采用了基于文本的编码方式,这是会话初始化协议协议的最大特点之一。会话初始化协议的标准(RFC 3261)主要介绍了会话初始化协议的消息格式、如何进行通信以及消息的转发机制,会话初始化协议最大的特点就是提供在应用层定位通信对方的能力以及消息在应用层的路由机制,这是会话初始化协议灵活性的重要体现,然而在应用层数据中包含大量的地址信息,也是造成会话初始化协议穿越网络地址转换困难的根本原因。网络地址转换技术就是解决互联网地址匮乏与主机访问互联网需求之间矛盾的方式之一,它通过把内部地址映射成合法的外部地址或者端口,来实现内外的连接。传统的网络地址转换设备至多包含传输层以下的转换,即仅转换数据包中IP头的地址信息或者包括TCP/UDP头的端口信息,以此实现内外网络通信的方法。然而在会话初始化协议消息中包含了大量而必要的地址信息,这些信息可以用于在会话初始化协议网络元素中进行应用层路由,同时会话初始化协议消息作为应用层的协议,是携带在TCP包或者UDP包中的。因此很明显,网络地址转换设备对于转发类似于会话初始化协议的应用层消息,特别是在消息中携带了地址信息,并且用于消息路由的报文,是无能为力的,会话初始化协议消息只能在内部或者只能在外部互联网上传输,一旦跨越网络地址转换,则该消息就将无法使用,因为内部网络的地址是无法被外部网络所识别,并正确转发的。
从会话初始化协议协议的提出开始,研究人员就开始关注会话初始化协议穿越网络地址转换的问题。由于其中转换涉及大量的会话初始化协议语义分析,其所携带的会话描述协议(SDP)载荷往往用于开启之后的数据流,在网络地址转换上需要创建至少两条以上的地址映射,分别用于会话初始化协议会话与RTP通信,因此会话初始化协议网络地址转换的穿越方案中考虑最多的是效率问题。目前,会话初始化协议穿越网络地址转换的实现方法各异有的直接在网络地址转换上实现会话初始化协议应用层网关,有的通过扩展会话初始化协议协议,还有的则使用网络地址转换穿越协议,譬如STUN、MidCom、ICE等。然而这些方法实际上都对网络地址转换网络的拓扑进行了假设在内网至少有一个服务器代理与外部的通信,这个服务器可能是代理服务器,也有可能是STUN、ICE客户端等等,即使使用扩展会话初始化协议的方案也需要会话初始化协议客户端软件的支持。这极大限制了会话初始化协议网络实施的灵活性与扩展性,也限制了会话初始化协议应用的推广。

发明内容
本发明的目的是解决使用传统方案进行会话初始化协议穿越网络地址转换时,对网络拓扑以及应用系统的诸多限制,同时也有助于解决网关设备存储利用率与分析处理效率低的问题,为了实现上述目的,本发明提供了一种高效而且透明的基于路由的会话初始化协议透明穿越网络地址转换的方法。
本发明基于路由的会话初始化协议透明穿越网络地址转换的方法,包括步骤相关头域字段解析步骤网络地址转换(NAT)设备对接收到的会话初始化协议(SIP)报文中网络地址转换路由相关头域字段进行解析;堆栈组成步骤将各类路由相关的头域字段按头域类型的不同组成不同的堆栈;堆栈存放步骤将会话初始化协议报文利用路由相关的类头域字段路由所经过的各个会话初始化协议节点的IP地址存放在堆栈中;会话初始化协议节点定位步骤在堆栈中,将网络地址转换设备前后相邻的会话初始化协议节点定位;建立映射条目结合步骤会话初始化协议消息中的头域字段中的地址信息,头域在会话初始化协议路由中的作用以及会话初始化协议报文是否首次到达,决定是否为会话初始化协议类节点在网络地址转换表中建立映射条目;建立会话初始化协议会话步骤当与上述会话初始化协议消息属于同一会话的会话初始化协议报文到达网络地址转换设备时,依据已建立的网络地址转换映射条目进行相同的分析,替换头域字段批中的内网/外网IP地址,从而完成会话初始化协议会话的成功建立。
本发明的优点在于1、本发明的方法解决了传统会话初始化协议报文在网络地址转换穿越时,对网络地址转换网络拓扑以及会话初始化协议应用系统的诸多限制,本发明将所有系统的变化集中在网络地址转换设备的包处理逻辑中,从而保持了会话初始化协议在网络地址转换环境中扩展性与灵活性。
2、本发明的方法对一个会话初始化协议会话最多生成两条网络地址转换映射条目(分别用于会话初始化协议、RTP),会话初始化协议消息中所有类型的,需要进行内网/外网地址映射的头域字段的IP地址,或者需要为其创建新的映射条目,或者源于现存网络地址转换映射条目,本发明避免了一些传统会话初始化协议穿越网络地址转换方案需要为每类头域都耗费网络地址转换存储空间的缺陷。
3、本发明的方法运用构造路由堆栈,然后查找堆栈的办法,将会话初始化协议的网络地址转换穿越问题转化为对堆栈中特定元素定位的问题,有助于提高网关设备的计算效率。


通过以下结合附图的详细描述,本发明的上述和其它方面、特征和优点将变得更加显而易见。附图中图1是本发明使用Record-Route栈设计分析替换算法图示图2是本发明使用Record-Route头域分析算法流程3是本发明会话初始化协议穿越网络地址转换五类网络拓扑结构示意4是本发明会话初始化协议穿越网络地址转换五类网络拓扑结构示意5是本发明会话初始化协议穿越网络地址转换五类网络拓扑结构示意图具体实施方式
下面结合附图对本发明作具体说明。应该指出,所描述的施例仅仅视为说明的目的,而不是对本发明的限制。
图1是本发明基于路由的会话初始化协议透明穿越网络地址转换的方法使用Record-Route栈设计分析替换算法图示,以Record-Route头域分析为例,介绍“栈模式”的分析过程;图2是本发明基于路由的会话初始化协议透明穿越网络地址转换的方法Record-Route头域分析算法流程图,则是经过总结后的Record-Route头域的处理流程;头域字段是分析的基本单位,在互联网工程任务组(IETF)提出的RFC 3261(会话初始化协议Session Initiation Protocol)中明确指出会话初始化协议消息的最基本单位是消息头域(会话初始化协议Header),每个消息头域有自己的名称,通常在一行文本中表示成namevalue的形式,并且使用与HTTP类似的语法。会话初始化协议消息以开始行(start-line)开始,请求消息的开始行为请求行(request-line),而响应消息的开始行为状态行(status-line)。最后会话初始化协议消息可以携带会话描述协议(SDP)载荷,以此协商RTP参数。
根据本发明技术方案,所述的网络地址转换相关的头域字段步骤包括Contact、Content-Length、Content-Type、From、Record-Route、Route、To、Via、CSeq、Expires共10个头域字段,其中Content-Length与Content-Type是与SDP消息解析相关联的头域字段,Cseq仅在响应中判断该响应消息所对应的请求类型,本身不做任何修改,Expires表示通信地址的时效,只是用于提供网络地址转换为会话初始化协议消息建立映射条目的超时信息,也无须修改。此外请求消息的请求行也携带着通信对方的请求统一资源定位符(Request URI),作为唯一标识通信主体的记号,可能包含主机的地址信息,也需要转换。对于会话初始化协议消息的消息体部分——会话描述协议SDP)载荷的分析涉及RTP地址的转换,在实现中对它单独设计,不属于本发明的内容。对于不属于网络地址转换分析范围的头域,一律予以跳过,以提高效率,这样分析的范围就限制在Contact、Record-Route、Route、From、To、Via、RequestURI这7个字段中。
根据本发明技术方案,在所述的堆栈组成步骤中,将与路由相关的头域字段按类型的不同组成不同堆栈的实现过程包括堆栈步骤将网络地址转换设备接收到的会话初始化协议消息中的路由相关的头域字段(Via、Record-Route、Route),按照在会话初始化协议消息中出现的先后顺序排列成一个堆栈,位置靠前的为栈顶,表示最后经过的会话初始化协议节点;位置靠后的为栈底,表示最早经过的会话初始化协议节点,先进先出。
分析步骤将该栈放入网络地址转换环境中分析,分析内容包括分析当前堆栈的特征与形式,定位网络地址转换所分隔的内外网分界线位置;栈中表示与网络地址转换相邻节点在会话初始化协议消息路由的具体作用;这些节点应该做怎样的内外地址转换才能保证本次消息、以及后继消息都可以顺利通过网络地址转换设备;根据本发明技术方案,在所述的堆栈步骤中,Via、Record-Route、Route头域字段在会话初始化协议路由机制中的行为非常类似,具体为在首次路由发现过程中,会话初始化协议协议将所经过的每个中间元素(代理服务器或者提供转发功能的用户代理)地址依次记录到某类头域字段中,添加到会话初始化协议消息中,此后的实际路由中,中间元素每收到一条会话初始化协议消息,检查当前会话初始化协议消息头域字段中的第一个地址是否指向自身,若是则从会话初始化协议消息中删除指向自身的地址记录,把新消息转发给当前会话初始化协议消息头域字段中第一个元素所指向的主机。
根据本发明技术方案,在所述会话初始化协议节点定位步骤中在堆栈中定位及为会话初始化协议类节点在网络地址转换表中建立映射条目的实现过程如下堆栈查找步骤在堆栈中查找连续的两个元素,其中一个元素记录的IP地址信息属于外网,另一个元素记录的IP地址信息则属于内网,出现这样特征的堆栈表示这两个元素位于网络地址转换设备附近;分析节点步骤根据会话初始化协议消息的类型、头域字段的类型,分析这两个元素是位于网络地址转换设备两侧的节点,还是位于同一网络,最接近网络地址转换设备的两个节点,以及位于哪个网络;确定位置步骤根据分析节点步骤分析得出在该会话初始化协议报文的路由线路上,与网络地址转换设备最接近、份处于内网与外网的两个节点,从而获得堆栈中表示内网与外网的分界线位置;地址替换步骤根据会话初始化协议后继消息使用头域路由的方式不同,确定这两个节点中谁需要进行内网/外网地址替换,用需要替换的节点网络地址查询网络地址转换的内网/外网地址映射表,若表中不存在相应记录,则需要为其创建一条新的映射条目,用该映射地址替换对应会话初始化协议消息报文中的头域字段;转发步骤对在所有类型头域分析、修改,将新的会话初始化协议报文转发给目的地址。
根据本发明技术方案,在所述的建立映射条目结合步骤中依据已建立的网络地址转换映射条目,进行内网/外网IP地址替换的实现过程如执行会话初始化协议节点定位步骤,差别在于执行地址替换步骤中不再需要创建新的映射条目,直接查找网络地址转换设备中的内网/外网地址映射表,用表中的映射地址替换对应会话初始化协议消息报文中的头域字段。
根据本发明,堆栈组成、分析步骤,具体地,针对本发明的附图1,对“栈模式”分析Record-Route头域过程在一次网络双方通讯中,Record-Route头域在会话初始化协议消息的路由过程中发挥的作用就是用于构造通信双方的Route路径呼叫方首先发出INVITE请求消息,请求消息在到达对方前,沿途愿意转发会话初始化协议请求消息的代理服务器,在收到请求消息后用本机的接收地址、端口构造一条新的Record-Route记录,并插入到会话初始化协议消息中所有Record-Route头域前,从而形成一个有序的地址列表。将请求消息中所有Record-Route头域按在会话初始化协议消息中的顺序设想为“Record-Route栈”。被呼叫方根据收到的会话初始化协议请求消息相应地发出会话初始化协议响应消息,Record-Route栈被原封不动地拷贝至响应消息;同时将其倒置作为本次会话被呼叫方与呼叫方通信的Route栈。当响应消息沿原路返回时,呼叫方直接把响应中的Record-Route栈作为Route栈。通信双方就同时拥有一条中间节点相同,但是顺序相反的路径,此后二者用各自的Route栈路由会话初始化协议请求,也就是说呼叫方与被呼叫方后继发出的会话初始化协议请求消息将沿着方向相反的同一条路由线路进行转发。
图1中假设四个代理服务器愿提供转发服务,分别为RR0、RR1、RR2、RR3,数字表示其先后顺序。虚线为网络地址转换定义的网域界限,由于呼叫未必始于内网,所以用网域1、网域2分别指代两个独立网络。因为一次会话初始化协议会话,包括发出的请求消息和返回的响应,它们都携带着Record-Route记录,可视作同一个Record-Route栈在整个会话过程中需要进行的两次内网/外网地址转换,第一次转换表示对请求消息中的Record-Route进行转换,第二次则表示对响应消息进行转换,所以下面对应这两次转换将网络地址转换接受的会话初始化协议消息按照是其类型是请求还是响应分别进行分析。
对于网络地址转换接受的请求当呼叫请求消息首次过网络地址转换时,Record-Route栈已按序记录RR0与RR1,此时若不对请求消息转换,则根据Record-Route的语义,被呼叫方构造的Route栈将依次为RR3-RR0,当被呼叫方发出请求消息时,请求消息到达节点RR2就会结束,因为RR2可能不识别网域2的节点地址RR1。由于这种情况仅出现在网域2为内网时(内网能识别互联网地址),所以网络地址转换接收到INVITE消息时,检查Record-Route栈顶地址是否来自内网,若是则创建网络地址转换映射条目RR1→RR1’,并替换栈顶地址,来自外网则直接转发。
对于网络地址转换接受的响应被呼叫方发出响应,将Record-Route栈拷贝到响应沿原路返回。若呼叫始于内网,则当响应经RR2转发给网络地址转换时,要对之前已替换的地址反向替换,否则呼叫方发出的请求将在节点RR0转发给外网RR1’时错误;若呼叫始于外网,那么网络地址转换在收到响应时应对栈中位于网域边缘的RR2构造映射RR2→RR2’,否则呼叫方依据响应建立的Route栈将无法穿越网络地址转换。通过简单的内外地址辨别可得RR1与RR2位置——两条连续RR记录分属不同域。
此外还应考虑特例分界点前后仅有一个或无代理服务器的情况。请求依然替换栈顶,对响应处理时分界点的判断则需调整。从呼叫方看,网络地址转换之前若仅一个代理服务器(RR0不存在),若呼叫始于内网,响应Record-Route栈中将无法发现分界点,但栈底地址为网络地址转换分配地址,那么可确定分界点在栈底RR1与之后的RR2之间;若呼叫始于外网判断法不变。若网络地址转换之前未架设代理服务器(无RR0、RR1),呼叫来自内网,检查响应的Record-Route栈未发现内网地址或网络地址转换分配地址,那么栈底必为内网地址,必须为其构造映射条目并替换;分界点在网络地址转换之后的情况同理分析。每次至多处理一条Record-Route记录,剩下的Record-Route字段直接略过,以提高效率。
根据本发明,具体地,路由相关头域字段解析步骤如图2所示,Record-Route头域的具体处理流程如下步骤S1网络地址转换设备接收到会话初始化协议消息,搜索会话初始化协议消息获得一条Record-Route头域字段记录。
步骤S2网络地址转换设备根据先前分析开始行(start-line),获得的会话初始化协议消息的类型是请求还是响应分别处理,请求转入步骤S3,响应转入步骤S4。
步骤S3根据分析开始行(start-line)可判断会话初始化协议消息始于内网/外网,始于内网转入步骤S5,否则转入步骤S14。
步骤S4保存当前Record-Route头域字段记录,转入步骤S7。
步骤S5若当前获得的Record-Route就是栈顶元素,也就是第一条Record-Route记录那么转入步骤S6,否则转入步骤S14。
步骤S6用Record-Route的IP地址搜索网络地址转换设备中的内网/外网地址映射表,若不存在相应映射条目,则创建新的映射条目,并替换对应Record-Route头域字段中的IP地址信息,否则直接用已有的映射条目替换,转入步骤S14。
步骤S7若当前记录的Record-Route中IP地址与本次消息的目的地址属于同一网络,则转入步骤S9,否则转入步骤S8。
步骤S8若在会话初始化协议消息中,当前Record-Route头域字段之后还有Record-Route尚未分析,则转入步骤S1,继续获得下一条Record-Route记录。
步骤S9若本次响应对应的呼叫始于内网,那么转入步骤S10分析,否则转入步骤S11。
步骤S10若当前记录的Record-Route的IP地址属于内网,而且会话初始化协议消息中前一个Record-Route记录属于外网地址,那么转入步骤S12,否则转入步骤S13。
步骤S11若当前记录的Record-Route的IP地址属于外网,而且会话初始化协议消息中前一个Record-Route记录属于内网地址,那么转入步骤S12,否则转入步骤S13。
步骤S12需要替换前一个Record-Route记录中的IP地址,首先查询网络地址转换中的内网/外网映射表,若不存在映射条目,则创建新的映射条目,并替换对应Record-Route头域字段中的IP地址信息,否则直接用已有的映射条目替换,转入步骤S13。
步骤S13需要替换的是当前的Record-Route记录的IP地址,执行替换操作同步骤S13,转入步骤S14。
步骤S14已经完成会话初始化协议消息中IP地址的网络地址转换映射与替换,跳过剩余上未分析的Record-Route记录,结束对Record-Route头域的分析。
为了检验方案的透明性(也称完备性),必须验证其对于任何会话初始化协议拓扑,都无需会话初始化协议软件做任何修改、配置,就能正常通信。因此首先需要找出所有可能的会话初始化协议网络地址转换拓扑环境。在RFC 3261并未对会话初始化协议的拓扑做出任何规定,用户可以采用任意的方式实现会话初始化协议通信,即对会话初始化协议路由的中间节点如何部署不做规定,那么放入网络地址转换环境,将产生大量可能的拓扑,不利于完备性验证。因此我们采用约减法对所有拓扑模式进行归纳两台UA进行通信时,若某个中间节点所扮演的角色仅仅是在同一网域内的会话初始化协议消息路由,转发的会话初始化协议消息并不经过网络地址转换,那么这些位于同一网域的代理服务器就可看作是一个代理服务器节点。
根据本发明所述,可以得到以下五类简化拓扑,如图3、图4、图5所示附图3采用拓扑模式为①和②,图3中有三个用户代理为用户代理1、用户代理2、用户代理3、内网、外网、代理服务器、网络地址转换设备网络地址转换;附图4拓扑模式为③和④,其它部分表示相同;附图5拓扑模式为⑤,其它部分表示相同。
在图中虚线表示实际通信的双方用户代理,虚线上方用带圈数字表示不同的数据流①表示网络拓扑中唯一的代理服务器位于内网,分处于内外网络中的用户代理1与用户代理2通过代理服务器通话,对应附图3,带圈数字①所表示的数据流;②表示用户代理2与用户代理3均处于外网,但依靠内网代理服务器通话,对应附图3带圈数字②所表示的数据流;③表示代理服务器位于外网,内网的用户代理1与外网的用户代理3通过代理服务器通话,对应附图4带圈数字③所表示的数据流;④表示两台处于内网的用户代理1和用户代理2同时使用外网代理服务器联络,对应附图4带圈数字④所表示的数据流;⑤表示用户代理1和用户代理2分别位于内、外网络,通过各自域内的代理服务器为它们转发消息,对应附图5带圈数字⑤所表示的数据流;上面描述是用于实现本发明及其实施例,上述各个步骤均为示例,本发明的范围不应由实施例的描述来限定,本领域普通技术人员可以根据实际情况确定要使用的实际步骤,而且各个步骤的有多种实现方法,这些均应属于本发明的范围。本领域的技术人员应该理解,在不脱离本发明的范围的任何修改或局部替换,均属于本发明权利要求来限定的范围。
权利要求
1.一种基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于,其实现方法步骤包括将会话初始化协议路由机制和具有网络地址转换的网络拓扑环境结合起来;相关头域字段解析步骤利用网络地址转换设备对接收到的会话初始化协议报文中网络地址转换路由相关头域字段进行解析;堆栈组成步骤将各类路由相关的头域字段按头域类型的不同组成不同的堆栈;堆栈存放步骤将会话初始化协议报文利用路由相关的类头域字段路由所经过的各个会话初始化协议节点的IP地址存放在堆栈中;会话初始化协议节点定位步骤在堆栈中,将网络地址转换设备前后相邻的会话初始化协议节点定位;建立映射条目结合步骤会话初始化协议消息中的头域字段中的地址信息,头域在会话初始化协议路由中的作用以及会话初始化协议报文是否首次到达,决定是否为会话初始化协议节点在网络地址转换表中建立映射条目;建立会话初始化协议会话步骤当与上述会话初始化协议消息属于同一会话的会话初始化协议报文到达网络地址转换设备时,依据已建立的网络地址转换映射条目进行相同的分析,替换头域字段批中的内网/外网IP地址,从而完成会话初始化协议会话的成功建立。
2.根据权利要求1所述的基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于,所述的网络地址转换相关的头域字段步骤包括Contact、Content-Length、Content-Type、From、Record-Route、Route、To、Via、CSeq、Expires,其中Content-Length与Content-Type是与会话描述协议消息解析相关联的头域字段;Cseq仅在响应中判断响应消息所对应的请求类型本身不做任何修改;Expires表示通信地址的时效,是用于提供网络地址转换为会话初始化协议消息建立映射条目的超时信息,请求消息的请求行携带着通信对方的请求同一资源定位符,作为唯一标识通信主体的记号,可能包含主机的地址信息,也需要转换;对于会话初始化协议消息的消息体部分会话描述协议载荷的分析涉及RTP地址的转换;对于不属于网络地址转换分析范围的头域,一律予以跳过,分析的字段范围为Contact、Record-Route、Route、From、To、Via、Request URI。
3.根据权利要求1所述的基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于,所述的堆栈组成步骤,将与路由相关的头域字段按类型的不同组成不同堆栈包括堆栈步骤将网络地址转换设备接收到的会话初始化协议消息中的路由相关的头域字段Via、Record-Route、Route,按照在会话初始化协议消息中出现的先后顺序排列成一个堆栈,位置靠前的为栈顶,表示最后经过的会话初始化协议节点;位置靠后的为栈底,表示最早经过的会话初始化协议节点,先进先出;分析步骤将所述的堆栈放入网络地址转换环境中分析,分析内容包括分析当前堆栈的特征与形式,定位网络地址转换设备所分隔的内外网分界线位置;堆栈中表示与网络地址转换设备相邻节点在会话初始化协议消息路由的具体作用;这些节点应该做怎样的内外地址转换才能保证本次消息、以及后继消息都可以顺利通过网络地址转换设备。
4.根据权利要求3所述的基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于,在所述的堆栈步骤中,Via、Record-Route、Route头域字段与在会话初始化协议路由机制中的行为类似,具体为在首次路由发现过程中,会话初始化协议协议将所经过的每个中间元素地址依次记录到某类头域字段中,添加到会话初始化协议消息中,此后的实际路由中,中间元素每收到一条会话初始化协议消息,检查当前会话初始化协议消息头域字段中的第一个地址是否指向自身,若是则从会话初始化协议消息中删除指向自身的地址记录;把新消息转发给当前会话初始化协议消息头域字段中第一个元素所指向的主机。
5.根据权利要求1所述的基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于,在所述的会话初始化协议节点定位步骤中,在堆栈中定位及为类节点在网络地址转换表中建立映射条目的实现过程如下堆栈查找步骤在堆栈中查找连续的两个元素,其中一个元素记录的IP地址信息属于外网,另一个元素记录的IP地址信息则属于内网,出现这样特征的堆栈表示这两个元素位于网络地址转换设备附近;分析节点步骤根据会话初始化协议消息的类型、头域字段的类型,分析这两个元素是位于网络地址转换设备两侧的节点,还是位于同一网络,最接近网络地址转换设备的两个节点,以及位于哪个网络;确定位置步骤根据分析节点步骤得出在该会话初始化协议报文的路由线路上,与网络地址转换设备最接近、处于内网与外网的两个节点,从而获得堆栈中表示内网与外网的分界线位置;地址替换步骤根据会话初始化协议后继消息使用头域路由的方式不同,确定这两个节点中谁需要进行内网/外网地址替换,用需要替换的节点网络地址查询网络地址转换的内网/外网地址映射表,若表中不存在相应记录,则需要为其创建一条新的映射条目,用该映射地址替换对应会话初始化协议消息报文中的头域字段;转发步骤对所有类型头域分析、修改,将新的会话初始化协议报文转发给目的地址。
6.根据权利要求1所述的基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于在所述的建立映射条目结合步骤依据已建立的网络地址转换映射条目,执行会话初始化协议节点定位步骤进行内网/外网IP地址替换,执行地址替换步骤不再需要创建新的映射条目,直接查找网络地址转换设备中的内网/外网地址映射表,用表中的映射地址替换对应会话初始化协议消息报文中的头域字段。
7.根据权利要求2所述的基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于路由相关头域字段解析步骤,Record-Route头域的具体处理流程如下步骤S1网络地址转换设备接收到会话初始化协议消息,搜索会话初始化协议消息获得一条Record-Route头域字段记录;步骤S2网络地址转换设备根据先前分析开始行(start-line),获得的会话初始化协议消息的类型是请求还是响应分别处理,请求转入步骤S3,响应转入步骤S4;步骤S3根据分析开始行(start-line)可判断会话初始化协议消息始于内网/外网,始于内网转入步骤S5,否则转入步骤S14;步骤S4保存当前Record-Route头域字段记录,转入步骤S7。步骤S5若当前获得的Record-Route就是栈顶元素,也就是第一条Record-Route记录,转入步骤S6,否则转入步骤S14;步骤S6用Record-Route的IP地址搜索网络地址转换设备中的内网/外网地址映射表,若不存在相应映射条目,则创建新的映射条目,并替换对应Record-Route头域字段中的IP地址信息,否则直接用已有的映射条目替换,转入步骤S14;步骤S7若当前记录的Record-Route中IP地址与本次消息的目的地址属于同一网络,则转入步骤S9,否则转入步骤S8;步骤S8若在会话初始化协议消息中,当前Record-Route头域字段之后还有Record-Route尚未分析,则转入步骤S1,继续获得下一条Record-Route记录;步骤S9若本次响应对应的呼叫始于内网,转入步骤S10分析,否则转入步骤S11;步骤S10若当前记录的Record-Route的IP地址属于内网,而且会话初始化协议消息中前一个Record-Route记录属于外网地址,转入步骤S12,否则转入步骤S13;步骤S11若当前记录的Record-Route的IP地址属于外网,而且会话初始化协议消息中前一个Record-Route记录属于内网地址,转入步骤S12,否则转入步骤S13;步骤S12需要替换前一个Record-Route记录中的IP地址,首先查询网络地址转换中的内网/外网映射表,若不存在映射条目,则创建新的映射条目,并替换对应Record-Route头域字段中的IP地址信息,否则直接用已有的映射条目替换,转入步骤S13;步骤S13需要替换的是当前的Record-Route记录的IP地址,执行替换操作同步骤S13,转入步骤S14;步骤S14已经完成会话初始化协议消息中IP地址的网络地址转换映射与替换,跳过剩余上未分析的Record-Route记录,结束对Record-Route头域的分析。
全文摘要
本发明公开一种基于路由的会话初始化协议透明穿越网络地址转换的方法。该方法将会话初始化协议(SIP)由机制和具有NAT的网络拓扑环境结合,对接收SIP报文解析并与路由相关的头域字段以堆栈方式构建,该堆栈中存放SIP报文路由所经过各个节点的IP地址;在堆栈中定位与网络地址转换(NAT)设备前后相邻的SIP节点,为首次出现的节点在NAT表中建立映射条目;当属于同一会话的SIP报文到达NAT设备时,依据已建立的NAT映射条目对内网/外网IP地址替换,完成SIP会话的成功建立。本发明使SIP应用与服务程序无需任何修改即可应用于各种NAT网络拓扑,同时可以有效提高NAT设备存储利用率与分析处理效率。
文档编号H04L12/56GK101060472SQ20061007564
公开日2007年10月24日 申请日期2006年4月17日 优先权日2006年4月17日
发明者陈沫, 蔡嘉勇, 李丹 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1