3 项目实施过程中存在的问题
(1)NAT/PAT
因为企业内部通常采用私有地址,所以会启用地址转换NAT/PAT功能。NAT是将私有地址和公有地址一一对应,并在一定时间内保持这种对应关系。对于UDP通信,有两种类型的NAT。PAT则是将私有地址+TCP/UDP端口转换并为一个公有地址+一个TCP/UDP端口,通常会将多个私有地址对应一个公有地址,用不同的TCP/UDP端口进行区分。多媒体通信协议在穿越NAT/PAT时都会出现问题,因为通常NAT/PAT只对IP包头中的源IP地址/源端口号进行转换,不能相应地修改这些协议包内的源地址,而这些协议在回传响应时都按其协议包内的源地址发送,结果造成无法建立通信。
穿越NAT/PAT是多媒体通信协议普遍面临的一个问题。一个主要问题是NAT/PAT仅能完成协议外(IP层)地址的转换,而这些多媒体通信协议依靠协议内地址完成通信,所以需要有方案保证两者的一致性。另一个主要问题是如何使终端成为被叫。NAT/PAT无法为终端建立永久的地址绑定关系,当终端完成注册过程后,注册服务器中所记录的地址(NAT/PAT后的公有地址/端口号)是否还可以对应终端的实际私有地址。当采用PAT时,问题则更加严重,因为PAT是根据IP地址+TCP/UDP端口唯一对应一个终端,而不同的流(例如信令流和媒体流)会采用不同的TCP/UDP端口。当注册完成后,PAT只记录了IP地址和TCP/UDP端口与该终端信令流的对应关系,媒体流的对应关系需要在终端发起媒体流时才能建立,这就使该终端作为被叫时媒体流建立PAT对应关系成为一个问题[16]。
(2) PROXY
很多企业网使用代理服务器(RPOXY)作为对外网访问的管理工具。PROXY的主要功能包括NAT、FireWall、用户管理和访问控制等等。微软将企业网内部应用的PROXY通常分为两类,一是Web Proxy,一是WinSock Proxy。Web Proxy主要用于对浏览业务进行控制,也就是说,它只服务于80端口的业务。WinSock Proxy服务于其他类型的业务,例如FTP、TELNET。是否提供某种服务(是否打开TCP/UDP端口)取决于企业网管理员的配置[17]。
4可行的解决办法
(1)穿越NAT/PAT SPAN(Simple Protocol for Augmenting NATs)
SPAN解决了symmetric NAT的穿透问题。SPAN的工作方式与STUN基本相同,只是在客户端询问IP地址时,SPAN服务器返回的不是客户端的公有IP,而是服务器自身的地址和为该用户分配的端口号,同时服务器记录这个客户端的公有地址与自己分配的端口号之间的对应关系。所以当用户B与这个客户端A通信时,无论是信令流还是媒体流,都将通过SPAN server转发,因此对于symmetric NAT而言,信令流与媒体流都发生在SPAN server与客户端之间,是对称的流,穿越就不再成为问题。值得注意的是, 因为需要转发媒体流,SPAN server的压力是比较大的,所以应该采用分布式的部署方式,而不宜再内置于softswitch。
STUN和SPAN都是MIDCOM工作组正在制定的标准[13]。
(2)STUN(Simple Traversal of UDP through NAT)
客户端向STUN服务器发起一个请求询问自身的转换后地址,STUN服务器将收到的请求包中的源地址作为信息返回给客户端,客户端就获得了转换后的地址信息。拥有了转换后的地址信息,客户端就可以在其H.323/MGCP/SIP等协议的协议包内的源地址直接填写这个转换后的地址,同时还可以在终端注册时直接注册这个转换后的公有IP地址,这样就解决了H.323/MGCP/SIP穿越NAT的通信建立问题以及作为被叫时的问题。
需要注意的是,NAT/PAT对于地址转换关系是有一定生命期的,某个地址转换后在一段时间内没有被使用将会被清除,当这个业务流再次出现时,将会建立一个新的地址转换关系,这就意味着STUN的询问过程以及终端的注册过程都需要再执行一遍才能保证通信的正确。解决这个问题一个比较通行的方案是采用某种方式保持NAT/PAT的转换关系,例如在NAT/PAT生命期内重复注册一次,比如NAT/PAT的生命期是3分钟,那么就将注册重复周期设置为2分钟。另外STUN server并非指一个专用的服务器,而是指一种功能、一个协议,我们可以在softswitch或者任何一个需要此功能的服务器上内置此协议。
<< 上一页 [11] [12] [13] [14] 下一页