当前位置: 华文世界 > 科技

干货分享丨IPv6边缘网络多出口技术方案分析与实际应用

2024-05-07科技

近年来,随着互联网的普及与广泛应用,特别是移动互联网、云计算、物联网、工业互联网的蓬勃发展,传统的IPv4地址资源紧缺问题日益凸显。IPv6能够提供海量的网络地址资源,是实现万物互联,促进生产生活数字化、网络化、智能化发展的关键要素。发展基于IPv6的下一代互联网,是互联网演进升级的必然趋势。目前,国内三大基础电信企业骨干网和城域接入网络已全部支持IPv6,并全面支持IPv6承载和接入服务。因此,原来通过IPv4多链路接入互联网的企业网络,升级改造为IPv4、IPv6双栈方式接入,也势在必行。由于IPv6与IPv4在技术上有诸多不同,因此IPv6多链路出口的路由部署存在着较大差异。

IPv4与IPv6出口在接入互联网络技术上的差异

1.由于IPv4公网地址的局限,边缘网络接入互联网,基本上都采用NAT(Network Address Translation)接入方式,且基本上是PAT(Port Address Translation)方式。IPv6由于有海量的网络地址,边缘网络接入互联网络根本不存在NAT方式。国际标准组织在制订IPv6相关技术标准的时候,建议避免使用IPv6 NAT技术,原因是IPv6 NAT会破坏互联网端到端的可达性。

2.在IPv4环境下,一台网络主机(或接口)一般都配置一个IPv4单播地址,即使有多个网络接口地址,但主机在选择某条路由时,有唯一确定的单播地址。但是在IPv6环境下,单播地址分为全球单播地址(GUA)、链路本地地址(LLA)、唯一本地地址(ULA)等。一台网络设备(或接口)至少有两个以上单播地址。网络设备(或接口)在多个单播IPv6地址的情况下,与外界主动通信时,还要根据目的IPv6地址选择IPv6源地址,因此源地址的选择就存在较大的不确定性。

在IPv4多链路出口情况下,由于存在网络运营商互联互通方面的问题,最常用的出口选路方法采用就近选路原则,即通过缺省路由与运营商(ISP) 的明细路由结合起来完成选路,让主机访问某ISP服务器的流量从连接该ISP的链路转发,避免流量从另外的ISP链路迂回绕道。即使明细路由缺失、或根据源地址等方式进行策略路由选路,内部网络的IPv4地址都会通过NAT44转换成该运营商对应的IPv4地址,并从该运营商的链路上转发出去。路由选择即使不是最优路径,一般也不会导致路由不可达的情况出现。

但是在IPv6的环境下,出口选路相比IPv4的情况会有很大的不同。一方面是因为上述所说的IPv6源地址选择问题。另一方面是因为国际标准组织IETF在制订IPv6相关技术标准时,建议避免使用IPv6 NAT 技术,以免破坏互联网端到端的可达性。

因此,在IPv6网络多出口环境下,要满足端到端可达性,而且出口防火墙在不开启NAT66的情况下,内部主机必须配置多个IPv6地址,有几条链路出口就必须配置相应数量的IPv6地址。但仅仅这些条件还不够。下文结合图 1、表1来介绍。

图 1 IPv6多出口拓扑

表 1 出口设备相关IPv6地址分配

某台有多个GUA地址的内网主机要访问外网时,当选择的源地址是某一运营商(如ISP1)的IPv6地址,在出口设备不做NAT66转换的情况下,出口防火墙很有可能选择将数据从另一运营商(ISP2)的链路进行转发。这样一来就造成数据丢包、路由不可达的情况出现。如图1所示,如果内部主机PC配置了240E:691:2100:101:209::2/64(电信)和 2408:8640:20FF:2:209::2/64(联通)两个GUA地址,在防火墙单向(即使是双向)放行IPv6数据包及不开启NAT66情况下,在出口防火墙选路时,将配置240E:691:2100:101:209::2/64(电信)源地址的数据包,从联通的链路上转发出去,造成数据丢包。PC访问http://www.test-ipv6.com/网站,进行IPv6连接测试,IPv6多项项目测试失败,IPv6连接不正常。

基于IPv6端到端可达与网络路径最优的两种解决方案

1.出口防火墙上配置基于源地址的策略路由

针对上面提到的问题,当有多个GUA地址的内网主机要访问外网时,有两个解决方案。一种办法是:在出口防火墙保留静态和默认路由的情况下,做源地址的策略路由,即根据源IPv6地址选择路由。对于源地址为ISP1运营商的数据包,就从该运营商ISP1链路转发出去;对于源地址为ISP2运营商的数据包,就从该运营商ISP2转发出去,如图2。

图2 华为USG防火墙基于源地址的策略路由配置

PC登录http://www.test-ipv6.com/网站,进行IPv6连接测试,IPv6项目测试全部成功,IPv6连接正常。

但这种办法的缺点是,路由选择可能不是最优路径,流量有可能从另外的ISP链路迂回绕道,造成网速变慢的情况,失去了多家运营商多链路接入的初衷。比如,根据https://ispip.clang.cn/ 网站的数据,其中包含2001:e18::/32 等26条网络前缀条目为中国联通使用,2001:7fa:10::/48等40条网络前缀条目为中国电信使用。如果内部主机分别访问2001:e18::/32和2001:7fa:10::/48这两个网段的网络设备,这两个IPv6 地址的前16位前缀都为2001::/16。根据内部主机IPv6源地址选择原则,一般情况下选择与目的的IPv6地址最长匹配的源IPv6地址,内部主机因此选择2408:8640:20FF:2::为前缀的联通GUA地址,防火墙根据源地址选路,都是选择从联通出口去访问这两个网络地址。因此,访问中国电信的2001:7fa:10::/48网络时,就造成网络的迂回绕道,如图3。

图 3 防火墙IPv6会话表:访问联通和电信的网络,都走了联通出口

当其中一条出口链路故障或中断时(如ISP1),由于采用的是源地址选路的智能路由,会造成内部主机源地址为ISP1地址,网络通信中断。因此,异常处理办法是在基于源地址策略路由的基础上,作链路检测,添加track ip-link Unicom6等命令(如图4)。当检测到某条链路失效时,去往该运营商的策略路由失效,防止数据包从该运营商链路上转发出去,造成数据丢包。

图4 USG防火墙出口的IPv6 链路状态检测

此外,出口防火墙还需要做NAT66或NPTv6转换。如果防火墙选择从ISP1链路转发,而ISP1链路刚好又发生故障,则该条策略路由不生效,ISP1链路的默认路由也不生效(通过链路检测)。根据路由选路原则,数据包选择从另一条ISP2转发出去,这样内部主机源地址为ISP1的GUA 地址,而选择的链路为其他运营商ISP2的,数据包很可能会被丢弃。 因此,对于源地址为ISP1的数据包从ISP2链路上转发时,或对于源地址为ISP2的数据包从ISP1链路转发时,都需要做NAT66或NPTv6转换(如图5)。即对于源地址为ISP1的,需要从ISP2链路转发时,将ISP1的源地址转换为ISP2 地址。

图5 终端IPv6源地址与选择出口运营商链路不一致时,USG做NAT66或NPTv6转换

2.出口防火墙上配置NAT66或NPTv6

当有多个GUA地址的内网主机,在出口防火墙有多链路出口的情况下,访问外网时出现异常的另一种解决方法为:在出口防火墙根据目的地址选路,并且做IPv6 NAT66。这与IPv4 NAT44的方法类似。为了防止网络迂回绕道的问题,出口防火墙根据目的地址选路。目的地址为中国电信的,走中国电信的链路出口,同时还要根据源地址的情况,决定是否做NAT66 转换。如果源地址不是中国电信的GUA,出口防火墙还需要将源地址通过NAT66 转换为中国电信的GUA;源地址是中国电信的,则直接转发不作转换。

如果目的地址和源地址均为中国联通的,则通过中国联通的链路出口,直接转发。如果源地址不是中国联通GUA ,出口防火墙还需要将源地址通过NAT66转换为中国联通的GUA。同时,对多条链路都配置默认路由,防火墙开启全局策略选路,选路方法可以是根据租用的链路带宽、链路质量、链路权重等方式,用最优的方式解决去往非中国联通、和非中国电信的其他站点的访问。

IPv6 NAT66源地址转换方法有两种,即NAT66(前缀地址静态转换)或NPTv6(IPv6-to-IPv6 Network Prefix Translation,NPTv6 RFC6296) 。NAT66只是将IPv6的前缀部分做替换,后几位保持不变。转换设备(如出口防火墙)需要保存这两个地址之间的转换映射关系。它是一种有状态的地址转换技术。NPTv6通过特定的算法,实现IPv6地址之间的双向翻译,转换设备无需保存两者之间的映射关系,是一种无状态的地址翻译技术。但是在出口防火墙安全策略实施后,也必须保留两者之间的映射关系,否则外部数据无法返回到防火墙内部。严格来说,NPTv6尽管在边缘网络内部使用的地址与在边缘网络外部使用的地址不同,但端到端的可达性仍得以保留。NAT66与NPTv6的区别参阅相关文档。NAT66 转换配置方法如图5所示。图6为防火墙IPv6 NAT66转换的会话表。

图6 USG防火墙IPv6 NAT66转换的会话表

在防火墙出口要做NAT66或NPTv6(IPv6-to-IPv6 Network Prefix Translation,NPTv6)转换,在内部主机地址配置上可以考虑不采用运营商多个GUA 地址,内部主机也可以使用单运营商IPv6 GUA地址,或者只配置唯一本地地址(如ULA)等其他方式。

对于内部主机地址为单运营商(如ISP1)的,如果目的地址链路选择为ISP1的,则不需要做NAT转换,数据直接转发就可以了。因此,这种方式大大降低了NAT转换的可能性。内部主机只配置唯一本地地址(ULA)的,则对所有进出防火墙的数据包都要做NAT66或NPTv6转换。而对于内部主机配置两个运营商IPv6 GUA地址的,如果内部主机源地址,和访问的目的地址为同一运营商的,则不需要做NAT转换,也能大大减少NAT转换数量,可提升网络转发效率。

以下根据内部主机配置的GUA地址或ULA地址,相关情况的比照。

从以上对比中对比可知,内部主机配置单个运营商GUA为比较合适的方案。

对于在出口防火墙上配置NAT66或NPTv6这种方案来说,无论哪一条链路故障,因为有链路冗余,都不会造成网络通信中断的情况出现。特别是内部主机只配置唯一本地地址(如ULA)时,NAT66 技术保持了边缘网络IP地址独立性,网络设计人员在规划网络设计时,不需要因为更换网络电信运营商,而对内部网络进行地址重新规划。

但是由于使用NAT66或NPTv6技术,更改了原始IP地址,网络中存在FTP等应用层感知IP地址的应用时,需要部署ALG等相关技术,才能使这些应用正常地工作。同样NAT66或NPTv6由于对地址作了转换,IPSec技术在使用中,影响了包含IP地址的完整性校验,部分IPSec问题可以通过部署防火墙的NAT-T等相关技术解决。

3.BGP等其他技术方案

除了以上两种方案,BGP(Border Gateway Protocol,边界网关协议)技术方案是大型企业接入IPv6网络的最佳选择。BGP是自治系统间的路由协议。BGP交换的网络可达性信息提供了足够的信息来检测路由回路,并根据性能优先和策略约束对路由进行决策。BGP主要用于互联网AS ( 自治系统 )之间的互联,全国各大网络运营商和阿里、腾讯等大型互联网企业,都是通过BGP协议与自身的AS 号来实现多线互联的。

企业可以在APNIC或CNNIC申请自己的AS号和IP地址,通过BGP路由协议,将IP地址信息分别发布到所连接的运营商网络中,实现与多个运营商之间的互联互通。通过BGP协议方案连接网络,使各接入的运营商之间形成备份,当某一运营商出现故障时,系统会将该运营商线路上的访问请求切换到其他运营商线路上。无论是IPv4协议还是IPv6协议,BGP技术方案都是最佳方案之一。而内部主机只需要配置从CNNIC申请来的单一GUA地址就可以了,网络的独立性也得到很好保证。但是从实际来看,将运营维护、安全措施、设备设施及带宽要求与运营商BGP互联是不现实的。

解决方案对比及方案建议

以上两种解决方案,一个是从基于端到端可达性角度出发,另一个是着重于将网络选路最优化作为解决办法,相关情况对比如下表所示。

综合以上两种技术方案,都各有优缺点。方案的选择,取决于企业本身的业务需求和网络接入的带宽情况。为了防止流量的迂回绕道,提高上网的质量,比较而言,方案二中终端配置单运营商GUA地址的方法,适合一般企业使用,值得推荐使用。这也是一般企业多链路接入多家运营商的初衷。由于IPv6 NAT66会破坏互联网端到端的可达性,影响FTP、IPSec等相关业务,可以在较小的地址范围,对出口防火墙做基于源地址的策略路由,因为策略路由会优先于明细路由实施。这其实是两种方案的互为补充,技术人员在实施时可以根据情况灵活调整。

作者:宁波市北仑区传媒中心 缪春伦、王承东、朱晴南