米葫芦网

私网穿越技术在软交换体系中的应用(详解)

热度:7℃ 发布时间:2023-11-16 19:35:05
一、引言
下一代网络(Next Generation Network,NGN)是一种基于分组交换技术的通信网络,在整体构架、信令控制、承载网络等方面都与现有的电路交换网络存在很大不同。软交换技术作为一种在分组网内实现通信话路交换与媒体传输的技术,将是NGN网络的核心技术。由于软交换技术本身就是基于IP分组网的,因此在现有的基础数据网上,完全可以建立起一套软交换的构架。带来的好处有:现有的许多基于IP的协议可以被继续利用,大量的网络设备和终端设备都可以直接被应用到软交换网络中。虽然在现有数据网的基础上构建软交换网络具有上述的优点,但也存在许多问题,其中私网穿越就是一个需要解决的问题。
二、在软交换体系中面临的私网穿越问题
1. 私网的概念与NAPT技术的产生
随着基于TCP/IP的互联网的普及,私有网络(简称私网)的数量和规模也越来越大。私网,就是采用私有的IP地址来连接各个网络设备组成的相对独立和封闭的网络。这种组网方式在组建各种规模局域网时被大量应用。可以说,在当今的网络世界里,使用私网IP地址的网络设备的数量,要远远大于拥有合法Internet网IP地址的设备数量。为了能够让这些设备可以访问私网外部的资源,NAT(网络地址转换)技术也就应运而生。私网内部设备试图访问外部网络时NAT技术可以将其私有的IP地址转换成合法的IP地址。在运用NAT的同时,一般还会运用动态的端口转换(PAT)技术,以解决合法IP地址紧缺的问题。这种技术实现方法是,对于一个私网中的所有设备,共用一个或多个合法的IP地址作为出口地址,只有在设备请求连接外部网络时,才为这个请求分配一个合法IP地址和一个端口号,来进行外部连接;当这个请求结束时,端口号和IP地址也就随即被收回。NAT与PAT经常被同时使用,称为网络地址端口转换(NAPT)。NAPT的运用,为IP网络带来了很多好处:如缓解了IPv4构架下Internet网络的IP地址紧张问题,提高了私有网络内部的安全性和可治理性。由于具有这些优点,NAPT被大量运用到各种私网网关设备上,它是绝大多数网络路由器设备的一个基本功能,也是网络防火墙功能的重要组成部分。


2. NAPT影响软交换的问题
(1)NAT问题
现在假设我们具有一个如图1所示的软交换网络,在这个网络中,终端A与终端B在私网内,只有私网IP地址,而终端C具有独立的合法IP地址。为了便于描述,假设所有终端都是SIP终端,软交换与终端间的通讯也采用标准的SIP协议。若终端A向终端B发起呼叫请求,则会产生一个如图2所示的消息包,这个消息包在经过路由器的NAPT后,变成图3所示的消息包(其中1050为NAPT动态分配的端口号)。


由于终端B在向软交换注册时,通过SIP协议层的注册消息告诉软交换的是它的私有地址,并且在终端B没有主动对外发起连接请求时,防火墙不会为其分配可被访问的IP地址和端口号,因此软交换根本无法将INVITE消息发送给终端B,呼叫无法接续。
(2)PAT问题
假设由终端A向终端C发起呼叫,由于终端C上面没有防火墙或路由器,软交换可以顺利地把INVITE消息包转发到终端C,这个消息中携带SDP信息,用于终端间的媒体协商。媒体协商的主要目的就是选择合适的编解码器,并建立RTP媒体流的连接。由终端A发送的INVITE消息中携带的SDP信息内容如图4所示(其中10006是终端A建立RTP连接的端口号)。


图4 INVITE消息中的SDP信息

终端C收到SDP信息后,就会试图与192.168.0.3:10006建立RTP连接,很明显这是一个私网内部的地址,因此通话也自然无法建立起来。
从以上分析可以看出,NAPT影响到软交换通信的主要有两方面:一方面,私网内设备都采用内部IP地址,虽然经过NAPT可以将IP层的地址转换为外部地址,但是对于更上面的应用层消息中的私有IP地址却无能为力,称作NAT问题。另一方面,私网设备只是在向外部主动发起连接时,才会被分配到合法IP和端口号。若不做非凡处理,设备对外部网络来说是不可见的,也无法接受软交换发来的呼叫请求,这个可以称作PAT问题。基于SIP协议的问题如此,当软交换与终端间使用其它协议如H.323,MGCP或H.248协议时,类似的问题也同样存在。
三、一种私网穿越问题的解决方法
1. 解决NAPT穿越问题的各种方法
(1)NAT/ALG方法
此方法通过在防火墙或路由器上,增加对VoIP相关的应用层协议的识别和处理能力,来实现私网穿越。这种方案比较直观,但是最大缺点就是对于用户来说,必须更换或升级他们的路由器或防火墙,并且随着相关协议的发展和扩充,设备也必须跟着进行升级。
(2)为私网设备设置代理的方法
这种方法不用对用户设备做任何改动,仅在运营软交换网络的局端增加一种非凡的Proxy设备,就可以实现私网的穿越。笔者认为,这种技术与前面的技术相比,具有更大的优越性。这种Proxy,在进行信令的代理和转换的同时,也进行媒体流的代理,我们暂且称其为NAT/FW Proxy。
(3)其它的一些方案
其它穿越私网的方案,还有MIDCOM 方案、STUN方案、TURN方案等,这些方案与NAT/ALG方案类似,不是需要升级路由器、防火墙,就是需要升级终端设备。
2. 用NAT/FW Proxy解决私网PAT问题
以图1为例,将NAT/FW Proxy设备添加到软交换网络中,形成的如图5所示的网络结构。添加了NAT/FW Proxy设备以后,所有私网网关(路由器或防火墙)后面的终端设备,都要将注册地址从软交换设备地址更改为NAT/FW Proxy设备的IP地址。而NAT/FW Proxy设备与软交换设备之间的交互可以采用SIP,MGCP或者H.248等协议,这与其代理的设备类型有关。
一方面,在设备向NAT/FW Proxy发出注册信息后,NAT/FW Proxy会为设备分配一个代理信令端口,然后用NAT/FW Proxy的地址替换原注册信息中的终端地址(Contact域),并通过这个端口向软交换发送。这样,今后无论是终端发向软交换的信令消息,还是软交换发向终端的信令消息,都会经过NAT/FW Proxy,以便于其对这些信令进行非凡处理。另一方面,当私网中的终端设备向NAT/FW Proxy设备发出注册消息时,安装在私网外层的私网网关就会给这个连接随机分配一个合法IP地址与端口号,形成一个“窗口”。NAT/FW PROXY设备收到注册消息后,只要能够设法保持这个“窗口”一直开放,然后把这个端口号与在设备上分配的代理端口号绑定,就相当于建立了一条设备到软交换之间透明的信令通道,也就解决了NAPT中的PAT问题。
保持这个“窗口”的方法,根据终端的不同也会有所区别。比如对于SIP终端,可以设置一个较小的注册有效期,这样终端设备就会不断的向NAT/FW Proxy发出注册消息。对于MGCP终端,可以让NAT/FW Proxy向其不断发送AUEP消息,然后由终端发相应消息来保持“窗口”的开放。无论哪种方式,都要保证终端发送消息的时间间隔要小于“窗口”的开放时限。
3. 用NAT/FW Proxy解决私网NAT问题
假设所有终端都是SIP终端,软交换与终端间的通讯也采用标准的SIP协议。如图5中的配置,由于终端A和终端B都是私网中的设备,因此在向NAT/FW Proxy注册时在私网设备中被分配了访问外部的端口号,假设分别为123.44.55.11:1050(终端A)和123.44.55.22:1060(终端B),同时在NAT/FW Proxy上都被分配了代理信令端口,假设分别为123.44.55.77:1001(终端A)和123.44.55.77:1002(终端B)。现在由A向B发起呼叫,INVITE消息通过私网网关后到达NAT/FW PROXY,NAT/FW PROXY会将这条信令进行代理转换,并发给软交换。如图6、图7所示:




软交换在收到INVITE消息并做相应处理后,预备将其转发给B,由于B也是通过NAT/FW Proxy代理注册到软交换的,因此发送的消息如图8所示,由NAT/FW PROXY接收并做代理转换后,发送给B外层的路由器或防火墙,转换结果如图9所示。



防火墙通过查询自己维护的连接列表,就可以把这条信令消息正确的发送给终端B了。呼叫接续流程的其它信令消息,转接方式与INVITE类似。
4. 用NAT/FW Proxy实现媒体流的代理连接
以图5中终端A呼叫终端C为例,当A发出INVITE消息并到达NAT/FW Proxy后,NAT/FW Proxy会为A分配两个RTP代理端口,一个是呼出代理端口,记为A1,另一个是呼入代理端口,记为A2。NAT/FW Proxy使用A2的端口信息替换原INVITE消息中SDP包中对RTP端口的描述,并发给软交换。当软交换发回终端C的SDP信息时,NAT/FW Proxy记录终端C的实际RTP端口,并用A1的端口信息进行替换,发给终端A。当呼叫建立后,终端A一旦开始发送RTP包,就会在私网设备上建立一个临时的RTP“窗口”,只要媒体流不断在发送(在没有话音时终端也应该发送舒适噪声的RTP包),这个“窗口”就一直打开。由于设备A得到的对端RTP端口实际是NAT/FW Proxy上的呼出代理端口A1,因此RTP包会发向NAT/FW Proxy,NAT/FW Proxy将RTP包再发给终端C真正的RTP端口。同样,终端C得到的A的RTP端口实际是NAT/FW Proxy上的代理端口A2,所以RTP包会发向A2,然后由NAT/FW Proxy通过私网设备上的临时RTP“窗口”将RTP包转发给终端A。
当两个设备分别在两个防火墙内,且都注册到一个NAT/FW Proxy上时,如图5中终端A呼叫终端B的情况,由于NAT/FW Proxy可以知道两个设备都是注册在自己上面的,因此并不需要为每个终端都分配两个代理端口,而只用分配一对端口。如A1和B1,其中A1既作为终端A的呼出端口,也做为终端B的呼入端口,而B1既做为终端B的呼出端口,也做为终端A的呼入端口。假如终端A和终端B还是处于同一个私网网关设备之下,NAT/FW Proxy完全可以不为它们分配任何代理端口,而是让它们在私网内部直接建立RTP流的连接。
5. 其它问题的考虑
以上对于使用NAT/FW Proxy来实现私网穿越的方法的描述,都是基于使用SIP协议的终端,但实际上这种方法并不仅限于SIP终端,当终端使用H.248,MGCP等协议时,只要有对应的NAT/FW Proxy支持,也同样可以实现私网穿越。
从构架上看,需要进行私网穿越代理的设备非常多,一台NAT/FW Proxy无法处理时,完全可以部署多个NAT/FW Proxy,并让这些设备注册到不同的NAT/FW Proxy上。如配置一台NAT/FW Proxy处理SIP终端的私网穿越,配置两台NAT/FW Proxy来处理MGCP终端的私网穿越等。
四、在软交换体系中的扩展应用
使用NAT/FW Proxy的构架,除了能够实现私网穿越的功能外,只要稍加扩展,还可以为软交换体系带来其他一些意外收获。
1.可以保护软交换设备免遭攻击
在正常的配置情况下,软交换设备的地址对于所有用户都是可见的,这时假如有人恶意的对软交换发起某些攻击,比如DoS攻击,是比较难以防范的。但是假如要求所有终端都注册到NAT/FW Proxy设备上,通过NAT/FW Proxy的代理与软交换发生联系,那么软交换地址对外就完全是不可见的了,并且由于NAT/FW Proxy设备的成本相对低廉,可以配置多个,即使遭到攻击,只要让终端上更换一个NAT/FW Proxy进行注册就可以了。
2.防止通信欺诈行为
一般情况下,一旦软交换为双方建立起呼叫,那么双方终端的地址、端口、媒体能力等就完全向对方透明化了,这时假如有人使用一些支持点对点连接的终端,绕过软交换而直接向对方发起连接,则软交换就无法进行计费,也就会出现通信欺诈行为了。假如按照1中所述,把所有终端都注册到NAT/FW Proxy上,那么终端只能通过NAT/FW Proxy上的代理端口进行交互,终端之间透明的只有对方的号码,这样可以在很大程度上避免欺诈行为的发生。
3.可以使媒体流授控
假设所有终端都注册在NAT/FW Proxy上,则终端之间的媒体流也都要经过NAT/FW Proxy进行转接,假如增强NAT/FW Proxy的功能,就完全有可能解决在软交换体系中媒体流不授控的问题,如可以实现按流量计费,可以控制用户带宽防止未授权的媒体流连接(比如视频媒体流),可以获得媒体流的QoS信息,甚至可以满足国家安全部门对敏感通话监听的要求。
但是,要实现如上的这些好处,也是要付出代价的,那就是整个软交换网络的媒体流都要汇聚到各个NAT/FW Proxy所在的位置,大大增加了这部分网络的负担,同时在一定程度上也减弱了软交换由于控制与承载分离而带来的许多灵活性。
五、结束语
本文介绍了一种通过设置非凡的代理服务器,来解决软交换网络中私网穿越问题的方法,现在这种方法已经开始被应用。相信随着软交换网络的规模不断扩大,这种私网穿越的方法会被越来越多的应用到软交换网络当中去。

网友评论
评论
发 布

更多软件教程
  • 软件教程推荐
更多+
Greenfoot设置中文的方法

Greenfoot设置中文的方法

Greenfoot是一款简单易用的Java开发环境,该软件界面清爽简约,既可以作为一个开发框使用,也能够作为集成开发环境使用,操作起来十分简单。这款软件支持多种语言,但是默认的语言是英文,因此将该软件下载到电脑上的时候,会发现软件的界面语言是英文版本的,这对于英语基础较差的朋友来说,使用这款软件就会...

07-05

Egret UI Editor修改快捷键的方法

Egret UI Editor修改快捷键的方法

Egret UI Editor是一款开源的2D游戏开发代码编辑软件,其主要功能是针对Egret项目中的Exml皮肤文件进行可视化编辑,功能十分强大。我们在使用这款软件的过程中,可以将一些常用操作设置快捷键,这样就可以简化编程,从而提高代码编辑的工作效率。但是这款软件在日常生活中使用得不多,并且专业性...

07-05

KittenCode新建项目的方法

KittenCode新建项目的方法

KittenCode是一款十分专业的编程软件,该软件给用户提供了可视化的操作界面,支持Python语言的编程开发以及第三方库管理,并且提供了很多实用的工具,功能十分强大。我们在使用这款软件进行编程开发的过程中,最基本、最常做的操作就是新建项目,因此我们很有必要掌握新建项目的方法。但是这款软件的专业性...

07-05

Thonny设置中文的方法

Thonny设置中文的方法

Thonny是一款十分专业的Python编辑软件,该软件界面清爽简单,给用户提供了丰富的编程工具,具备代码补全、语法错误显示等功能,非常的适合新手使用。该软件还支持多种语言,所以在下载这款软件的时候,有时候下载到电脑中的软件是英文版本的,这对于英语基础较差的小伙伴来说,使用这款软件就会变得十分困难,...

07-05

最新软件下载