针对SIP的ALG解决方案及实现

  收稿日期:2002-08-12  作者简介:罗强,(1975-),男,硕士研究生,主要研究方向:计算机网络及应用技术; 许鲁(1962-),山东长青人,男,研究员,主要研究方向:操作系统、网络系统; 常致全(1947-),男,四川中江人,副教授,主要研究方向:数据与信息系统.
文章编号:1001-9081(2003)02-0120-03
针对SIP 的AL G 解决方案及实现
罗 强1,许 鲁1,常致全2
(1.中国科学院计算技术研究所,北京100080; 2.四川大学计算机学院,四川成都610064)摘 要:SIP 是一个很有潜力的基于文本的应用层协议。由于SIP 协议本身不能保证SIP 信令能安全地穿过NA T 和防火墙,从而限制了其在现有广域网上的使用和发展。文中归纳了对该问题的解决方案,重点介绍了AL G 的解决方案,并根据SIP 的特点提出了SIP AL G 的具体实现框架。
关键词:SIP 协议;网络地址翻译;应用级网关;防火墙中图分类号:TP393.08  文献标识码:A
552hSolution and Implementation of AL G B ased on SIP
L UO Qiang 1,XU Lu 1,CHAN G Zhi 2quan 2
(1.Institute of Com puting Technology ,Chinese Academy of Sciences ,Beijing 100080,China ;
2.Com puter College ,Sichuan U niversity ,Chengdu Sichuan 610064,China )沥青透水混凝土
Abstract :SIP is a promising text 2based application 2layer protocol.It can πt be used in NA T or firewall environment ,which deeply cumbers its development on WAN.This paper proposes some relative ways to resolve the problem ,mainly focuses on AL G and provides a detailed framework for SIP AL G.
K ey w ords :session initiation protocol ;network address translation ;application level gateway ;firewall
  SIP (Session Initiation Protocol )是一个应用层控制信令协议,用于建立、更改和终止多媒体会话或呼叫,其特点是简单、便于扩展和扩充,而且SIP 的概念与Internet 的出发点一致,借鉴了许多已有的Internet 协议,是实现增值综合业务的理想手段,具有很好的发展潜力。针对SIP 对NA T 防火墙的局限性,本文介绍了相关解决方案,其中重点描述了SIP AL G (Application Level G ateway )及其实现。
对于SIP AL G ,B Biggs 在文献[2]中对其实现做了一定分析,对报文修改提出了一些建议,但提出没有具体实现框架。本文根据SIP 和AL G 的具体特点,进一步给出了一个
SIP AL G 的详细实现框架。
1 问题的提出
NA T (Network Address Translation ,网络地址翻译)是一
种将一个IP 地址域映射到另一个IP 地址域技术,目前广泛用于私有地址域与公用地址域的转换以解决IP 地址匮乏问题。NA T 可以分为SNA T (S ource NA T ,源网络地址翻译)和
DNA T (Destination NA T ,目的网络地址翻译)两种类型,分别
完成对向外的源地址和向内的目的地址的翻译。
SIP 主要借鉴了HTTP 和SM TP ,是一个基于文本的应
用层协议,会话建立的有关地址信息的描述信息在SIP 消息内。当NA T 存在时,会导致NA T 外和NA T 内的用户之间无法从SIP 消息中得到有效的地址信息,无法完成正常的会话建立过程。
如图1所示,以两个UA (User Agent 用户代理)间的直接呼叫建立SIP 连接的简单情况为例,当NA T 内的客户B 向
调料盒Internet 上的SIP 客户A 发送INV ITE 请求时,请求的消息头
为:
INVITE :UserA @159.226.39.2SIP/2.0Via :SIP/2.0/UDP 10.10.1.2:5060∗∗(略)
INV ITE 消息的源IP 地址在经过NA T 后,被翻译为159.226.39.3:6000,然而在SIP 协议中,这里的客户A 不会按此地址返回100(Trying )回答,而是按Via 中的10.10.1.2:5060返回。由于这是个私有地址,因此相应的回答不会被发
送到B 中去,连接无法建立。
同样地,对于SIP 所控制的媒体流的传输,有关的地址和参数信息的传送在SIP 消息的SDP 消息体内。因此,除了消息本身,SIP 所控制的媒体流的传输也无法完成
图1 有NAT 情况下的SIP 连接
2 针对NA T 的SIP 解决方案
对于SIP 穿越NA T 的问题RFC2543中提出了一些解决方法,定义了一些相关的头和参数,例如专用来标识出消息中有私有地址的使用Via 头域中的Receiver 2tagged 等。就目前所提出的对NA T 的SIP 解决方案来看,主要集中在以下几个
第23卷第2期mncc
2003年2月
计算机应用
Computer Applications
Vol.23,No.2Feb.,2003
方面:
1)RSIP技术
RSIP(Real Specific IP)是IETF NA T工作组提出的一个新的协议,用于解决NA T防火墙网络地址翻译带来的问题。RSIP客户端位于内网,但采用外网地址与外部主机发生联系建立端到端通信。任何一方发起呼叫所构造的呼叫建立控制信令包中所包含的地址都是外网中唯一的公有地址。采用RSIP协议后,进行地址转换时不需要对控制数据包的内容进行解析和变换,这样简化了地址变换的复杂度。
RSIP等类似的技术的问题在于,目前协议尚未成为标准。要求所有主机都能支持相关协议。因此,这是一个很有前景的解决方案,但对解决目前存在的问题不太实用。
2)SIP Proxy
另一种办法是对SIP系统作相应扩充,具体如Fredrik在文献[6]中提出的使用MG CP(media gateway control protocol,媒体网关控制协议),来控制防火墙打开/关闭端口完成NAT的穿越。又例如使用midcom[4],也就是使用一个用户代理或代理服务器来控制防火墙。这一类的解决方案实际上都是在现有的SIP系统之外构造一个SIP proxy来控制NAT和防火墙, proxy根据SIP消息做相应的动作,从而实现NAT的穿越。
这种解决方案可操作性较强,同时也能较好地解决相应的问题,但缺点是需要构造额外的服务器来实现系统的穿越,此外同样需要增加对相关协议的支持,代价较高。
3)SIP AL G
AL G是解决NA T带来的局限问题的一个比较常用的手段。SIP AL G内置于NA T网关上,分析和修改进出NA T的SIP报文,根据报文内容在NA T防火墙上打开相应的端口,使相关SIP消息和媒体流能进入NA T内部。同时修改报文中的相关消息头和参数的值,从而完成一个完整的SIP会话。
SIP AL G最突出的特点是AL G和具体的SIP系统无关。NA T外的SIP客户将不会知道NA T的存在,NA T内的客户能自由地穿越NA T防火墙,完成到Internet上的注册或SIP 呼叫连接等。对于一个SIP系统不需要做任何修改,只要在相应的NA T网关上加载SIP AL G,就能完成私有网络到公共Internet甚至私有网络之间的两个客户之间的SIP连接。
由上面的分析可以看出,透明性和通用性是AL G相对于前面两种方案的最大优点。虽然在NA T防火墙上内置AL G 会一定程度上降低NA T网关的效率,但几种方法相比较,我们仍认为SIP AL G是目前性价比最好的NA T/firewall的SIP 解决方案。
3 SIP AL G的实现
从逻辑上看,一个SIP AL G可以分成两个主要的部分,一部分实现对向外报文的修改,将对应私有地址修改为NA T 网关上对应的Internet上的公共地址,一部分控制NA T完成对向内的消息和相关媒体流
的转发。AL G通过这两个部分完成不同NA T间的SIP连接。因此,一个基本的SIP AL G 的实现框架应包括转发模块和消息修改模块两个模块的内容。
家庭智能控制系统
下面以一个典型的两个不同NA T内的客户通过Register Server完成连接的过程为例来说明SIP AL G的两个功能模块具体实现。本文主要讨论SIP以UDP实现时的情况。
如图2所示,User1和User2分别位于不同的私有网络中,在公共Internet上设置了注册服务器,User1和User2的NA T防火墙上分别配置SIP AL G
图2 NAT间通过AL G实现SIP连接
3.1 相关实现条件
RFC2543中规定了30多个头,但一个基本的SIP呼叫过程可以只包含其中的几个。比较重要的主要的几个头域为: Request2URI、Via、From、To、Call2ID、Cseq、Content2Type、Content2Length和Contact。大部分SIP系统提供的UA都支持这几个头,这几个头中携带了会话过程中的基本地址信息,通过它们基本上已经能完成一个较完整的SIP呼叫,因此本文中AL G主要分析这几个头。
RFC2543中对SIP请求(Request)定义了INV ITE、ACK、OPTIONS、B YE、CANCEL和REGISTER6个方法。其中, INV ITE、ACK、B YE和REGISTER这几个方法基本上能完成一个相对完整的SIP呼叫建立过程。本文主要讨论这4个重要的方法的处理过程。
同样地,协议中对SIP回答(Response)定义了相关的回答,本文主要分析的几个和基本连接直接相关的状态码为100(Trying),180(Ringing),200(O K)。
3.2 对消息和媒体流转发模块的实现
AL G的一个重要的功能就是在NA T防火墙上打开相应端口,完成对相应的SIP消息和媒体流向NA T内的转发,即实现相应的DNA T的功能。转发模块在AL G中建立并维护一个地址映射信息表来记录相关的地址映射信息。消息修改模块通过该表来确定对经过AL G的报文的具体修改。
表1 地址映射信息表
User Source IP Sport Destination IP Dport
User110.10.1.25060159.226.39.46000
∗∗
上表中的数据表示所有目的地址为159.226.39.4:6000的SIP包都会被NA T网关转发到主机10.10.1.2:5060上处理。消息修改模块在作修改前,要首先查询AL G内记录的地址映射信息表,如果表内已经建立了该用户的信息,则按此信息对向NA T外的SIP消息做相应的修改,否则丢弃该消息。
为了生成相关地址映射信息表,AL G首先需要分析向外的SIP消息,主要分析其中的REGISTER消息。AL G记录REGISTER中的To和Contact头域,按它们的值在NA T防火墙上打开一个未用端口,然后AL G记录生成的映射信息并填入地址映射信息表。生成地址映射信息表后,消息修改模块再按映射信息修改向外的INV ITE和REGISTER等报文,使后面向内的SIP消息能进入NA T内部。
此外,对SIP控制的向内的媒体流的转发,AL G分析向
121
2003年罗强等:针对SIP的AL G解决方案及实现   
外的INV ITE和200(O K)消息的SDP消息体中“m=”和“c =”行,对应这两行中描述地址在NA T防火墙上打开未用端口,完成向内接收媒体流的目的地址翻译,从而实现媒体流通信的建立。机读答题卡
AL G记录会话状态,当SIP呼叫结束后,AL G关闭媒体流DNA T端口。当用户取消注册后,关闭SIP消息DNA T端口,删除记录的对应地址映射信息。在具体实现上,DNA T的实现会因不同的NA T实现类型而有所不同。
3.3 对消息的修改模块的实现
AL G对SIP消息的修改,在转发模块完成DNA T并填写地址映射信息表后,NA T内SIP消息向外通过AL G时发生。AL G先查询地址映射信息表的有关的映射信息,然后按地址映射信息对SIP消息做相应的修改。对消息的修改具体地可以分为下面几种情况,以图中的INV ITE请求为例:
1)对Via头域的修改
Via记录请求所通过的路径。
Via:SIP/2.0/UDP10.10.1.2:5060
改为:Via:SIP/2.0/UDP159.226.39.4:6000
其中,地址159.226.39.4:6000由地址映射信息表得到。User1发出的INV ITE,ACK,B YE和REGISTER4个请求消息和100(Trying),180(Ringing)以及200(O K)3个回答的Via头在向外穿越NA T时都需要进行相似的修改。
2)对Contact头域的修改
Contact通常标明能到达用户的下一个URL,和注册、重定向等密切相关。
Contact:<sip:User1@10.10.1.2:5060>
改为:Contact:<sip:User1@159.226.39.4:6000>
对User1和User2的REGISTER中的Contact头,AL G 同样要做和上面INV ITE相同的修改。
3)对SDP消息体的修改
SDP消息体中描述了和会话及相关媒体特性的有关内容。其中,在SDP消息体中和连接直接相关的几个比较重要的域是:
“Connection c=”,描述主机地址。
“Media m=”,在这里主要关心的是参数中接收媒体流端口的信息。
图2中NA T内主机User1发出的INV ITE请求的SDP 消息体内相应的部分如下所示:
c=IN IP410.10.1.2
m=audio49172RTP/AVP0
SDP消息体中的这两行被AL G修改为:
c=IN IP4159.226.39.4
m=audio60012RTP/AVP0
其中,“c=”行中的主机地址由私有地址改为NA T网关地址,“m=”行中的60012表示在该端口上接收到的媒体流在DNA T后将被转发到User1。User2中返回的200(O K)的SDP消息体中的相应部分同样要完成相
似的修改。
4)Content2Length头的修改
由于经过AL G后SIP消息体被修改,消息体的长度发生了变化,因此User1的INV ITE和User2中返回的200(O K)消息头中的Content2Length都要做相应的修改。
综上所述,AL G的具体转发和报文修改处理流程如下
:
图3 AL G的处理流程
需要强调的是,在这种NA T间的SIP客户连接建立的情况下,要求在公共Internet上必须有Register Server来完成对NA T内客户的注册和重定向。图2中的Register Server逻辑上实际上集成了SIP协议中的Location,Registration和Redirect三个逻辑服务器的功能。
另外,Proxy Server是SIP协议定义的一个重要的服务器,主要负责SIP消息的转发。在NA T网关上配置了Proxy Server时,上面处理流程中消息修改模块的内容应加以修改。此时通过NA T内外的消息都由Proxy Server转发,AL G只需要对SDP消息体中对媒体流描述的部分进行修改,消息头部分不需再改动。这样就使AL G完全地对SIP系统透明。
此外,本文的AL G以连接为重点,没有考虑SIP的安全和认证等内容。
4 结语
本文描述了不同NA T间的SIP客户通过Register Server 建立SIP连接的AL G实现。通过内置于NA T上的AL G映射IP地址,修改报文以及完成转发,不需要修改SIP或添加其它协议,NA T间的客户就可以实现透明地建立SIP会话。在此框架上的消息修改模块部分略加扩充,就可以支持相关的4XX,5XX等SIP
消息,从而实现功能相对更加完善的SIP AL G。
参考文献
[1] Handley M,Schulzrinne H,Schooler E,et al.SIP:session initiation
protocol[S].RFC2543,Internet Engineering Task Force,March
1999.
[2] Biggs B.A SIP Application Level G ateway for Network Address
Translation[S].Internet Draft,Internet Engineering Task Force,
March2000.
[3] Srisuresh P,Kuthan J,Rosenberg J.Middlebox communication ar2
chitecture and framework[S].Internet Draft,Internet Engineering
Task Force,Feb.2001.
[4] Rosenberg J,Weinberger J,Schulzrinne H.SIP Extensions for
NAT Traversal[S].Internet Draft,Internet Engineering Task
Force,November21,2001.
[5] Thernelius F.SIP Firewall Solution[S].Internet Draft,Internet
Engineering Task Force,J uly2000.
221
    计算机应用2003年

本文发布于:2024-09-25 02:22:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/170348.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:IMS技术简介
下一篇:中继网关配置
标签:消息   修改   地址   信息   实现   协议
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议