SIP和IPv6混合网络桥接技术研究
2017-08-07周谊
周 谊
(上海浦东发展银行,上海200120)
·微机网络与通信·
SIP和IPv6混合网络桥接技术研究
周 谊
(上海浦东发展银行,上海200120)
由于IPv4网络协议与IPv6协议是两个相对独立不兼容的协议,因此即使新的设备开始支持IPv6协议后也只能是实现IPv6网络内的通信,无法实现SIP终端之间直接进行IPv4网络与IPv6网络间的会话通信。为了实现IPv4网络和IPv6网络之间的SIP通信的目标,研究SIP通信桥接服务系统的整体框架,根据系统需要实现的功能,将系统分成对SIP协议通信模块、RTP流转发模块、IPv4/IPv6网络通信模块、核心控制模块、负载均衡模块,对几个模块进行分别设计。最后是整个SIP桥接服务器的运行效果演示,主要是针对RTP流数据的抓包演示,证明了该系统完成了将RTP流数据从IPv4网络转发到了IPv6网络中的目标。
混合网络;桥接;通信桥接;网络通信;负载均衡;数据转发
1 引言
如今在企业内部,SIP的服务器到终端的通信基本全部都是基于IPv4网络的,因此在过渡过程中既要保证不能影响原有设备的正常运行,又要使得SIP系统兼容IPv6协议直到过渡顺利结束[1]。由于IPv4网络协议与IPv6网络协议不兼容,由此得出可以通过搭建一个中间桥接设备来满足两个网络之间SIP通信的需要。SIP通信桥接服务器将作为一个特殊的终端分别加入到IPv4网络的SIP系统和IPv6网络的SIP系统[2]。当其中一方有跨网络通信的需要时,直接向SIP桥接服务器发起通信请求,桥接服务器将分别与两种网络中的通信终端进行协议协商,当协商通过后负责将双方的所有通信进行桥接,实现跨网络SIP通信。
2 SIP通信桥接服务系统的设计
根据系统需要实现的功能,将系统分成多个相对独立的模块:SIP协议通信模块、RTP流转发模块、IPv4/IPv6网络通信模块、核心控制模块、负载均衡模块,如图1所示。
当SIP通信发起时用SIP协议通信模块来负责处理所有与SIP协议相关的通信细节的协商,将所有协商的结果返回给核心控制模块来处理,并控制SIP通信的流程步骤[3]。
图1 桥接服务器功能设计模块图
当SIP通信协商成功,RTP流转发模块会根据核心控制模块传递的参数来建立RTP流的双通道,将通信双方RTP流相互转发。
用IPv4/IPv6网络通信模块来获取本机网络信息,并接受SIP协议通信模块和RTP流转发模块的通信请求并实施不同网络之间的通信,这一部分主要是操作系统提供,直接通过API命令调用即可。
由核心控制模块来协调各个其他模块,负责参数传递和通信流程管理。统计系统资源使用情况。
负载均衡模块中登记有其他桥接服务器的IP地址,当本服务器无法接受新的通信请求时,将其他从属桥接服务器查询其负载情况,若有从服务器可以接受请求,如果当前服务器为从服务器时,则将该服务器IP告知其上级服务器,如果当前服务器为主服务器时则通过SIP的invite消息告知SIP客户端,否则通过上述两种方式进行拒绝[4]。
3 关键模块的设计
3.1 SIP协议通信模块
SIP协议通信模块目标是能够实现与其他客户端的正常SIP协议的交互。但是由于RTP流模块只是负责将双方的RTP流转换网络地址协议后,进行互通的转发并不涉及RTP流中语音数据格式的转化,所以在SIP协议通信模块中,需要负责双方的流媒体格式的协商[5]。当前已经有许多非常成熟的开源SIP协议栈。这里将采用SippyB2BUA开源框架来进行开发(见图2)[6]。B2BUA主要由应答SIP用户代理,呼叫控制逻辑单元,发起SIP用户代理三个主要的逻辑组件。组件之间通过抽象的事件进行交互。每个用户代理表示一个状态机,用来从终端接收SIP消息,并将其转化成基于消息的事件和代理本身的状态。呼叫控制逻辑负责将事件传递给不同的用户代理。根据本身的当前状态和其他用户代理的状态,呼叫控制逻辑可以丢弃一些事件,或者将其做相应转化,又或者插入其他事件。呼叫控制逻辑也可以直接去掉其中的用户代理或者在呼叫的某个状态上将其用其他用户代理所替换,类似于呼叫失败通话路由或者受控制的呼叫转发等等。
图2 B2BUA高层架构
3.2 RTP流转发模块的设计与实现
RTP流转发模块在被核心控制模块调用后,会接收到SIP协议通信模块已经协商好的,两组RTP流转发模块所需要用到的参数[7],如表1所示。
表1 RTP流转发模块参数
如图3所示,当SIP协议通信模块完成SIP协议层面的协商之后,RTP流转发模块将负责转发SIP发起终端和SIP目的终端之间RTP流数据。如RTP流向图所示,RTP流转发模块从自己的发起端代理接收端口(SPR)接收SIP发起终端的发送的RTP流数据,然后通过目的端代理端口(DPS)将该流数据发送给SIP目的终端。同样从目的端代理端口(DPR)接收SIP目的终端的RTP流数据,再通过发起端代理发送端口(SRS)将流数据发送给SIP发起终端。由于SIP发起终端与发起端代理之间的通信和SIP目的端与目的端代理之间的通信之间是相互独立的,相当于是两个独立的SIP会话,而RTP流转发模块的作用充当SIP终端的同时将两个会话之间的流数据进行转发。
图3 RTP流数据流向
RTP流模块核心程序只需要对RTP流向图中的两个数据流的进行处理,而且两个数据流的处理方式完全相同,下面给出对一个数据流的关键实现代码:
3.3 负载均衡模块的设计
为了提高系统的健壮性,不可避免地要引入负载均衡机制[8]。通过负载均衡模块来协调各个桥接服务器之间的通信负载。本SIP通信桥接系统的负载均衡通过两个层面来实现:
(1)通过外部系统直接实现负载均衡。当桥接服务器加入企业的网络之后,将所有的桥接服务器以第三方SIP客户端的形式加入SIP的注册服务器中。当有SIP终端需要向异构网络的SIP终端发起通信时,会先向SIP注册服务器进行通信查询,此时SIP注册服务器发现该次SIP会话需要桥接服务器的介入,则先从本地的数据库中随机选取一个桥接服务器地址发出SIP通信INVITE请求,如果该服务器能够承载该会话,则向SIP注册服务器返回SIP通信的100TryingSIP消息,然后向SIP目的终端发起SIP信令交互。否则直接向SIP注册服务器返回603decline消息进行拒绝,然后SIP注册服务器就会再从数据库中选取下一个可用的桥接服务器地址发出通信请求。
(2)通过桥接服务器内部的负载平衡模块来实现。将企业内部的所有接入的桥接服务器用网状结构组织起来,每个桥接服务器地位平等,每个都按算法都登记有其他M个服务器的地址,实现所有桥接服务器的相互指向,自成一个网状联系的体系[9]。当其中一个桥接服务器接收到新的SIP通信桥接请求时,该桥接服务器会先查询本服务器的当前负载情况是否超过额定的通信负载参数,如果没有则接受该次请求并向发起端返回100TryingSIP消息,然后向SIP目的终端发出SIP通信请求,并联合其他模块完成其余所需的桥接服务,并将本服务器当前负载参数+1。但是当该桥接服务器发现本服务器的负载已经过大导致无法实现本次SIP通信的桥接时,则从负载均衡模块中登记的下一个可用的桥接服务器中随机选取一个,并通过向SIP发起终端返回一个380 alternative service SIP消息的方式将会话重定向至该地址[10]。
3.4 核心控制模块的设计
一个能够成功进行RTP流的控制流程如图4所示。当核心控制模块对系统的初始化结束之后,会先调用SIP协议通信模块开始SIP通信请求的监听。
图4 核心控制模块的控制
在阶段4如果负载均衡模块所返回的参数是 [False,AHOST],则表明当前系统负载过大,不能接受新的桥接请求,核心控制模块就会调用SIP协议通信模块,向SIP发起终端发送一个380alternativeserviceSIP消息,通知SIP发起终端则向转向的桥接服务器发起新的SIP会话的桥接请求。此次SIP会话就直接结束。但是如果负载均衡模块所返回的参数如果是[False,NULL],表明不仅本服务器无法接受请求,而且无法找到可用的桥接服务器,则核心控制模块就会调用SIP协议通信模块向SIP发起终端返回480 temporarily unavailable SIP消息报错,此次SIP通信以出错无法进一步进行的方式全部结束。
整个过程中核心控制模块最重要的功能就是在最开始根据当前的负载情况决定是否接受新的桥接请求,而后将SIP协议通信模块协商好的RTP流参数传递给RTP流转发模块,同时更新当前负载情况。
4 系统运行
本系统的主要功能就是实现将从IPv4网络中接收到的RTP流数据转发到指定IPv6的主机上。因此需要对RTP流转发模块进行单独的测试。首先在实验室中利用路由器的LAN口将三台计算机连接起来,然后利用DHCP服务器获取各自的地址。然后在第一台机器上将RTP流通过IPv4协议发送到桥接服务器的5555端口上。利用audiotestsrc元件产生发出频率为1000Hz的音频包,然后经过mu-law元件的的编码后通过RTP流将编码好的音频数据发送到桥接服务器的5555端口上。
通过一系列的演示可知,系统成功将SIP目的终端发送的音频数据通过IPv6协议转发到SIP目的终端。在充当SIP目的终端的机器上用工具也可以听到所发送的音频信号。但是由于桥接服务器的处理,信号也出现了间断的信号丢失,这一方面是因为本身信号源发生端的一些Bug和GStreamer架构本身在低端机器上对音频信号的处理效率不高所致,需要进行底层的改进。但SIP通信桥接服务系统已经达到所要求的将RTP流成功转发的功能,而且演示效果达到预期的要求。
5 结束语
现阶段基本实现了IPv4网络中SIP通信终端与IPv6网络SIP通信终端的简单通信,但是对于实际中的SIP通信而言执行效率还不够好,特别是对于语音和视频通信而言抖动、延迟、包流失率都比较高,而且由于IPv4网络与IPv6网络的不同,需要今后在该SIP桥接服务系统加入对Qos的细节处理。因此需要做大量的实验来获取实际的Qos等参数的最佳调节的系数,实现针对不同环境和设备终端能够智能采用最佳参数。而且由于开发时间较短没有实现各模块之间细节参数的自动传递,需要在运行过程中手动设置通信参数,因此今后需要完善该功能。
[1] 房国志,甘东平.SIP在IPv4与IPv6混合网络中通信的研究[J].计算机与数字工程,2009(3):197-199.Fang G.Z,Gan D.P.Research on SIP Communication in IPv4/IPv6 Hybrid Networks[J].Computer And Digital Engineering,2009(3):197-199.
[2] 刘述.国内外下一代互联网试验网浅析 [J].通信世界,2006(13):53-54.Liu S.Briefly Analysis of Next Generation Internet Trial Network At Home and Abroad[J].Communications World,2006(13):53-54.
[3] 王云岚.SIP原理分析[J].科技资讯,2010(5):58-59.Wang Y.L.SIP Principle Analysis[J].Science&Technology Information,2010(5):58-59.
[4] 李卿,乔元松,郑慧.SIP穿越防火墙/NAT(-PT)的探讨和设计[J].计算机工程与设计,2005(5):1294-1298.Li Q.,Qiao Y.S.,Zheng H.Discussion and Design of SIP Traversing Firewall/NAT (-PT)[J].Computer Engineering and Design,2005(5):1294-1298.
[5] 黄波.基于SIP的IP多媒体会议系统的设计与实现[J].广西质量监督导报,2008(4):86-88.Huang B.Design and Implementation Based on the SIP IP Multimedia Conference System[J].Guangxi Quality Supervision Guide Periodical,2008(4):86-88.
[6] 张子龙.SIP协议是智能电网通信的一个明智选择 [J].电力系统通信,2009(11):11-14.Zhang Z.L.SIP the right choice for smart grid communication[J].Telecommunications for Electric Power System,2009(11):11-14.
[7] 牛瑛霞.IPv4与IPv6协议的比较[J].电信工程技术与标准化,2005(9):12-17.Niu Y.X.Comparison of IPv4 and IPv6[J].Telecom Engineering Technics and Standardization,2005(9):12-17.
[8] 蒋勇.论IPv6与IPv4报头格式之比较[J].科技信息,2009(28):235-236.Jiang Y.Comparison of IPv6 and IPv4 Header Format[J].Science&Technology Information,2009(28):235-236.
[9] 黄伦文,陈勇,李涵.基于SIP协议的网络视频监控系统的设计与实现[J].电脑知识与技术,2010(1):74-76.Huang L.W,Chen Y,Li H.The Design and Implementation of Video Monitoring System Based on SIP[J].Computer Knowledge and Technology,2010(1):74-76.
[10] 张容.LVS负载均衡技术在GS分布式集群中的应用[D].成都:成都理工大学,2009.Zhang R.The Application of The LVS Load Balancing Technology in GS Distributed Cluster[D].Chendu:Chengdu University of Technology,2009.
ResearchofNetworkBridgingTechnologyBasedontheSIPandIPv6
Zhou Yi
(Shanghai Pudong Development Bank,Shanghai 200120,China)
As IPv4 network protocol and the IPv6 network protocol are relatively independent and incompatible,even if the new equipment supports the IPv6 protocol,they can only communicate with each other within the IPv6 network and cannot directly talk to other SIP endpoints in IPv4 network.Moreover,most of the equipments in the world currently only support IPv4 protocol.In this paper,in order to achieve SIP communication between the IPv4 network and IPv6 network,we research the SIP communication bridge service system of the whole framework and the relatively independent function modules.Finally the running effect of the SIP bridge server demo is shown,mainly for RTP stream data caught demonstration,that the system has a completed RTP stream data,from IPv4 network forwarding to the IPv6 network.
Hybrid network;Bridge;The bridge of communication;Network communication;Load balance;Data forwarding
10.3969/j.issn.1002-2279.2017.03.006
TN914
B
1002-2279-(2017)03-0026-04
周谊(1977-),男,浙江省宁波市人,工程师,主研方向:计算机应用。
2016-11-16