SIP ALG穿透NAT的实现
 
摘 要: 为解决SIP应用穿透NAT的问题,剖析了NAT的工作原理,并针对SIP协议信令过程的特点,提出了采用ALG设备解决NAT的穿透问题,具体设计了ALG的结构和相关实现算法,并给出了详细的实现方案。
   关键词: 会话发起协议(SIP) 网络地址转换(NAT) 会话描述协议(SDP) 信令

  会话发起协议SIP [1](Session Initiation Protocol)是由IETF组织于1999年提出的在Internet网络环境中实现实时通信应用的一种信令协议。SIP引发了现代通信体系结构的变革,然而它却在视频能力、会议控制方面没有一个完善的标准;同时,由于大量企业和驻地网都采用了私有编址 [2],并通过网络地址转换NAT(Network Address Translation)来控制与公共网络的通信,而SIP数据包需通过信令消息中的IP地址和端口号来实现目的地寻址,且它的媒体流端口是动态分配的,这就为在NAT上配置固定的包过滤策略带来了困难。因此,SIP穿透NAT是绝大多数VoIP运营商亟待解决的问题。
  当前,几种主要的NAT穿透技术有SIP ALG、Full Proxy、MidCom、×××、隧道穿透、STUN等。其中,SIP ALG方式是在传统的NAT上进行扩展,使之具备感知SIP呼叫控制协议的能力,从而对基于SIP呼叫的地址实现穿透。它是一种比较简单的方案,最突出的特点是ALG和具体的SIP系统无关,对于一个SIP系统不需要做任何修改,只要在响应的NAT上加载SIP ALG,就能完成私网到公网甚至私网中的两个用户之间的SIP连接。
1 SIP应用穿透NAT面临的问题
1.1 NAT的工作原理
  NAT [3]被置于两网间的边界。NAT技术使得一个私有网络可以通过Internet注册IP连接到外部世界。位于内网和外网中的NAT路由器在发送数据包之前,负责把内部IP翻译成外部合法地址。当从外网来的含公网地址信息的数据包到达NAT时,NA