网络通信 频道

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

  一、引言
  下一代网络(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设阜⒊鲎⒉嵯⑹保沧霸谒酵獠愕乃酵鼐突岣飧隽铀婊峙湟桓龊戏↖P地址与端口号,形成一个“窗口”。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。
  
文章转载地址:http://cisco.chinaitlab.com/base/23113.html
0
相关文章