实现voip业务穿越私网的系统及方法

文档序号:7598725阅读:127来源:国知局
专利名称:实现voip业务穿越私网的系统及方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种网络中实现VOIP业务穿越私网的系统及方法。
背景技术
随着VOIP(基于IP的语音)产品的普及,很多公司都开始安装VOIP系统。多数公司都希望通过安装和使用VOIP产品,增强企业内部的通信手段,并且可以节省大部分的长途话费。因此,众多公司都希望通过Intranet(企业内部互联网)或者Internet(互联网)将总部和各个分支机构、办事处等连接起来,构建统一的企业内部电话网。
所述的VOIP技术具有以下特点(1)采用了较多的TCP(传输控制协议)和UDP(用户数据报协议)端口,而且有些是动态端口;(2)消息内部携带IP地址和端口号。
第一个特点决定了在穿过防火墙时,迫使防火墙开放较多的端口,降低了系统的安全性;第二个特点决定了在穿过防火墙和NAT(网络地址转换)时,由于不能对消息内部的IP地址和端口号也进行变换,因而使VOIP设备间的协议交互出现错误。
而企业的不同的局域网如果分别位于不同的区域,则其间的内部互联必然会穿越IP公网(互联网),但基于上述VOIP技术的两个特点,使得企业所希望的将企业内部的位于不同区域的局域网连接互通,且可以节省话费的愿望无法直接利用VOIP技术实现。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种VOIP业务穿越私网的实现方法,以克服现有技术中提供的VOIP技术存在的缺点,为企业内部位于不同区域的局域网间互通提供了一种可靠的技术方案。
本发明的目的是通过以下技术方案实现的本发明提供了一种实现VOIP业务穿越私网的系统,包括隧道服务器端用于接收隧道客户端的注册消息,并保存着隧道客户端的地址信息,还将保存的各个隧道客户端的地址信息分别下发给各个隧道客户端;隧道客户端与网络地址转换NAT服务器相连,通过NAT服务器向隧道服务器端发送注册消息,同时接收并保存隧道服务器端返回的各个隧道客户端的地址信息。
所述的隧道客户端在每个私网中可以设置有一个多个,且均作为默认网关,用于接收并转发私网内发送的目的地址不在本网段内的业务。
所述的隧道服务器端位于公网中,所述的隧道客户端位于私网中,而且,隧道客户端可以与隧道服务器端共用同一个硬件平台。
本发明还提供了一种实现VOIP业务穿越私网的方法,包括A、各个隧道客户端分别向隧道服务器端发送注册消息;B、隧道服务器端保存各个隧道客户端的地址信息,并将保存的各个隧道客户端的地址信息发送给各个隧道客户端;C、隧道客户端下的私网用户通过隧道客户端保存的各个隧道客户端的地址信息,与其他隧道客户端连接的私网用户间开展基于IP网络的语音VOIP业务。
所述的步骤A还包括隧道客户端向隧道服务器端发送携带有身份信息的注册消息,并由隧道服务器端根据所述的身份信息对隧道客户端的身份进行验证,并在验证通过后,执行所述的步骤B。
所述的步骤B包括隧道服务器端保存着包含有各个隧道客户端的IP地址信息和与其连接的网络地址转换NAT设备的IP地址信息的对应关系的IP地址表,隧道服务器将该IP地址表发送给各个隧道客户端。
所述的步骤C包括当隧道客户端下的私网用户需要与另一隧道客户端下的私网用户间开展VOIP业务时,则查询保存的IP地址表确定对端私网用户连接的NAT设备的IP地址信息;将需要向对端私网用户发送的VOIP业务以对端私网用户连接的NAT设备的IP地址信息为目的地址封装成IP包并发送。
本发明中,在执行所述的步骤C之前还包括当隧道客户端接收到业务数据时,对接收的数据进行合法性验证,如果合法,则执行步骤C,否则,丢弃收到的业务数据。
所述的实现VOIP业务穿越私网的方法还包括当网络中新增隧道客户端时,所述隧道客户端向隧道客户服务器发送注册消息;隧道服务器将根据新增隧道客户端的地址信息更新保存的IP地址表,并将所述的IP地址表发送给新增的隧道客户端,同时,还将通知其他隧道客户端进行保存的IP地址表的更新。
所述的实现VOIP业务穿越私网的方法还包括
各个隧道客户端定时向隧道服务器发送注册消息;隧道服务器端定时检测是否收到各个隧道客户端发来的注册消息,如果在设定的时间段内一直未收到隧道客户端的注册消息,则从保存的IP地址表中删除该隧道客户端对应的表项,并通知其他隧道客户端更新的IP地址表。
所述的注册消息包括隧道客户端的用户名、密码、IP地址和子网掩码中的一项或多项。
所述的隧道客户端的地址信息包括隧道客户端的IP地址、子网掩码、接入NAT设备的IP地址和接入NAT设备的端口信息。
由上述本发明提供的技术方案可以看出,本发明中由于采用了基于隧道技术实现各个私网(局域网)间的地址信息互通,进而可以保证各个局域网均可以获得其他局域网的地址信息,从而为不同局域网间用户的互通提供了可能。而且,本发明中采用了隧道技术实现,使得实现过程简单,可靠性高。同时,本发明的实现有效地避免了VOIP技术固有的特点可能给实现不同私网间互通带来的问题。


图1为本发明应用的网络组网示意图;图2为本发明中注册过程示意图;图3为本发明中通信过程示意图;图4为本发明所述的方法的流程图。
具体实施例方式
本发明的核心思想是采用隧道穿越技术(tunnel,隧道)在需要互通的不同的LAN(局域网)间互通各个LAN的地址信息,从而使得不网LAN间的VOIP业务的互通成为可能。本发明中,所述的隧道技术不考虑上层H323协议,仅将IP包作为数据净荷进行数据的传输,从而使得各个LAN间互通地址信息的过程既简便又安全。
本发明提供了一种实现VOIP业务穿越私网的系统,如图1所示,具体包括隧道服务器端和隧道客户端,下面将分别对其功能作用进行说明(1)隧道服务器端tunnel server与各个隧道客户端互通,用于接收隧道客户端的注册消息,并保存着隧道客户端的地址信息,还将保存的各个隧道客户端的地址信息分别下发给各个隧道客户端,所述的隧道客户端的地址信息对应着一个LAN的地址信息;(2)隧道客户端tunnel client与网络地址转换NAT服务器相连,用于通过NAT服务器向隧道服务器端发送注册消息,同时接收并保存隧道服务器端返回的各个隧道客户端的地址信息,所述的各个隧道客户端是指所述的隧道服务器下的所有隧道客户端;所述的隧道客户端在私网中作为默认网关,用于接收并转发私网内发送的目的地址不在本网段内的业务数据,包括自己发送的数据或者私网内其它网关发送的数据。
本发明提供的系统中,所述的隧道服务器端位于公网中,所述的隧道客户端位于私网中。
本发明提供的系统中,隧道客户端Tunnel client端也可以与隧道服务器端tunnel server端共用同一个硬件平台,如AG4(接入网关4),这样注册过程发生于一个设备的不同网络端口之间。
本发明中,tunnel client端完成注册后,不在同一个局域网内的网关设备通过tunnel client端转发便可以进行VOIP业务互通。
基于上述本发明提供的系统,本发明还提供了一种实现VOIP业务穿越私网的方法,具体处理过程如图2、图3和图4所示,包括
步骤41各个隧道客户端tunnel client分别向隧道服务器端Tunnelserver发送注册消息;所述的注册消息包括隧道客户端的用户名、密码、IP地址和子网掩码中的一项或多项;隧道客户端向隧道服务器端发送携带有身份信息的注册消息,并由隧道服务器端根据所述的身份信息对隧道客户端的身份进行验证,并在验证通过后,执行所述的步骤42。
步骤42隧道服务器端Tunnel server保存各个隧道客户端tunnel client的地址信息;所述的保存的tunnel client端的地址信息包括但不限于以下信息tunnel client端的IP地址、子网掩码、NAT IP地址(即接入NAT设备的IP地址)和NAT PORT(接入NAT设备的端口);在隧道服务器端中,保存着包含有各个隧道客户端的IP地址信息和与其连接的网络地址转换NAT设备的IP地址信息的对应关系的IP地址表;如果隧道服务器端已经保存有发起注册的隧道客户端的地址信息,则直接执行步骤43,直接将保存的IP地址表发送给该隧道客户端,以便于隧道客户端更新自身保存的IP地址表,而无需再保存该隧道客户端的地址信息;步骤43将保存的各个隧道客户端tunnel client的地址信息发送给各个隧道客户端tunnel client,也就是将所述的IP地址表发送给各个隧道客户端;步骤44隧道客户端收到所的IP地址表后更新本地IP地址表;隧道服务器端将自身维护的IP地址表传给所述的tunnel client端,tunnelclient收到传来的IP地址表后,重新更新自身的IP地址表,这样,所述的tunnel client便可以获知其他私网对应的tunnel client的地址信息,进而获知私网的地址信息,为不同私网间用户的VOIP业务的互通提供了可能。
步骤45隧道客户端下的私网用户通过隧道客户端保存的各个隧道客户端的地址信息,即IP地址表,与其他隧道客户端连接的私网用户间开展基于IP网络的语音VOIP业务;私网用户间具体的通信过程如下在同一个私网内,其它网关均将tunnel client作为默认网关,当被叫地址不在本地网段时,则将呼叫发给默认网关;Tunnel client收到IP数据包后,解析IP包头,除广播包外均进行转发处理;Tunnel client还需要验证数据包的合法性,并在验证是合法的数据包后,在根据目的子网IP地址到本端的IP地址表里去查找外网的NAT IP地址和NAT PORT端口(即查找目的端的Tunnel client连接的NAT设备的IP地址及端口信息);如果找到相应的NAT IP地址和NAT PORT端口,则将收到的IP包净荷作为UDP(用户数据报协议)数据发送,目的地址为查找到的对端NAT设备的NAT IP地址,目的端口为相应的NAT PORT端口;如果未找到,则将收到的IP包丢弃,同时返回目的不可到达消息。
本发明中,当网络中新增隧道客户端时,所述隧道客户端同样需要向隧道客户服务器发送注册消息,以便于隧道服务器端获知其地址信息,并将其地址信息告知其他各隧道客户端;因此,在隧道服务器端,将根据新增隧道客户端的地址信息更新保存的IP地址表,并将所述的IP地址表发送给新增的隧道客户端,同时,还将通知其他隧道客户端进行保存的IP地址表的更新,通知其他隧道客户端的方式可以仅将增加的IP地址表项发送给各隧道客户端,也可以将整个更新后的IP地址表发送给各隧道客户端。
本发明中,为保证保存的IP地址表的实时有效,还需要设定各个隧道客户端定时向隧道服务器发送注册消息;而且,隧道服务器端需要定时检测是否收到各个隧道客户端发来的注册消息,如果在设定的时间段内一直未收到隧道客户端的注册消息,则从保存的IP地址表中删除该隧道客户端对应的表项,并通知其他隧道客户端更新的IP地址表,否则,不对IP地址表作处理。
例如,为了保证tunnel server端的IP列表能够及时更新,实时有效,可以对tunnel server端的IP列表做超时处理,每次注册间隔为30s,如果4次注册失败后则清空该表项。
为对本发明有进一步的理解下而将举例对本发明涉及的注册过程及业务传输过程进行说明。
首先,对涉及的注册过程进行说明。
所述的tunnel client端和tunnel server端通过自定义的消息进行注册,tunnel client端注册源端口2777,目的端口2776;如图3所示,相应的注册流程为tunnel client端定时每过30秒(默认值)向tunnel server端发注册消息,注册信息为用户名、密码、tunnel client端IP、子网掩码,注册消息采用MD5加密方式进行加密;Tunnel server端收到tunnel client端发来的注册,向tunnel client端发送注册回应消息,消息内容为消息类型、消息长度、注册情况和IP列表,注册回应消息仍采用MD5加密方式进行加密;Tunnel client端向tunnel server端发送注册消息时,通过NAPT时,地址转换过程如图3所示,私有网tunnel client 192.168.1.2需要向公共网中的tunnel server服务器202.2.1.1进行注册;首先,tunnel client要建立UDP socket(用户数据报协议接口套接字),假设分配的UDP Port是2776,发送了1个IP包,且数据包中Des=202.2.1.12776,Src=192.168.1.22777,当IP包经过NAPT网关时,NAPT会将IP包的源IP转换为NAPT的公共IP,同时将源Port转换为NAPT动态分配的1个Port(1100);然后,转发到公共网,此时IP包已经不含任何私有网IP和Port(端口)的信息,且IP包中Des=202.2.1.12776,Src=202.1.1.11100;由于IP包的源IP和Port已经被转换成NAPT的公共IP和Port,响应的IP包将被发送到NAPT,IP包中Des=202.1.1.11100,Src=202.2.1.12776;这时NAPT会将IP包的目的IP转换成私有网主机的IP,同时将目的Port转换为私有网主机的Port,然后将IP包转发到私网,IP包中Des=192.168.1.22777,Src=202.2.1.12776。
当tunnel client端和tunnel server端在同一个硬件平台上时,tunnel client源端口为2777,目的端口为2776,注册过程同上。
注册成功后,网关就可以通过tunnel client端的转发来进行通信,通信流程,即相应的业务传输过程如图4所示,包括tunnel client端(192.168.1.2)收到网关(192.168.1.4)发来的数据,将收到的IP包作为UDP数据,发一个UDP数据,数据中Des=202.3.1.11000,Src=192.168.1.22777,所述UDP数据经过NAPT(202.1.1.1)后变为Des=202.3.1.11000,Src=202.2.1.11100,再经过另一个NAPT(202.3.1.1)后变为Des=192.168.2.22777,Src=202.1.1.11100,之后再经网关(192.168.2.2)时解UDP数据,打IP包(Des=192.168.2.4,Src=192.168.1.4),并发送IP包。
当NAPT背后只有tunnel client端时,也就是tunnel client端作为主被叫时,通信过程是一样的,只是tunnel client端自发自收。
当NAPT背后有多个tunnel client端时,通信过程也是一样的,只是IP网关根据默认网关的设定来选择不同的tunnel client端来转发。
当主被叫方有一方在公网上时,通信过程也是一样的,只是少经过一次NAPT的转发。
本发明中Tunnel server任务仅仅创建UDP的SOCKET接收端(端口号为2776),然后对收到的消息进行身份验证。通过验证后,再根据收到的clientIP(隧道客户端IP地址)和subNetMask(子网掩码)计算出子网IP,并在本端的IP地址表中查找;如果查找到此子网IP,则向发起注册的隧道客户端发送本端的IP地址表;如果无此子网IP,则将收到的子网IP、NAT IP和NAT PORT加到IP地址表中,再将IP地址表发送给发起注册的隧道客户端;如果未通过验证,则返回注册失败消息;Tunnel server端维护着IP地址表,地址表格式如下Typedef Struct{int natPort,//NAT端口号BYTE natIp[4],//NAT外网IP地址BYTE subNetIp[4]//子网IP,由clientIp和子网掩码计算得到}serverIP;serverIP serverIP List[500];tunnel server回送的注册成功消息格式如下typedef struct{BYTE bMsgType,//取值0注册消息,取值1数据消息int bMsgLength,//消息长度BYTE Flag=1,//注册成功IP列表……//返回的IP列表}serverMsg;tunnel server回送的注册失败消息格式如下typedef struct{BYTE bMsgType,//取值0注册消息,取值1数据消息int bMsgLength,//消息长度BYTE Flag=0,//注册失败IP列表……为空//返回空IP列表
}serverMsg本发明中,tunnel server端是将收到注册消息的源地址和源端口号作为NAT IP地址和NAT PORT。
tunnel client端采用UDP接收注册回应消息(端口号2777);Tunnel client向tunnel server端发注册消息,消息的格式如下typedef struct clientMsg{BYTE username[20],//用户名BYTE password[20],//密码BYTE clientIp[4],//tunnel client端的IP地址BYTE subNetMask[4],//子网掩码}clientMsg;Tunnel client端接收tunnel server端回来的注册应答消息。如果注册成功,就将注册标志位置为TRUE,本地IP列表替换为收到的IP列表;如果注册失败,或者超时,就将注册标志位置为FALSE。
注册失败时,tunnel client端收到的IP包直接丢弃,并回送目的不可达。
tunnel client端维护着IP地址表,地址表格式如下typedef Struct clientIP{int natPort,//NAT端口号BYTE natIp[4],//NAT外网IP地址BYTE subNetIp[4]//子网IP,由clientIp和子网掩码计算得到}clientIPclientIP clientIPList[500];tunnel client端的2777端口不仅接收从tunnel server来的注册回应消息,而且接收UDP数据,这样就在各消息前加一个标志位,来判断是UDP数据,还是注册消息。并且当收到UDP数据时,就将UDP数据转化为IP净荷,通过原始套接字发送出去。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种实现VOIP业务穿越私网的系统,其特征在于,包括隧道服务器端用于接收隧道客户端的注册消息,并保存着隧道客户端的地址信息,还将保存的各个隧道客户端的地址信息分别下发给各个隧道客户端;隧道客户端与网络地址转换NAT服务器相连,通过NAT服务器向隧道服务器端发送注册消息,同时接收并保存隧道服务器端返回的各个隧道客户端的地址信息。
2.根据权利要求1所述的实现VOIP业务穿越私网的系统,其特征在于,所述的隧道客户端在每个私网中可以设置有一个多个,且均作为默认网关,用于接收并转发私网内发送的目的地址不在本网段内的业务。
3.根据权利要求1所述的实现VOIP业务穿越私网的系统,其特征在于,所述的隧道服务器端位于公网中,所述的隧道客户端位于私网中,而且,隧道客户端可以与隧道服务器端共用同一个硬件平台。
4.一种实现VOIP业务穿越私网的方法,其特征在于,包括A、各个隧道客户端分别向隧道服务器端发送注册消息;B、隧道服务器端保存各个隧道客户端的地址信息,并将保存的各个隧道客户端的地址信息发送给各个隧道客户端;C、隧道客户端下的私网用户通过隧道客户端保存的各个隧道客户端的地址信息,与其他隧道客户端连接的私网用户间开展基于IP网络的语音VOIP业务。
5.根据权利要求4所述的实现VOIP业务穿越私网的方法,其特征在于,所述的步骤A还包括隧道客户端向隧道服务器端发送携带有身份信息的注册消息,并由隧道服务器端根据所述的身份信息对隧道客户端的身份进行验证,并在验证通过后,执行所述的步骤B。
6.根据权利要求4或5所述的实现VOIP业务穿越私网的方法,其特征在于,所述的步骤B包括隧道服务器端保存着包含有各个隧道客户端的IP地址信息和与其连接的网络地址转换NAT设备的IP地址信息的对应关系的IP地址表,隧道服务器将该IP地址表发送给各个隧道客户端。
7.根据权利要求6所述的实现VOIP业务穿越私网的方法,其特征在于,所述的步骤C包括当隧道客户端下的私网用户需要与另一隧道客户端下的私网用户间开展VOIP业务时,则查询保存的IP地址表确定对端私网用户连接的NAT设备的IP地址信息;将需要向对端私网用户发送的VOIP业务以对端私网用户连接的NAT设备的IP地址信息为目的地址封装成IP包并发送。
8.根据权利要求6所述的实现VOIP业务穿越私网的方法,其特征在于,执行所述的步骤C之前还包括当隧道客户端接收到业务数据时,对接收的数据进行合法性验证,如果合法,则执行步骤C,否则,丢弃收到的业务数据。
9.根据权利要求6所述的实现VOIP业务穿越私网的方法,其特征在于,该方法还包括当网络中新增隧道客户端时,所述隧道客户端向隧道客户服务器发送注册消息;隧道服务器将根据新增隧道客户端的地址信息更新保存的IP地址表,并将所述的IP地址表发送给新增的隧道客户端,同时,还将通知其他隧道客户端进行保存的IP地址表的更新。
10.根据权利要求6所述的实现VOIP业务穿越私网的方法,其特征在于,该方法还包括各个隧道客户端定时向隧道服务器发送注册消息;隧道服务器端定时检测是否收到各个隧道客户端发来的注册消息,如果在设定的时间段内一直未收到隧道客户端的注册消息,则从保存的IP地址表中删除该隧道客户端对应的表项,并通知其他隧道客户端更新的IP地址表。
11.根据权利要求4或5所述的实现VOIP业务穿越私网的方法,其特征在于所述的注册消息包括隧道客户端的用户名、密码、IP地址和子网掩码中的一项或多项。所述的隧道客户端的地址信息包括隧道客户端的IP地址、子网掩码、接入NAT设备的IP地址和接入NAT设备的端口信息。
全文摘要
本发明涉及一种实现VOIP业务穿越私网的系统及方法。本发明主要是在网络中分别建立隧道服务器端和隧道客户端,并通过隧道客户端与隧道服务器端发送注册消息将私网的地址信息上报到隧道服务器,并由隧道服务器端再将各个私网的地址信息分别下发给各个隧道客户端,这样,私网的VOIP业务便可以穿越NAT/NAPT通过公网与其他私网用户互通,并且无需对NAT/NAPT进行配置。本发明中由于采用了基于隧道技术实现各个私网(局域网)间的地址信息互通,使得整个实现过程简单,且可靠性高。同时,本发明的实现有效地避免了VOIP技术固有的特点可能给实现不同私网间互通带来的问题。
文档编号H04L12/28GK1767493SQ200410086279
公开日2006年5月3日 申请日期2004年10月29日 优先权日2004年10月29日
发明者单洪政, 卢晓青, 刘玉鑫 申请人:北京佳讯飞鸿电气有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1