- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于移动IP的SIP协议
录入:edatop.com 点击:
摘要 移动IP是3G网络实现各种移动业务的关键技术。SIP是提供和实现IP业务的重要协议。未来移动IP网络由于受到地址空间不足的限制,必然要从IPv4发展到IPv6,本文主要讨论SIP协议在IPv6中的应用,并提出了在IP异构网络中实现SIP协议的方式。
关键词 SIP 移动IP IPv4 IPv6
1、引言
3G网络引入移动IP支持各种业务的移动性。目前的网络都支持IPv4,但是IPv4无法满足网络发展需要。未来网络都将支持IPv6,IPv6在地址数量、安全性、移动性和服务质量方面具有巨大优势。但IPv6回报周期长、投资巨大、在相当长的一段时间内IPv4和IPv6将会共同存在。
会话发起协议(SIP)是一个较为灵活、可扩展的开放协议,它使互联网以及固定和移动IP网络不断推出新一代服务。SIP能够在多台PC和电话上完成网络消息,模拟互联网建立会话。与存在已久的No.7信令和ITU H.323视频协议标准不同,SIP独立工作于底层网络传输协议和媒体,正因为如此,它可以在当前的IP异构网络中加以部署和应用。
2、3G网络中的移动IP
移动IP是在TCP/IP网络中实现IP终端漫游的网络协议。它可以使移动终端从一条链路切换到另一条链路时,仍然保持与对端的通信。移动IP现在有IPv4和IPv6两个版本。在移动IP网络中,移动用户归属地址的IP保持不变。当用户漫游到其他网络中时,在新网络中首先要获得转接地址。在IPv4中,用户首先要向外地代理(FA)注册获得转接地址,然后更新归属代理(HA),使HA能够截取发往用户归属地址的数据包,并根据用户的转接地址,通过隧道把数据发给用户。在IPv6中,通过路由优化实现移动用户和通信对端的对等通信,不需要通过HA的隧道转发数据,因此用户与通信对端使用归属IP地址,而转接地址只是实现路由的目的。移动IP作为网络层协议,转接地址的任何改变对于上层都是透明的,因此用户的移动不会对业务应用有任何影响。
在目前的蜂窝网络中,广泛应用的是IPv4。但是,随着3G网络与互联网的不断结合,提供高质量的数据业务需要更多IP地址。考虑到目前IP地址数量的不足,而IPv6具有巨大的地址空间,可以为设备分配一个长期或永久的IP地址,因此必然需要从IPv4升级到IPv6。3G网络尤其是UMTS系统直接确定采用IPv6,而当前整个互联网广泛配置的还是IPv4,所以3G网络仍然需要考虑IPv6和IPv4之间的转换和协作问题。
3、SIP协议
会话初始协议(SIP)是下一代网络多媒体通信的信令标准。SIP的一个最重要的功能就是在一个会话中加入一个新的参与者。为实现这一功能,系统包括以下SIP实体:
(1)代理:代理服务器接受SIP请求,并将其转发到被叫或是被叫所属的代理服务器。
(2)重定向:重定向服务器接受主叫查询下一跳服务器的请求,返回下一跳服务器的地址。
(3)用户代理:终端的用户代理实体包括用户代理客户端和用户代理服务器。
(4)用户代理客户端:位于主叫终端,用于发起呼叫。
(5)用户代理服务器:位于被叫终端,用于处理收到的呼叫,决定接受/拒绝这个呼叫并返回主叫。
(6)注册服务器:注册服务器接受终端的注册请求,记录终端的SIP URL和对应的IP地址。注册服务器通常与代理服务器或重定向服务器位于同一物理实体中。基于注册服务器的转发特性是实现号码移动性服务的基础。
在SIP体系中,SIP URL的格式是user@domain,是SIP的用户地址表示方法,该地址可在该用户域的SIP代理中解析。每个用户在启动时,要到注册服务器注册当前的SIP URL和IP地址。一个主叫用户发起请求后,在域内的代理服务器中解析SIP URL,如果不能解析,代理服务器将请求转发到重定向服务器,由重定向服务器到注册服务器数据库去解析这个请求的地址,并向代理服务器返回查询结果。代理服务器将请求转发到下一跳的代理服务器,再将请求转到被叫代理处。建立呼叫连接。呼叫双方交换是否通信,通信媒体类型等信息。双方建立连接后就可以离开SIP代理服务器进行通信。
SIP协议提出时只考虑了IPv4的网络环境。在IPv6将要逐步代替IPv4的过程中,网络环境的变化必然会对上层的应用协议产生影响。作为一种应用层协议,SIP也要为适应这种变化,对自身做一些调整。
4、基于IPv6的SIP协议
在IPv6的网络上应用SIP的一个显著优点就是IPv6拥有巨大的可用IP地址。随着3G时代的到来,所有应用SIP协议的移动电话都需要一个IP地址。但是移动电话并不是唯一的适于应用SIP的IP设备,基于网络的游戏服务器及应用程序都可以应用SIP。随着移动通信、信息家电等的普及,新型宽带上网终端“永远在线”的特性导致对IP地址的需求猛增。而IPv6可以提供近乎无限多的128位IP地址,在可以想象的将来,这个数字将可以充分满足各种应用的需求。除了在SIP应用中的显著优点外,IPv6在终端的动态分配和负载平衡方面的优势也十分明显。
4.1 动态配置
IPv6的另一个基本特性是它支持无状态和有状态两种地址自动配置的方式。无状态地址自动配置方式是获得地址的关键。在这种方式下,需要配置地址的节点使用一种邻居发现机制获得一个局部连接地址。一旦得到地址之后,它便使用另一种即插即用的机制,在没有任何人干预的情况下获得一个全球唯一的路由地址。有状态配置机制如动态主机配置协议(DHCP),需要一个额外的服务器,因此也需要很多额外的操作和维护。
在SIP应用中,用户代理的开启除了需要建立一个IP地址外,还需要知道边界代理、注册服务器及本地域名服务器的地址。随着用户代理所处位置的不同,这些信息可能有所不同。这些设置信息需要根据用户代理当前所处网络的不同进行动态配置。
4.2 任意播
用户代理在开启通信会话前需要先发送SIP请求消息到注册或边界代理服务器,然后由实现用户认证功能的注册服务器或实现防火墙机制的代理服务器对请求消息做出响应。用户代理必须在发送之前得到注册或代理的地址,它可以通过在发送前手动设置来完成。
基于IPv6的任意播机制,将所有具有相同功能的服务器都设置成一个一般性的任意播地址。在这种方案下,消息可以直接到达离它最近的服务器。例如,基于负载平衡的考虑,可能有不只一个注册服务器。一个用户代理通过把注册请求消息发向设定好的所有注册服务器的通用地址,利用任意播机制,网络上最近的服务器会对这个请求做出响应,从而可以有效地解决负载平衡的问题。
5、混合IP网络中的通信
IPv4经过了多年的发展,已经遍布到了世界的各个角落。如果要将这个庞大的网络完全变为IPv6的,需要更换数量巨大的终端设备、路由器和服务器。这一庞大的工程不会在短期内完成,IPv4和IPv6的混合环境必将在相当长的一段时间内存在。在这种混合网络条件下的通信会有如下几种结构:
(1)双栈:即同时运行IPv4和IPv6两套协议栈,同时支持两套协议。在网络中同时运行IPv4和IPv6两套路由协议,终端系统可以接收发送IPv4/IPv6数据包,使用IPv4/IPv6地址。当收到一个带IPv4地址的数据包时,终端系统会将数据包回复到该IPv4地址去。当收到一个IPv6数据包时,终端系统会将数据包回复到该IPv6地址去。双栈主机将从返回结果列表中选择最佳地址作为目的地址。当返回的是纯IPv6地址时使用IPv6,返回的是IPv4映IPv6地址时使用IPv4,这一过程由双栈传输协议控制。
(2)隧道:当2个IPv6的“岛”通过一个IPv4的网络相连接时要用到隧道技术。在隧道的两端是运行双栈的路由器,分别连接IPv4和IPv6网络。当IPv6的数据包到达隧道一端时会被封装为IPv4数据包通过IPv4网络。到达隧道的出口时,该封装包会被解封装,还原IPv6数据包发往原目的地址。隧道技术提高了网络的复杂性,增大了管理难度。
(3)协议转换:这种结构要求在IPv4和IPv6网络之间设立网关。网关的功能就是协议地址转换。网关管理一张IPv4和IPv6的地址表,当IPv4接口收到要进入IPv6网络的数据包,网关将用IPv6地址头替换原来的IPv4地址头。他能较好地解决IPv4和IPv6的互通问题,其最大优点是原有的各种协议不加改动就能与新的协议互通。但该技术在应用上有一些限制:首先,在拓扑结构上要求一次会话中所有报文的转换都在同一个路由器上,因此地址协议转换方法较适用于只有一个路由器出口的STUB网络(存根网络);其次,一些协议字段在转换时不能完全保持原有的含义。
6、混合IP网络中的SIP
选择协议转换模式作为混合IP网络通信的模式,这样对于终端设备来说会比较简单,只需要支持一种网络模式。
SIP协议网关处于纯IPv6和纯IPv4网络之间,它运行在实现了双协议堆栈的机器上,能够和两种协议进行会话和通信。它可以被当作是一个代理服务器,完成在一个IPv6/IPv4主机上发出的SIP信息被另一个IPv4/IPv6主机理解的功能。SIP协议网关包括以下3个部分:
(1)小型SIP代理(MSP)
MSP接收SIP消息,经过修改以后,为实时传输协议(RTP)通信建立用户数据报协议(UDP)映射,并将SIP消息转发到下一个代理处。每个MSP必定有2个相连接的边界代理:一个位于IPv4网,一个位于IPv6网。MSP本身并不具备路由功能。对于一个来自IPv4端口的SIP请求信息只会被简单的转发到IPv6端口,反之亦然。SIP的响应消息通过第二个请求经历的路径信息(VIA)头信息进行路由。SIP消息中的以下几个部分需要代理更改:
●连接头(contact-header)
因为中间经过代理转发,所以需要修改SIP消息体中包含的初始连接头地址。替换后的连接头由SIP协议网关的URI再加上一个反映原始连接地址URI的参数(real_uri)来表示。在修改后的URI响应消息中,连接头也需要遵循这种表示格式。
●请求的目的地址(RequestURI)
这种修改只在请求URI中有一个实URI参量时使用,real_uri会被原URI代替。
●会话描述协议头(SDPheaders)
消息体中包含的所有IP地址或端口都需要被置换成与目标协议簇相适应的地址表示格式,即:originator(o=);contact(c=);media_description(m=)。这些与IP地址或端口联系的字段必须被修改成与目标协议簇一致。这些地址包括在发送到UDP前向请求(UFWDD)的映射请求的SDP部分。
●消息长度(content-length)
当一个消息体(SDP)被修改后,包长也要重新计算。
●VIA
VIA头会插入到请求消息,从响应消息里删除。
(2)UDP前向进程(UFWDD)
这个功能实体管理IPv4和IPv6地址空间,进行网络地址翻译。它通过从代理上的IPv4/IPv6地址空间中所获得的信息,可以把从IPv4/IPv6网络上得到的数据包发向IPv6/IPv4的主机。这个模块从一个本地的UDP端口中接收以下格式的映射请求消息:MAP0.0.0.0:0 0.0.0.0:0[::]:O;[3ffe:2ff:1be0:270:3cOe:1bef:09ce:86ab]:100022。
这个格式中包含了5个参数:源地址|端口、输入地址|端口、输出地址|端口、目标地址|端口、邻近端口数。代理对请求消息的响应也符合这个格式,只是前面的标志变为MAPPED。相应消息的格式如下:MAPPED 0.0.0.0:0130.149.31.61:4900;[3ffe:3ff:1be0:270:18e0:6548:aebc:1f]:4902;[3ffe:2ff:1be0:270:3cOe:1bef:09ce:86ab]:100022。
在这个例子中,代理把从IPv4网络输入接口(输入地址|端口130.149.31.61:4900)获得的数据包通过IPv6网络输出接口(输出地址|端口[3ffe:3ff:1be0:270:18e0:6548:aebc:1f]:4902)发向IPv6上的目的网络接口[3ffe:2ff:1be0:270:3cOe:1bef:09ce:86ab]:10002。
为了目的主机的响应信息能够返回到发出请求的主机,这个映射关系需要在该模块中保存下来,从而使得代理能够通过输出网络接口得到响应消息,并通过输入网络接口发回到源主机。需要说明的是,示例中的源地址信息为本机地址消息,因为MSP和这个代理模块驻留在同一台机器中。
(3)控制协议
在请求地址分配及地址转换的映射过程中,MSP和UFWDD都是通过UDP进行通信。这主要是基于减少系统组件中耦合性的考虑,这样两个组件不但可以驻留在不同的机器中,而且符合中间件架构的要求,便于系统的维护和升级。
除了由MSP和UFWDD组成的网关外,还有两个SIP代理,代表异构IP网络中每个独立的IP网络中的SIP提供者。当然,代理的功能完全可以集成到网关模块中。然而,这会增加网关设计的复杂性,并由于要处理的SIP消息数量剧增而使网关负载量大大增加。
7、结束语
移动IP和SIP是3G网络的关键技术,IPv4和IPv6是移动IP中的不同版本。本文描述了在IPv6的情况下SIP的一些更有利的变化,并提出了一种有效的连接IPv4和IPv6网络之间的通信方法。SIP的设计思想借助了互联网的标准和协议,结构简单,利于扩展。随着通信网络的不断发展,相信SIP的应用会越来越广泛。
作者:李侠宇 来源:泰尔网