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

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

Info

Publication number
CN100586104C
CN100586104C CN200610075645A CN200610075645A CN100586104C CN 100586104 C CN100586104 C CN 100586104C CN 200610075645 A CN200610075645 A CN 200610075645A CN 200610075645 A CN200610075645 A CN 200610075645A CN 100586104 C CN100586104 C CN 100586104C
Authority
CN
China
Prior art keywords
route
record
network address
conversation
address
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
Application number
CN200610075645A
Other languages
English (en)
Other versions
CN101060472A (zh
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN200610075645A priority Critical patent/CN100586104C/zh
Publication of CN101060472A publication Critical patent/CN101060472A/zh
Application granted granted Critical
Publication of CN100586104C publication Critical patent/CN100586104C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种基于路由的会话初始化协议透明穿越网络地址转换的方法。该方法将会话初始化协议(SIP)由机制和具有NAT的网络拓扑环境结合,对接收SIP报文解析并与路由相关的头域字段以堆栈方式构建,该堆栈中存放SIP报文路由所经过各个节点的IP地址;在堆栈中定位与网络地址转换(NAT)设备前后相邻的SIP节点,为首次出现的节点在NAT表中建立映射条目;当属于同一会话的SIP报文到达NAT设备时,依据已建立的NAT映射条目对内网/外网IP地址替换,完成SIP会话的成功建立。本发明使SIP应用与服务程序无需任何修改即可应用于各种NAT网络拓扑,同时可以有效提高NAT设备存储利用率与分析处理效率。

Description

基于路由的会话初始化协议透明穿越网络地址转换的方法
技术领域
本发明属于计算机网络技术领域,它涉及基于路由的会话初始化协议透明穿越网络地址转换的方法。
背景技术
一个会话(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),每个消息头域有自己的名称,通常在一行文本中表示成name:value的形式,并且使用与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仅在响应中判断该响应消息所对应的请求类型,Cseq本身不做任何修改,Expires表示通信地址的时效,只是用于提供网络地址转换为会话初始化协议消息建立映射条目的超时信息,也无须修改。此外请求消息的请求行也携带着通信对方的请求统一资源定位符(Request URI),作为唯一标识通信主体的记号,可能包含主机的地址信息,也需要转换。对于会话初始化协议消息的消息体部分——会话描述协议SDP)载荷的分析涉及RTP地址的转换,在实现中对它单独设计,不属于本发明的内容。对于不属于网络地址转换分析范围的头域,一律予以跳过,以提高效率,这样分析的范围就限制在Contact、Record-Route、Route、From、To、Via、Request URI这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,若存在相应映射条目,直接用已有的映射条目替换,转入步骤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;
步骤S13:需要替换的是当前的Record-Route记录的IP地址,首先查询网络地址转换中的内网/外网映射表,若不存在映射条目,则创建新的映射条目,并替换对应Record-Route头域字段中的IP地址信息,转入步骤S14,若存在映射条目,直接用已有的映射条目替换,转入步骤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带圈数字⑤所表示的数据流;
上面描述是用于实现本发明及其实施例,上述各个步骤均为示例,本发明的范围不应由实施例的描述来限定,本领域普通技术人员可以根据实际情况确定要使用的实际步骤,而且各个步骤的有多种实现方法,这些均应属于本发明的范围。本领域的技术人员应该理解,在不脱离本发明的范围的任何修改或局部替换,均属于本发明权利要求来限定的范围。

Claims (7)

1、一种基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于,其实现方法步骤包括:
将会话初始化协议路由机制和具有网络地址转换的网络拓扑环境结合起来;
相关头域字段解析步骤:利用网络地址转换设备对接收到的会话初始化协议报文中网络地址转换路由相关头域字段进行解析;
堆栈组成步骤:将各类路由相关的头域字段按头域类型的不同组成不同的堆栈;
堆栈存放步骤:将会话初始化协议报文利用路由相关的类头域字段路由所经过的各个会话初始化协议节点的IP地址存放在堆栈中;
会话初始化协议节点定位步骤:在堆栈中,将网络地址转换设备前后相邻的会话初始化协议节点定位以及为会话初始化协议类节点在网络地址转换表中建立映射条目;
建立映射条目结合步骤:会话初始化协议消息中的头域字段中的地址信息,头域在会话初始化协议路由中的作用以及会话初始化协议报文是否首次到达,决定是否为会话初始化协议节点在网络地址转换表中建立映射条目;
建立会话初始化协议会话步骤:当与上述会话初始化协议消息属于同一会话的会话初始化协议报文到达网络地址转换设备时,依据已建立的网络地址转换映射条目进行相同的分析,替换头域字段批中的内网/外网IP地址,从而完成会话初始化协议会话的成功建立。
2、根据权利要求1所述的基于路由的会话初始化协议透明穿越网络地址转换的方法,其特征在于,网络地址转换相关的头域字段包括:Contact、Content-Length、Content-Type、From、Record-Route、Route、To、Via、CSeq、Expires,其中Content-Length与Content-Type是与会话描述协议消息解析相关联的头域字段;
Cseq仅在响应中判断响应消息所对应的请求类型,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,若存在相应映射条目,直接用已有的映射条目替换,转入步骤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;
步骤S13:需要替换的是当前的Record-Route记录的IP地址,首先查询网络地址转换中的内网/外网映射表,若不存在映射条目,则创建新的映射条目,并替换对应Record-Route头域字段中的IP地址信息,转入步骤S14,若存在映射条目,直接用已有的映射条目替换,转入步骤S14;
步骤S14:已经完成会话初始化协议消息中IP地址的网络地址转换映射与替换,跳过剩余尚未分析的Record-Route记录,结束对Record-Route头域的分析。
CN200610075645A 2006-04-17 2006-04-17 基于路由的会话初始化协议透明穿越网络地址转换的方法 Expired - Fee Related CN100586104C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200610075645A CN100586104C (zh) 2006-04-17 2006-04-17 基于路由的会话初始化协议透明穿越网络地址转换的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200610075645A CN100586104C (zh) 2006-04-17 2006-04-17 基于路由的会话初始化协议透明穿越网络地址转换的方法

Publications (2)

Publication Number Publication Date
CN101060472A CN101060472A (zh) 2007-10-24
CN100586104C true CN100586104C (zh) 2010-01-27

Family

ID=38866372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610075645A Expired - Fee Related CN100586104C (zh) 2006-04-17 2006-04-17 基于路由的会话初始化协议透明穿越网络地址转换的方法

Country Status (1)

Country Link
CN (1) CN100586104C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012109865A1 (zh) * 2011-07-30 2012-08-23 华为技术有限公司 私网与网外客户端之间呼叫的nat处理方法、设备和系统
WO2018018607A1 (zh) * 2016-07-29 2018-02-01 深圳市赛亿科技开发有限公司 一种基于报文协议识别的传输协议固定转换方法及装置
US11025608B2 (en) * 2017-11-10 2021-06-01 Cisco Technology, Inc. Enabling zero-touch bootstrap for devices across network perimeter firewalls
CN109218467B (zh) * 2018-11-15 2022-02-25 锐捷网络股份有限公司 一种网络地址转换方法及芯片
CN110519169B (zh) * 2019-08-30 2021-11-26 成都安恒信息技术有限公司 一种应用层复用网络报文头部的方法
CN114531417B (zh) * 2020-10-30 2023-09-22 华为技术有限公司 一种通信方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050100001A1 (en) * 2003-11-12 2005-05-12 Chung-Fan Liu Routing method and SIP server using the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050100001A1 (en) * 2003-11-12 2005-05-12 Chung-Fan Liu Routing method and SIP server using the same

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A SIP Application Level Gateway for NetworkAddressTranslation. B.Biggs.Internet Draft. 2000 *
利用S IP协议扩展实现S IP-NAT网关. 程艳伟,雷为民.小型微型计算机系统,第Vol.24卷第No.1期. 2003 *
针对S IP/NAT问题的RTP中继服务器设计与实现. 张伟,李贯中,雷为民.小型微型计算机系统,第Vol.26卷第No.12期. 2005 *

Also Published As

Publication number Publication date
CN101060472A (zh) 2007-10-24

Similar Documents

Publication Publication Date Title
CN1327355C (zh) 地址变换装置、消息处理方法及服务器
US7330470B2 (en) Router and sip server
US6728267B1 (en) Service capable network
CN101606352B (zh) 下一代网络中用于非sip讲述者的服务网关代理
CN100586104C (zh) 基于路由的会话初始化协议透明穿越网络地址转换的方法
CN101116296A (zh) Voip网络基础架构部件和方法
CN101789904A (zh) 流量控制的方法及设备
CN101385315A (zh) 使用本地网络的私用ip地址的通信
US8423652B2 (en) Service templates for an IP multimedia subsystem
CN104040998A (zh) 基于ice的nat遍历
US6965591B1 (en) System and method for gatekeeper-to-gatekeeper communication
CN102265635A (zh) 用于使用双级寻址方案来路由通信的方法和通信节点
CN101395891A (zh) 表征化异构通信节点的方法与系统
US20080215752A1 (en) Service device, and switching network and switching method for the same
CN103338213A (zh) 本地设备与ims网络互通的方法、系统及接入网关
CN105991793A (zh) 报文转发的方法和装置
US7675902B2 (en) Method for realizing signaling agent based on MEGACO protocol
US8014292B1 (en) Dynamic location routing protocol
US7289486B2 (en) Method for call processing and link test in a VoIP gateway and system thereof
JP3889003B2 (ja) 複数nat/fw装置接続に対応したsip−algの呼関連リソース管理方法及びそのsip−alg
US11316983B2 (en) Method and system for routing of inbound toll-free communications
Amirante et al. Container nats and session-oriented standards: Friends or foe?
Lavinal et al. A next-generation service overlay architecture
CN100450030C (zh) 一种实现呼叫服务等级到承载呼叫的连接的映射方法
US10469539B2 (en) Implementing application level multimedia services as a switching function

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100127

Termination date: 20200417