五道口生活网 http://www.wdklife.com
级NAT交换IPv6流量。
轻量级双栈的承载级NAT通过一个IPv4地址为多个客户实现IPv4-IPv4的NAT翻译,轻量级双栈主机之间重叠的地址空间通过隧道端点的标识进行区分。
在这种情况下,轻量级的双栈主机配置一个著名范围e.f.g.h/p中的一个地址a.b.c.d给它的执行SI任务的轻量级双栈接口。它还会将保留范围的最后一个IPv4地址配置作为它的默认网关的地址,此时用子网掩码来覆盖一个/p的网络。
Host a.b.c.dHost a.b.c.dHost a.b.c.dSNAT SI2001:0:0:1::1SNAT SI2001:0:0:1::1SNAT SI2001:0:0:1::1<-IPv4-in-IPv6 softwireIPv6报文1<-IPv4-in-IPv6 softwireIPv6报文2<-IPv4-in-IPv6 softwireISP骨干网ISP骨干网ISP骨干网2001:0:0:2::12001:0:0:2::12001:0:0:2::1Dual-stack lite carrier-grade NATDual-stack lite carrier-grade NATDual-stack lite carrier-grade NATSNAT SCSNAT SCSNAT SCNAT129.0.0.1NAT129.0.0.1NAT129.0.0.1IPv4报文2IPv4报文1InternetInternetInternet128.0.0.1128.0.0.1128.0.0.1IPv4主机
IPv4主机
IPv4主机
图5-4 入方向报文 图5-5 SNAT基于主机的体系结构 图5-6 出方向报文
最终的解决方案接收一个IPv4报文,并将其翻译成一个IPv4-in-IPv6的softwire报文然后在softwire中进行传输,在对应的末端,IPv4报文被解封装,最终翻译IPv4地址并将翻译后得到的IPv4地址插入到报文中去。
5.2.1 示例消息流
在图5-5的示例中,轻量级双栈的承载级NAT内的翻译表将被配置为在IP/TCP(a.b.c.d/10000)和IP/TCP(129.0.0.1/5000)之间转发,即:当从一个地址为a.b.c.d的主机收到一个TCP目的端口为10000的报文时,将会在因特网上把它翻译为一个IP源
五道口生活网 http://www.wdklife.com
五道口生活网 http://www.wdklife.com
地址为129.0.0.1,TCP源端口为5000的报文。
表5-4 报文头部内容 报文 IPv6报文2 头部域 IPv6 目的地址 IPv6 源地址 IPv4 目的地址 IPv4 源地址 TCP 目的端口 TCP 源端口 内容 2001:0:0:2::1 2001:0:0:1::1 128.0.0.1 a.b.c.d 80 10000 128.0.0.1 129.0.0.1 80 5000 IPv4报文3 IPv4 目的地址 IPv4 源地址 TCP 目的端口 TCP 源端口 当发出一个IPv4报文时,轻量级双栈主机将它封装在报文1中并通过softwire将它转发到轻量级双栈的承载级NAT。
当它收到报文1时,轻量级双栈的承载级NAT内的SC将IPv4报文交给NAT,NAT将根据翻译表得到:从softwire_1上收到的TCP源端口为10000的报文应该被翻译成IP源地址为129.0.0.1以及TCP源端口为5000的报文3。
图5-6显示一个轻量级双栈的承载级NAT上收到的入消息,当轻量级双栈的承载级NAT收到报文1时,它在翻译表中查看它的IP/TCP目的地址/端口。在图5-3的示例中,NAT将TCP目的端口翻译为10000,将IP目的地址设为a.b.c.d并将报文交给SC然后通过softwire_1进行传输。轻量级家用路由器中的SI将收到的入方向的softwire报文解封装得到IPv4报文,最后将它转发给客户主机。
表5-5 报文头部内容 报文 IPv4报文1 头部域 IPv4 目的地址 IPv4 源地址 TCP 目的端口 TCP 源端口 内容 129.0.0.1 128.0.0.1 5000 80 2001:0:0:1::1 2001:0:0:2::1 a.b.c.d 128.0.0.1 10000 IPv6报文2 IPv6 目的地址 IPv6 源地址 IPv4 目的地址 IPv4 源地址 TCP 目的端口 五道口生活网 http://www.wdklife.com
五道口生活网 http://www.wdklife.com
TCP 源端口 5.2.2 翻译细节
80 在轻量级双栈的承载级NAT内部的翻译和前面的例子一样,所有使用的e.f.g.h/p范围中的著名IPv4地址a.b.c.d的主机将通过softwire的IPv6源地址得到区分。
第六章 封装
在最简单的部署部型中,轻量级双栈只要求IPv4 in IPv6的封装即可,在更复杂的场景里,比如一个站点的网关想同时承担SI(softwire initiator)的任务,则需要用到更复杂的封装。这样,轻量级双栈主机,轻量级双栈家用网关以及轻量级双栈NAT设备必须最少实现IPv4 in IPv6的封装。此外,轻量级双栈NAT设备还可能支持其它封装方式,如L2TPv2/v3,GRE,MPLS,… 如果它们的确支持的话,他们应该按照IETF softwire辐射型(hub&spoke)框架要求的那样支持L2TPv2。
第七章 关于承载级NAT的考虑
一个轻量级双栈的承载级NAT应该按照目前最好的行为来实现,在[RFC4787], [I-D.ietf-behave-tcp] 和 [I-D.ietf-behave-nat-icmp]里可以找到这些行为的要求。其它的一些关于承载级NAT的要求可以在[I-D.nishitani-cgn]里找到。讨论:这些要求需要被统一以达到一致。
7.1 对于每个用户端口的分配
因为IPv4地址将由多个用户共享并且通常有可能采用一个较大的地址空间减小因子,平均来说,对于一个用户只有有限的N个TCP或UDP端口号是可以使用的。这意味着某些需要开放大量TCP端口的应用程序将变得难以工作。例如,据称一个著名的网站使用了AJAX技术并且对于同一个网页能开启69个TCP端口。如果我们假设地址空间减小因子为100(一个IPv4地址由100个用户使用),一个IPv4地址共有65k个端口可以使用,这使得在轻量级双栈隧道端点后的所有设备能够同时使用650个端口。
N个端口分配方式可以按照cookie-cutter(指固定的分配方式)方式,也可以按照对于入方向的连接按要求分配的方式,但这两种方式会造成很大的区别。这里的区别在于平均有N个端口和最多有N个端口之间的区别。若干服务提供商据称已将每个用户
五道口生活网 http://www.wdklife.com
五道口生活网 http://www.wdklife.com
的平均连接数定为个位数,但是相反,任何单个用户都可以通过浏览大量的AJAX/Web 2.0站点使用上万的端口。我们需要有每个用户平均使用端口数目的概念,所以使用为100的地址空间减小因子是现实的。
监听入方向连接的应用程序,比如点到点的应用程序,变得越来越流行,这些应用程序使用了极有限的端口数目,通常只有一个。保证这些应用程序在轻量级双栈的环境下正常工作是十分重要的。类似的,需要某些类型的ALG来穿越NAT的应用程序也变得越来越多,服务提供商的承载级NAT不应该按照这种方法来部署这样的应用程序,所以,有必要保留一部分的端口让端用户自已控制。这是一个混合的环境,在这里大部的端口都是由承载级NAT从共享地址池里进行动态分配,而有限的部分是分配给每个用户的,由用户自已掌握。
一个服务提供商可以为每个用户静态保留一部端口号。注:它们可能是TCP和UDP端口号。最简单的让用户控制相关的NAT绑定的方法是:提供一个web接口(比如这是服务提供商门户网站的一部分),用户通过web进行验证,一量通过,用户即可以通过以下方式的一种,来在承载级NAT配置一个固定的外部IPv4地址/端口:
让承载级NAT在这个地址/端口上转发入方向流量到轻量级双栈的家用网关上,然后让这个设备对它进行处理,这需要在家用网关上支持A+P的语义;
或者让承载级NAT改写那些将发送到拥有私有地址的家用网络的入方向报文的目的地址,但是由于明显的安全原因,重定向至全球IPv4地址的行为是不规范的。注:这个行为与大部分家用网关上的端口转发功能是十分类似的。
为每个用户保留的端口的准确数目是基于服务提供商的考虑的,如果除了静态分配的端口外还需要保留更多的端口,则更多的端口可以进行动态保留。NAT-PMP [I-D.cheshire-nat-pmp]对于这个问题是一个很好的解决方案;像
[I-D.bajko-v6ops-port-restrict ed-ipaddr-assign]中提到的DHCPv6选项也是一个对于进一步保留端口的有趣的解决方案,但是这种方式可能会限制上面提到的A+P的语义,因此可能没有方法来显式得控制端口转发的语义。
更多关于共享IPv4地址的考虑可以在\中找到。
7.2 ALG
承载级NAT只应该为了一些传统的应用程序如FTP,RTSP/RTP,IPsec和PPTP VPN的穿越,而执行一小部分的ALG,并能使用户能够在静态或动态保留的端口号上使用他们自已的ALG。
特别是,承载级NAT不应该为了一个用户,在保留的端口上(不管理静态或是动态分配的)执行任何ALG的功能。
五道口生活网 http://www.wdklife.com
五道口生活网 http://www.wdklife.com
7.3 UPnP
有可能会有用户尝试让家用网关通过隧道向承载级NAT传输UPnP消息,但是不幸的是,这不会取得成功。一些应用程序坚持要在一个著名的端口上运行,并且利用UPnP请求NAT保留这个端口,但是这个端口有可能可用也有可能不可用,它们有可能被另外一个用户正在使用。使用UPnP,一个NAT盒没有办法将此应用程序重定向到其它的端口去,唯一的办法只有否决这个请求。这些应用程序通常会循环尝试某个小范围内的端口,直到最终放弃。这些端口已经被其它用户使用了的可能性是十分大的,所以UPnP不能在这样的轻量级双栈的环境中得到支持。
NAT-PMP提供了更好的语义,使得NAT能够重定向应用程序到另外一未分配的端口上。
7.4 MTU
使用了封装技术(IP in IP或者L2TP)来在IPv6网上携带IPv4的流量将减小报文的有效MTU,不幸的是,路径MTU发现机制并不是一种可靠的处理它的机制,以下推荐一个组合的方案:
对于TCP流量,让承载级NAT重写第一个SYN报文里的MSS为一个较小的值; 对于非TCP流量,在家用网关和承载级NAT之间的隧道上执行分片和重组。在实践中,这意味着将一个IPv4报文放到一个较大的IPv6报文中,然后在隧道的端点分别对这个IPv6报文进行分片和重组。为此将要负出一定的代价,分片的代价不是特别大,但是重组的代价有可能很大,特别在承载级NAT这样需要保存大量流的信息的设备上,但是此时的承载级NAT仅仅需要重组用户发出的大的UDP报文,而不需要重组发往用户的大的UDP报文,这表明,发往一个客户的视频流数据对承载级NAT不会造成严重的影响,但是这需要在家用网关上做更多的工作。
第八章 未来的工作
这一章的描述将包含在本文的以后的版本或是在另一个不同的文章里。
8.1 关于组播的考虑
本文仅仅描述了单播IPv4因为IPv4组播在宽带网络中还没有大规模的部署。关于IPv4组播的考虑将在本文以后的版本中考虑。
五道口生活网 http://www.wdklife.com
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库IPv6过渡方案-DS-lite(3)在线全文阅读。
相关推荐: