为什么需要运营商级NAT设备?
2011年2月4日农历大年初二,大家可能留意到这么一则新闻:全球顶级IP地址分配机构IANA分配完了最后5个A级地址块,由此IANA宣告IPv4地址告罄。2011年4月15日,APNIC(亚太互联网络信息中心)宣布其剩余的可自由分配的IPv4地址已全部分配完毕(还剩一个A的非自由分配的地址块留给会员,但每个会员最多可申请4个C的地址),亚太地区进入IPv4地址耗尽阶段。随后几个月,中国各大运营商从APNIC以会员资格申请到了最后的几个C,至此各运营商也陷入了IPv4地址耗尽的困境。
为了解决IPv4地址紧缺的迫切问题,保证业务发展不受影响,必须寻找合适的应对技术,从理论上来说,迁移到IPv6网络是一劳永逸的解决方案,但是IPv6在设计上并没有考虑与现有IPv4网络的兼容问题,二者基本上属于各自独立的状态,而且由于所有的应用都部署在现有的IPv4网络内,无论是宽带用户还是应用服务器迁移到IPv6网络都非一朝一夕可以完成,尤其是在IPv6建设相对薄弱而网民众多的中国,实现的难度更大。因此必须在现有IPv4网络上寻找可以延迟IPv4地址耗尽的应对技术,NAT444/NAT44的方案应运而生。
NAT444/NAT44方案对Internet用户分配IP地址的方式做了改变,由以前给每个宽带用户分配公网IP的方式,改为分配私网IP给每个用户,统一在运营商一端部署NAT设备,在用户访问Internet时,由运营商把用户的私网地址翻译成公网地址以节省公网地址的使用。
从上面两个拓扑图可以看出,NAT444对应的是传统宽带用户以及集团宽带用户的解决方案,而NAT44则是用于3G/4G 网络的智能终端上网的一种解决方案。
无论是NAT444还是NAT44对于运营商一端的NAT设备的要求都是相同的,那么运营商一端要选择什么样的NAT设备呢?
我们知道NAT技术已经在家庭网关和企业网络中应用多年,大至防火墙路由器小至一般的家庭网关设备都支持成熟的NAT技术。那么这些NAT设备是否能够满足运营商级别的需要呢? 我们来探讨一下。
作为运营商级别的NAT设备必须满足如下几个方面的需求:
性能:由于海量的宽带用户访问,对运营商NAT设备的要求远高于之前的NAT设备。
可运营和可管理性(SLA):由于IPv4地址的短缺,必须对每个用户使用的NAT端口数进行控制,否则NAT地址可能会被少数访问量大的用户将端口占尽,而其他人则无端口可用导致访问缓慢。
提高NAT地址/端口的使用率。
对于P2P等应用要有更好的透过性。
支持溯源满足公安部门的检查:需要NAT设备能够输出log到log 服务器,并且输出log的性能需要得到保证。
传统的NAT设备并没有就以上几点做特别的设计和优化,很难满足运营商真正的需求,新一代的运营商级别的NAT设备因此诞生。
运营商级NAT( Carrier Grade NAT) 又称为 LSN (Large Scale NAT), 是专门为满足运营商级别NAT需求而提出的NAT技术。(以下简称为LSN)
LSN设备的设计参照了如下一些规范和要求:
BEHAVE-TCP (RFC 5382)
BEHAVE-UDP (RFC 4787)
BEHAVE-ICMP (RFC 5508)
Draft-ietf-behave-lsn-requirements
IETF draft-nishitani-cgn
IETF draft-shirasaki-nat444
IETF draft-shirasaki-nat444-isp-shared-addr
中国电信NAT444/44设备技术规范(为行标制定)
我们知道,NAT技术从大的方向分为Symetric NAT和Cone NAT(Full Cone,Restricted Cone,Port Restricted Cone NAT)两类。传统的NAT设备基本上只支持Symetric NAT,而LSN设备既支持Symetric NAT也支持Cone NAT( 特别是Full Cone NAT)。
下面介绍一下LSN设备的功能特点:
1. 支持静态NAT映射,动态NAT映射。
这两个功能在所有的NAT设备(无论基于传统的Symetric NAT还是LSN设备)上都支持,属于NAT设备的基本功能。
2. 支持Full cone NAT特性。
Full-Cone NAT从设计上更适合作为运营商NAT设备的技术标准,主要在以下功能特性上能够体现出优势:
1) EIM( 对端无关的地址映射)
客户端通过LSN设备建立一个会话后,后续的会话都会通过同一个NAT地址翻译出去,并且后续的通过同一个源[IP:Port]的会话将利用同一个NAT [IP:Port]进行通信,如图所示
这种处理方式的最大好处是节省NAT设备的端口,特别适合于p2p应用,例如一个用户使用电驴用同一个源端口跟Internet上1000个用户的电驴建立会话,只使用一个NAT端口就够了,而不支持Full-Cone NAT的设备至少要使用1000个端口(每条会话都要占用一个端口)
2) EIF(对端无关的地址过滤)
一旦内部主机通过一个NAT [IP:Port]与外部某主机建立会话,外部任何主机都可以访问这个NAT [IP:Port],LSN设备会将该访问转发到内部主机的[IP:Port],如图所示:
以前NAT设备的p2p穿越实际上是通过p2p软件和Server打洞来实现的,NAT设备可做的事很少,EIF可以让p2p软件不用打洞,直接互相访问,如果要考虑安全因素,可以与ACL,Black/White List配合使用。
3) NAT Sticky
当内部终端选定了一个NAT地址后,后续的来自相同客户端的数据将都采用相同的NAT地址进行转换。NAT Sticky对于一些需要会话持续的访问(例如网银,淘宝购物)以及即时消息访问(例如QQ,MSN)等非常重要。非Full-cone标准的NAT设备必须在软件上专门处理NAT保持才能保证业务访问正常,软件处理增加了设备性能的消耗。
4) Hair-pinning
对于同在一个内网中的用户(公用同一个NAT地址),如果某些应用需要彼此通过NAT地址访问,例如某些p2p下载,某些需要NAT穿透的应用,传统的NAT设备可能无法通过。而LSN设备针对这种情况有专门的处理,保证访问通过。
3. 支持NAT ALG,包括FTP, SIP,PPTP,IPSEC等常用协议;
NAT设备必须支持常用协议的alg功能,否则基于这些常用协议的应用会不正常。
4. 支持用户端口配额策略以便运营。
用户端口配额技术是保证运营商NAT可运营的一个重要Feature。
用户端口配额支持以下几种方式:
1) 动态端口块分配
动态端口块分配需要支持如下四级控制:
a.用户最大端口配额
b.用户最低端口配额
c.为关键应用预留可用端口,例如:为DNS,邮件访问预留端口。
d.将需要发布到Internet的内部应用映射到某一NAT地址的某一端口,以供Internet用户访问。
动态端口快分配方式的优点是可以有效利用每个NAT地址的所有端口,缺点是端口不固定,溯源困难。
2) 静态端口块分配
每个用户分配静态端口范围,例如为内部地址192.168.1.1指定分配NAT地址1.1.1.1的1024—2023这1000个端口。 静态端口快分配方式的优点是便于溯源,甚至不需要发送log,溯源时查询地址端口映射表即可。缺点是静态端口一旦分配,这部分端口只能给分配的用户使用,该用户不上网,则端口被闲置,不利于端口有效利用。
3) 保留端口块分配
保留端口主要用于一些其他的用途,一旦指定,该部分端口不会纳入一般的分配策略。
5. 支持按session数控制用户对于NAT地址的使用
这是所有NAT设备基本都支持的功能,通过上面描述的Full-Cone NAT的NAT转换方式可以看出该方式在用户的上网体验上不如端口配额方式,传统NAT设备使用该方式控制用户的访问,将导致用户在Session数达到限制时无法上网。
6. 支持高性能Log输出,支持规定的溯源格式。
大多数的NAT设备都支持了log输出,但是当log量比较大的时候,不同厂家的NAT设备输出log能力会有差别,同时单台log Server的性能可能也不足以支持巨大的log量和输出速度, A0公司的LSN设备能够支持将log以负载均衡的方式输出到多台log Server,syslog格式支持RFC5424规范,并支持通过Radius报文将log信息发送到AAA系统。
支持静态端口块分配的NAT设备使得溯源变得更为简单,由于客户端地址跟NAT地址以及端口范围的映射被固定设置,所以不需要输出用户会话的Log信息,需要溯源的时候查询最先设计的映射表即可。
7. 支持设备冗余和会话同步
设备冗余是用于高可靠性的需要,避免单点故障,在实现设备冗余的同时,还需要实现会话同步,这样才能保证业务不中断,目前的NAT设备厂家有些能支持设备冗余和会话同步,有些只能支持设备冗余。
8. 支持ACL,IP包检测等安全特性
基于维护和运营安全的需要,我们需要NAT设备支持ACL以控制用户访问,并且需要NAT设备支持一些防DDoS攻击等方面的数据包检测和处理。
LSN设备与传统NAT设备对比