01-SDWAN配置
本章节下载: 01-SDWAN配置 (1.35 MB)
目 录
1.4.1 BGP IPv4 Tnl-Encap-Ext地址族
2.7 配置BGP发布IPv4 Tnl-encap-ext路由
2.7.2 开启BGP发布IPv4 Tnl-encap-ext路由能力
2.7.3 配置BGP IPv4 Tnl-encap-ext路由
2.8.3 通过Priority-Color属性实现流量逃生以及负载分担
2.8.4 配置IP前缀路由仅通过Priority-Color扩展团体属性迭代下一跳
2.10 配置SDWAN网络与EVPN L3VPN over SRv6网络互联
SDWAN(Software Defined Wide Area Network,软件定义广域网)是将SDN技术应用到广域网的一种VPN技术。控制平面通过SSL/MP-BGP通告TTE(Transport Tunnel Endpoint,传输隧道端点)信息,实现不同站点间SDWAN隧道的建立,并通过MP-BGP在不同站点间发布私网路由;数据平面采用UDP或SRv6封装转发数据报文,通过IPsec等安全机制来确保数据的安全传输,为分散在广阔地理范围内的企业网络、数据中心等提供安全可靠的互联服务。
图1-1 SDWAN网络模型示意图
如图1-1所示,SDWAN的典型网络模型包含如下部分:
· CPE(Customer Provided Edge,用户提供的网络边缘):用户网络的边缘设备。
· RR(Route Reflector,路由反射器):用于在CPE之间反射TTE信息和私网路由等。
· TN(Transport Network,传输网络):由运营商提供的广域接入网络,用于连接不同的分支站点。TN主要包括运营商专线网络和Internet公用网络等,它是构建SDWAN Overlay网络的基础。传输网络可以通过TN ID或传输网络的名称来标识。
· RD(Routing Domain,路由域):由彼此之间路由可达的不同传输网络构成的区域。只能在位于同一个路由域内的CPE之间或CPE与RR之间建立SDWAN隧道。
· 组ID:用于在相同路由域内更细化和灵活地控制SDWAN隧道的建立。在同一个路由域内,只有具有相同组ID和传输网络的CPE之间或CPE与RR之间才可以建立SDWAN隧道。
· Site ID:站点ID,用来唯一标识SDWAN网络中的分支站点,通常以一串数字形式呈现。Site ID由网络控制器统一自动分配。
· Device ID:设备ID,是支持SDWAN功能的设备(SDWAN设备)在站点内的唯一标识。一个站点通常包含一台或两台SDWAN设备。
· SDWAN隧道:两个SDWAN设备之间的点到多点逻辑通道。不同站点之间通过SDWAN隧道传输数据报文等,实现不同站点之间的互联。
· SSL(Secure Sockets Layer,安全套接字层)连接:在SDWAN网络中,CPE与RR之间建立SSL连接,通过该连接交互TTE信息,实现控制通道的建立。
· TTE(Transport Tunnel Endpoint,传输隧道端点):SDWAN设备接入传输网的连接点和SDWAN隧道的端点。设备的TTE信息主要包括Site ID、TN ID、Private IP Address、Public IP Address和隧道的封装类型等。
· TTE连接:两个TTE之间的点到点逻辑连接。通常一个SDWAN隧道上建立多个TTE连接。
SDWAN报文分为控制报文和数据报文。
· 控制报文用于在SDWAN网络中通告TTE信息、EVPN路由和本端NAT转换后的Public IP等。
· 数据报文用于转发用户的报文。
如图1-2所示,SDWAN控制报文封装格式为:在数据部分外添加16字节SDWAN头、8字节UDP头和20字节IP头;如需对报文进行安全保护,则还会封装IPsec头。其中,UDP头的目的端口号为SDWAN UDP端口号(缺省为4799)。SDWAN头主要包括如下部分:
· Type:表示报文的类型,长度为8比特。取值为1时,表示SDWAN控制报文;为2时,表示SDWAN数据报文。
· Sub Type:表示控制报文的子类型,长度为8比特。取值为1时,表示NAT地址探测请求报文。
· Version:表示SDWAN协议报文号,目前取值固定为0。
· Reserved:保留字段,取值固定为0。
· Length:表示SDWAN头的长度,长度为16比特。
· Local TTE ID:标识一个本地TTE,长度为32比特。
· Remote TTE ID:标识一个远端TTE,长度为32比特。
图1-2 SDWAN控制报文封装示意图
如图1-3所示,UDP封装的SDWAN数据报文封装格式为:在原始数据报文外添加12字节SDWAN头、8字节UDP头和IP头;如需对报文进行安全保护,则还会封装IPsec头。其中,UDP头的目的端口号为SDWAN UDP端口号(缺省为4799)。SDWAN头主要包括如下部分:
· Type:表示报文的类型,长度为8比特。取值为1时,表示SDWAN控制报文;为2时,表示SDWAN数据报文。
· Protocol:表示内层数据报文的类型,长度为8比特。取值为1时,表示IPv4报文;为2时,表示IPv6报文。
· Length:表示SDWAN头的长度,长度为16比特。
· VN ID:表示SDWAN数据报文所属的VPN实例的VN ID,长度为32比特。若报文属于公网实例,则本字段为全0。
· Flow ID:表示SDWAN数据报文所属的流ID,长度为32比特。可以通过remark flow-id命令对报文标记流ID。若未对报文标记流ID,则取值为全0。关于remark flow-id命令的详细介绍,请参见“ACL和QoS命令”中的“QoS”。
图1-3 UDP封装的SDWAN数据报文封装示意图
如图1-4所示,在跨越IPv6 SDWAN网络建立SRv6 VPN的网络中,采用此封装方式。SRv6封装的SDWAN数据报文封装格式为:在原始数据报文外添加新的IPv6基本头和SRH(Segment Routing Header,SRv6报文头)、8字节UDP头和IP头;如需对报文进行安全保护,则还会封装IPsec头。
图1-4 SRv6封装的SDWAN数据报文封装示意图
为了支持SDWAN,BGP定义了新的地址族——BGP IPv4 Tnl-Encap-Ext地址族。该地址族为IPv4地址族的子地址族,SAFI(Subsequent Address Family Identifier,子地址族标识符)为74。该地址族下交换的路由,称为IPv4 Tnl-encap-ext路由。IPv4 Tnl-encap-ext路由可以在路径属性MP_REACH_NLRI(Multiprotocol Reachable NLRI,多协议可达NLRI)中,携带如下两类信息:
· TTE信息:Site ID、TN ID、Public IP、Private IP、Tunnel Encapsulation和QoS信息等。该信息用来在CPE之间建立数据通道。
· SaaS访问路径质量信息:包括Delay、Jitter、Loss和CQI等。该信息用于在智能选路场景下,为不同的应用选择最佳访问路径。
图1-5 IPv4 Tnl-encap-ext路由的MP_REACH_NLRI属性示意图
如图1-5所示,IPv4 Tnl-encap-ext路由的MP_REACH_NLRI属性包含如下字段:
· Flags:BGP属性标记位,取值为0x90,表示该属性为包含了完整信息的可选非传递属性。
· Type Code:BGP属性类型,取值为14。
· Length:MP_REACH_NLRI属性的长度。
· AFI:地址族标识符,取值为1,表示IPv4地址族。
· SAFI:子地址族标识符,取值为74,表示IPv4 Tnl-Encap-Ext地址族。
· Next hop network address:下一跳IPv4或IPv6地址。
· Number of SNPAs:下面字段中SNPA(Subnetwork Point of Attachment,子网连接点)的数量,取值为0,表示属性中不包含SNPA。
· NLRI:网络层可达性信息。
MP_REACH_NLRI属性的网络层可达性信息包含如下字段:
· NLRI Type:NLRI信息类型。取值1表示携带的是IPv4 TTE信息,取值2表示携带的是SaaS访问路径质量信息,取值3表示携带的是IPv6 TTE信息,取值为4表示携带的是QoS TTE信息,取值为5表示携带的是协同选路TTE信息。
· NLRI Length:NLRI的长度。
· Protocol:NLRI信息使用的协议栈,取值为2表示IPv4协议,取值为10表示IPv6协议。
· Prefix Type:NLRI的前缀类型,取值为1。
· Prefix Length:NLRI的前缀长度。
· Prefix:NLRI的前缀信息。TTE信息的内容为TTE ID,SaaS访问路径质量信息的内容为站点ID和设备ID。
· Data Type:NLRI的数据部分类型,取值为2。
· Data Length:NLRI的数据部分长度。
· Data:NLRI的数据部分。本字段携带了TTE信息或SaaS访问路径质量信息的具体内容。
在SDWAN支持多VPN实例场景中,CPE将VPN实例中的私网路由信息以EVPN IP前缀路由的形式发布给其他CPE。为支持SDWAN,EVPN路由进行了如下扩展:
· 在TUNNEL_ENCAPSULATION_ATTRIBUTE属性中,新增加了一种SDWAN封装类型。IP前缀路由携带了SDWAN封装后,只能在使能了发送SDWAN封装EVPN路由能力的设备之间转发。
· IP前缀路由的NLRI字段携带了VN ID,用来区分属于不同VPN实例的私网路由。
如图1-6所示,SDWAN网络包含控制通道和数据通道两种类型的通道。
图1-6 SDWAN网络隧道示意图
控制通道是指RR和CPE之间发布TTE信息和私网路由的通道。具体的建立过程为:
(1) CPE与RR之间建立SSL连接(控制通道),其中CPE作为SSL的客户端,称为SDWAN client;RR作为SSL的服务器端,称为SDWAN server。
(2) CPE与RR之间互相发送TTE信息。
(3) CPE与RR收到对端发送的TTE信息后,比较TTE信息中携带的路由域和组ID。若路由域和组ID均相同,则建立到达对端的SDWAN隧道(控制通道);若路由域或组ID存在不同,则不建立SDWAN隧道。
如果配置将传输网络的ID作为SDWAN隧道建立的限制条件,则除了路由域和组ID相同外,还需要传输网络的ID相同,才可以建立SDWAN隧道。
(4) 完成SDWAN隧道建立后,CPE、RR自动在本地添加到达对端Systerm IP的UNR(User network route,用户网络路由)路由。
(5) CPE、RR之间基于Systerm IP建立IPv4 Tnl-Encap-Ext地址族下的BGP连接(控制通道)。
数据通道是指CPE之间转发数据报文的通道。具体的建立过程为:
(1) CPE将IPv4 Tnl-encap-ext路由添加SDWAN封装后,通过控制隧道将其发送给RR。IPv4 Tnl-encap-ext路由中携带TTE信息。
(2) RR将TTE信息反射给其他CPE。
(3) CPE收到由RR反射的TTE信息后,保存这些TTE信息。
(4) CPE将从本地站点学习到的VPN路由信息通过SDWAN封装的IP前缀路由发送给RR。
(5) RR将接收到的IP前缀路由反射给其他CPE。
(6) CPE接收到RR反射的IP前缀路由后,根据路由的下一跳地址(即对端CPE的System IP)在本地保存的TTE信息中进行查找,将查找到的TTE信息中的路由域、组ID与本地路由域、组ID进行对比:
¡ 若路由域和组ID均相同,则建立与该TTE的连接,并建立该TTE连接的SDWAN隧道。
¡ 若路由域或组ID存在不同,则不建立TTE连接与SDWAN隧道。
如果配置将传输网络的ID作为SDWAN隧道建立的限制条件,则除了路由域和组ID相同外,还需要传输网络的ID相同,才可以建立SDWAN隧道。
为了保证数据安全传输,可以对数据报文进行IPsec加密。
如果RR对IP前缀路由进行全反射,会使得同一路由域内任意两台CPE间均建立SDWAN隧道。在该网络中,理论上所有站点都能实现互访,存在数据安全隐患;且路由域中的设备数量过多也会对设备性能和网络带宽带来巨大压力。
针对上述问题,网络管理员可以在RR上设置针对IPv4 Tnl-encap-ext路由或SDWAN封装的IP前缀路由的出口策略,使得RR有选择性地将TTE信息以及IP前缀路由只反射给部分CPE。这样只有接收到了TTE信息以及IP前缀路由的CPE之间会建立SDWAN隧道,未接收到TTE信息或IP前缀路由的CPE之间不会建立SDWAN隧道,以实现按需建立SDWAN隧道。按需建立SDWAN隧道可以节约设备资源,并且不建立隧道的租户间无法通信,从而实现了租户隔离。
在RIR-SDWAN协同选路组网中,CPE设备之间建立选路协同关系后,会将TTE连接信息和RIR的链路质量信息同步到对端设备上,保障智能选路功能为业务流量选择最优链路进行转发。当选择的最优链路位于对端设备上时,本端设备会通过SDWAN扩展隧道将业务流量转发到对端设备上,再由对端设备对业务流量进行转发。
关于协同选路的详细介绍,请参见“三层技术-IP路由配置指导”中的“智能选路”。
如图1-7所示,SDWAN扩展隧道的数据报文封装格式为:在数据部分外添加24字节SDWAN扩展头、GRE头和20字节IP头。SDWAN扩展头主要包括如下部分:
· Type:表示报文的类型,长度为8比特。取值为1时,表示控制报文;为2时,表示数据报文。
· Sub Type:表示报文的子类型,长度为8比特。取值为1时,表示BFD报文。
· Protocol:表示原报文的协议类型,长度为8比特。取值为AF_INET时,表示IPv4报文;取值为AF_INET6时,表示IPv6报文。
· Version:表示内层报文版本号,目前取值固定为0。
· Length:表示SDWAN扩展头的长度,长度为16比特。
· Reserved:保留字段,取值固定为0。
· VN ID:表示报文所属的VPN实例的VN ID,长度为32比特。若报文属于公网实例,则本字段为全0。
· Flow ID:表示报文所属的流ID,长度为32比特。
· Local TTE ID:本端TTE ID,长度为32比特。
· Remote TTE ID:远端TTE ID,长度为32比特。
图1-7 SDWAN扩展隧道数据报文封装格式示意图
如图1-8所示,SDWAN扩展隧道的控制报文封装格式为:在数据部分外添加8字节SDWAN扩展头、GRE头和20字节IP头。目前,控制报文主要是指用于检测SDWAN扩展隧道的BFD控制报文。SDWAN扩展头主要包括如下部分:
图1-8 SDWAN扩展隧道控制报文封装格式示意图
如图1-9所示,CPE 1与CPE 2建立选路协同关系,并将TTE连接信息和RIR的链路质量信息同步到对端设备上。当CPE 1从本地站点接收到访问中心站点的业务流量,且CPE 1通过智能选路功能选择出的最优链路为CPE 2设备上的链路时,CPE 1设备会对业务流量进行封装。先在数据部分外添加24字节SDWAN扩展头(其中Local TTE ID为TTE 2,Remote TTE ID为TTE 4)、GRE头和20字节IP头,然后将封装后的数据报文通过扩展隧道转发到CPE 2。CPE 2解封装报文,根据SDWAN扩展头中Local TTE ID和Remote TTE ID获取转发该数据报文的TTE连接,然后对解封装后的报文进行SDWAN封装,封装的SDWAN报文头中的VN ID和Flow ID即为从SDWAN扩展头中获取的VN ID和Flow ID,然后通过TTE连接将报文转发给RR。
如图1-10所示,在SDWAN网络中,站点间的路由发布过程包含三部分:本地站点向CPE发布VPN路由、CPE之间发布路由、CPE向本地站点发布VPN路由。完成这三部分后,站点之间将建立可达路由。
本地站点使用静态路由、RIP、RIPng、OSPF、OSPFv3、IS-IS、IPv6 IS-IS、EBGP或IBGP,将本站点的VPN路由发布给本端CPE。本地站点发布给CPE的是标准的IPv4路由或IPv6路由。
CPE从本地站点学到VPN路由信息后,将其存放到VPN实例的路由表中。CPE为这些标准的IPv4或IPv6路由增加RD和Export Target属性,通过BGP EVPN的IP前缀路由发布给RR,该路由的下一跳地址为本端CPE的System IP。RR将收到的IP前缀路由反射给远端CPE。远端CPE收到RR反射的IP前缀路由后,将IP前缀路由的Export Target属性与自己维护的VPN实例的Import Target属性进行匹配。如果远端CPE上某个VPN实例的Import Target属性与路由的Export Target属性中存在相同的属性值,则接收该IP前缀路由并将其添加到VPN路由表中。
与本地站点向CPE发布路由信息相同,远端站点可以通过多种方式从远端CPE学习VPN路由,包括静态路由、RIP、RIPng、OSPF、OSPFv3、IS-IS、IPv6 IS-IS、EBGP和IBGP。
在SDWAN网络中,CPE设备收到用户站点发送的报文后,根据目的IP查找路由表获取报文的出接口和下一跳信息。不同出接口的转发方式不同:
· 若出接口为CPE的本地接口,则根据转发表将报文从出接口直接转发给下一跳。
· 若出接口为SDWAN隧道接口,则:
a. 根据转发表的下一跳地址,获取下一跳地址的TTE ID。
b. 根据本端和下一跳的TTE ID获取对应TTE连接的信息。
c. 根据该TTE连接信息对报文进行SDWAN封装,封装的SDWAN头中携带数据报文所属VPN实例的VN ID。不同VPN的报文可能迭代到同一条SDWAN隧道上,通过SDWAN头携带的VN ID,可以区分不同的VPN实例,如图1-11所示。
d. 通过SDWAN隧道指定的物理出接口将报文转发出去。
e. 远端CPE接收并解封装SDWAN报文后,根据VN ID在对应的VPN实例中查找路由表转发该报文。
图1-11 SDWAN隧道转发报文示意图
为了保障SDWAN隧道传输数据的机密性和完整性,设备支持通过IPsec为SDWAN报文提供安全保护。为此,IPsec进行了如下扩展:
· 支持SDWAN方式的IPsec安全框架。
· 支持通信对等体之间的多个SDWAN隧道共用一对IPsec SA。
有关IPsec的详细介绍,请参见“安全配置指导”中的“IPsec”。
如图1-12所示,用户在不同地理位置部署了多个IPv6 SDWAN网络,这些SDWAN网络均接入运营商提供的IPv6网络。采用跨越IPv6 SDWAN网络建立SRv6 VPN功能,可以跨越多个IPv6 SDWAN网络以及运营商网络,在不同SDWAN网络的CPE之间建立SRv6 VPN,以实现属于不同SDWAN网络的私网站点用户之间的互通。
在该组网中:
· 支持建立的SRv6 VPN类型包括IP L3VPN over SRv6以及EVPN L3VPN over SRv6。
· 私网站点用户发送的报文在SDWAN网络中通过SDWAN隧道在CPE与Border之间进行转发,在Border设备之间进行IPv6三层转发,以实现不同SDWAN网络私网站点用户之间端到端的通信。
该组网可以实现IPv4私网站点用户与IPv4私网站点用户之间的互通,以及IPv6私网站点用户与IPv6私网站点用户之间的互通。
图1-12 跨越IPv6 SDWAN网络建立SRv6 VPN组网示意图
跨越IPv6 SDWAN网络建立SRv6 VPN组网要求如下:
· 所有SDWAN网络的Underlay网络均为IPv6网络,SDWAN网络中的CPE设备与Border设备基于IPv6地址建立SDWAN隧道。同时,CPE设备和Border设备都需要支持SRv6。
· Border设备作为SDWAN网络中的RR,与CPE设备建立SDWAN隧道,并通过IBGP VPNv4/VPNv6/EVPN会话传递私网路由信息。Border设备之间建立非直连的EBGP VPNv4/VPNv6/EVPN会话,以传递私网路由信息。Border与CPE、Border与Border之间需要建立相同地址族的BGP会话。其中,IP L3VPN over SRv6网络需要建立BGP VPNv4会话;IPv6 L3VPN over SRv6网络需要建立BGP VPNv6会话;EVPN L3VPN over SRv6网络需要建立BGP EVPN会话。
· 每台CPE设备上都需要创建SRv6 TE Policy,用于规划到远端SDWAN网络的SRv6转发路径。
在跨越IPv6 SDWAN网络建立SRv6 VPN组网中,控制平面的工作机制包括:
· 每个SDWAN网络内建立CPE设备与Border设备之间的SDWAN隧道,该SDWAN隧道的类型为SRv6封装的SDWAN隧道。SDWAN网络中,该隧道用于在CPE设备与Border设备之间转发私网流量。建立隧道的过程与“通道建立”相同。
· 私网路由信息以及Locator网段路由信息的发布。私网路由信息用于指导端到端的私网流量转发,Locator网段路由信息用于保障私网流量可以按照SRv6的方式转发。
· SRv6 TE Policy的建立。SRv6 TE Policy规划了从本端CPE设备到对端CPE设备的完整路径,其中规划的必要节点为本端SDWAN网络中的Border设备以及对端SDWAN网络中的Border设备。私网流量通过SRv6 TE Policy的指导来实现跨域转发。有关SRv6 TE Policy的详细介绍,请参见“Segment Routing配置指导”中的“SRv6 TE Policy”。
CPE设备将从远端收到的私网路由迭代到SRv6 TE Policy上,在转发私网流量时沿着SRv6 TE Policy隧道从本地CPE设备依次发往本地Border设备、远端Border设备以及远端CPE设备。在IPv6 SDWAN网络内,私网报文会同时携带内层SRv6封装以及外层SDWAN封装,以通过SDWAN隧道进行转发。在运营商IPv6网络中,私网报文仅携带SRv6封装,进行IPv6三层转发。CPE设备收到来自远端站点的私网报文后,解除其携带的SDWAN封装以及SRv6封装,将报文转发给本地站点内的用户。
图1-13 跨越IPv6 SDWAN网络建立SRv6 VPN组网的私网路由信息发布过程图
CPE之间发布私网路由信息的过程如图1-13所示,以CPE 1将私网路由信息发布到CPE 2和CPE 3为例,私网路由信息跨越IPv6网络在SDWAN网络间传播过程为:
(1) Site 1内的设备通过静态路由、RIP、RIPng、OSPF、OSPFv3、IS-IS、IPv6 IS-IS、EBGP或IBGP,将本站点内的私网路由发布给CPE 1。Site 1发布给CPE 1的是标准的IPv4或IPv6路由。
(2) CPE 1从Site 1学到私网路由信息后,将其存放在VPN实例的IP路由表中。CPE 1为这些标准的IPv4或IPv6路由增加RD和Export Target属性,并分配SRv6 SID。CPE 1通过BGP VPNv4/VPNv6/EVPN路由将私网路由信息发布给Border 1。支持的SRv6 SID类型包括End.DT4 SID、End.DT6 SID、End.DT46 SID、End.DX4 SID和End.DX6 SID。发布的BGP VPNv4/VPNv6/EVPN路由的下一跳地址为CPE 1的System IP(即Border 1与CPE 1建立IBGP连接使用的地址)。
(3) Border 1收到来自CPE 1的BGP路由后,通过EBGP会话向Border 2和Border 3转发这些路由,并应用路由策略为所有发往EBGP邻居的BGP路由添加同一Color扩展团体属性,该Color扩展团体属性用于标识Border设备所在的SDWAN网络。Border 1向Border 2和Border 3转发的路由的下一跳地址为建立EBGP连接使用的源接口地址,一般为Border设备的Loopback接口地址。
(4) Border 2和Border 3接收BGP路由后,将路由的下一跳地址修改为自身的System IP,即Border 2/Border 3与CPE 2/CPE 3建立IBGP会话使用的地址,并将路由转发给CPE 2和CPE 3。
(5) CPE 2和CPE 3收到Border转发的BGP路由后,将BGP路由的Route Target属性与自己维护的VPN实例的Import Target属性进行匹配。如果CPE 2或CPE 3上某个VPN实例的Import Target属性与路由的Route Target属性相同,则接收该路由,根据Color扩展团体属性将该路由迭代到SRv6 TE Policy,并将其添加到VPN实例IP路由表中。
(6) CPE 2和CPE 3通过静态路由、RIP、RIPng、OSPF、OSPFv3、IS-IS、IPv6 IS-IS、EBGP或IBGP等方式将私网路由信息发布给Site 2和Site 3。
图1-14 跨越IPv6 SDWAN网络建立SRv6 VPN组网的Locator网段路由信息发布示意图
如图1-14所示,SRv6 Locator网段路由信息的发布过程为:
· CPE设备与Border设备间通过BGP IPv6单播地址族会话传播各自的Locator网段路由信息。建立BGP IPv6单播地址族会话连接使用的源地址为System IP地址。CPE设备的Locator网段路由信息无需跨域传播,CPE设备仅需知晓同一SDWAN网络内Border设备的Locator网段路由信息。
· Border 1、Border 2和Border 3通过BGP IPv6单播地址族或IGP协议在运营商IPv6网络中传播自己的Locator网段路由信息,使得三台Border设备都互相知晓对方的Locator网段路由信息。
图1-15 SRv6 TE Policy创建示意图
如图1-15所示,SRv6 TE Policy的创建规则为:
· 在CPE上,需要为每个远端SDWAN网络分别创建一个SRv6 TE Policy。例如,在图1-15中,CPE 2上需要创建两个SRv6 TE Policy,分别对应SDWAN网络1和SDWAN网络3。
· 为SRv6 TE Policy设置基于Color引流。因为远端CPE设备发布的BGP私网路由在经过远端Border设备时,都会被添加同一Color扩展团体属性,所以Color引流可以使得来自同一SDWAN网络的BGP私网路由都迭代到同一SRv6 TE Policy上。
· 为SRv6 TE Policy规划的节点由近到远依次为本端SDWAN网络的Border设备、远端SDWAN网络的Border设备。例如,CPE 2为SDWAN网络1创建的SRv6 TE Policy的SID列表节点由近到远依次为6007::101、6006::101。
对于SRv6 VPN组网,CPE设备在为私网报文添加SRv6封装时,除了会将SRv6 TE Policy设置的SID List填入SRv6头中SRH的Segment List,还会将远端CPE为指导报文转发的私网路由分配的SRv6 SID作为SRv6转发路径的尾节点填入Segment List。该机制使得对端SDWAN网络即使增加数台CPE设备,本端的CPE也无需修改SRv6 TE Policy的配置,通过该SRv6 TE Policy仍可以将私网报文转发送至对端CPE设备,可扩展性强。
图1-16 跨越IPv6 SDWAN网络建立SRv6 VPN组网的报文转发过程图
如图1-16所示,以Site 2发往Site 1的报文为例,控制平面完成SDWAN控制隧道的建立、路由的发布以及SRv6 TE Policy 的建立后,私网数据报文的转发路径为Site 2→CPE 2→Boder 2→Border 1→CPE 1→Site 1。报文转发过程为:
(1) CPE 2收到来自私网站点的数据报文时,查找VPN实例的IP路由表,匹配了迭代到SRv6 TE Policy的路由,为数据报文添加SRv6封装。
(2) 添加SRv6封装后,CPE 2根据SRv6报文的外层IPv6目的地址6007::101查找公网IPv6路由表,匹配到Border 2发布的Locator网段路由。由于查找到的Locator网段路由来自BGP协议,而BGP中Locator网段路由的下一跳地址为Border 2的System IP,该路由会迭代到CPE 2与Border 2之间建立的SDWAN隧道上。因此,CPE 2为数据报文在SRv6封装之外添加SDWAN封装,并通过与Border 2之间的SDWAN隧道将数据报文发送给Border 2。
(3) Border 2收到数据报文后,解除报文的SDWAN封装,发现报文外层IPv6目的地址6007::101为本端的SRv6 SID,随即将报文SRH中的SL减1,并将报文的外层IPv6目的地址修改为SL对应的SID 6006::101(即Border 1的SRv6 SID)。
(4) Border 2根据修改后的目的IPv6地址6006::101查找公网IPv6路由表,匹配到Border 1发布的Locator网段路由,通过运营商IPv6网络将报文转发给Border 1。
(5) Border 1收到数据报文后,发现报文外层IPv6目的地址6006::101为本端的SRv6 SID,随即将报文SRH中的SL减1,并将报文的外层IPv6目的地址修改为SL对应的SID 6005::1(即CPE 1的SRv6 SID)。
(6) Border 1根据修改后的目的IPv6地址6005::1查找公网IPv6路由表,匹配到CPE 1发布的Locator网段路由。由于查找到的Locator网段路由来自BGP协议,而BGP中Locator网段路由的下一跳为CPE 1的System IP,该路由会迭代到Border 1与CPE 1之间建立的SDWAN隧道上。因此,Border 1为数据报文在SRv6封装之外添加SDWAN封装,并通过与CPE 1之间的SDWAN隧道将数据报文发送给CPE 1。
(7) CPE 1收到数据报文后,解除数据报文的SDWAN封装。解析SRv6报文头时,发现外层IPv6目的地址为本端的SRv6 SID,并且SRH中的SL=0。因此,CPE 1根据报文头携带的SRv6 SID找到匹配的VPN实例或者下一跳出接口,并解除报文的SRv6封装后将原始报文在VPN实例中查表进行转发或者按照下一跳出接口进行发送。
本特性的支持情况与设备型号有关,请以设备的实际情况为准。
|
系列 |
型号 |
说明 |
|
M9000系列 |
M9006、M9010、M9014、M9016-V |
支持 |
|
M9000-S系列 |
M9008-S、M9008-S-V |
支持 |
|
M9000-AK系列 |
M9000-AK001 |
支持 |
|
M9000-AI-E系列 |
M9000-AI-E4 |
支持 |
|
M9000-AI-E8、M9000-AI-E16 |
支持 |
|
|
M9000-X系列 |
M9000-X06、M9000-X06-B、M9000-X06-B-G、M9000-X06-C-G、M9000-X06-D-G、M9000-X06-G、M9000-X10 |
支持 |
|
M9000-AI-X系列 |
M9000-AI-X06、M9000-AI-X10 |
支持 |
|
M9000-CN系列 |
M9000-CN04、M9000-CN04-G1 |
不支持 |
SDWAN配置任务如下:
(1) 配置站点信息和设备标识
a. 配置设备所属的站点
(2) 配置SDWAN client
(3) 配置SDWAN server
(4) (可选)配置IPsec保护SDWAN隧道
配置方法请参见“安全配置指导”中的“IPsec”。
(5) (可选)配置穿越NAT建立SDWAN隧道
配置方法请参见“三层技术-IP业务配置指导”中的“NAT”
(6) 配置SDWAN隧道
(7) 配置TTE连接连通性检测
(8) 配置BGP发布IPv4 Tnl-encap-ext路由
¡ CPE配置
¡ RR配置
¡ (可选)通过Priority-Color属性实现流量逃生以及负载分担
¡ (可选)配置IP前缀路由仅通过Priority-Color扩展团体属性迭代下一跳
(10) (可选)配置SDWAN网络穿越EVPN VXLAN网络
(11) (可选)配置SDWAN网络与EVPN L3VPN over SRv6网络互联
站点ID是站点在SDWAN网络中的唯一标识。
站点名称可以描述站点的位置、功能等,方便用户更好地识别站点在SDWAN网络中的作用。站点名称不是站点的唯一标识,不同的设备可以配置相同的站点名称。
不同的站点角色在SDWAN网络中的作用不同,站点角色变更会导致SDWAN隧道震荡,从而对业务产生影响,建议在网络部署前规划好设备角色。
(1) 进入系统视图。
system-view
(2) 配置设备所属站点的站点ID。
sdwan site-id site-id
缺省情况下,未配置设备的站点ID。
(3) 配置设备所属站点的站点名称。
sdwan site-name site-name
缺省情况下,未配置设备的站点名称。
(4) 配置设备所属站点的角色。
sdwan site-role { cpe | nat-transfer | rr } *
缺省情况下,未配置站点的角色。
同一个站点内所有支持SDWAN功能的设备上必须配置相同的站点角色。
设备的ID是设备在站点内的唯一标识。
设备的系统IP是本设备与其他设备建立BGP会话时使用的IP地址。
(1) 进入系统视图。
system-view
(2) 配置设备的ID。
sdwan device-id device-id
缺省情况下,未配置设备的ID。
(3) 配置设备的系统IP。
sdwan system-ip [ ipv6 ] interface-type interface-number
缺省情况下,未配置设备的系统IP。
设备的系统IP必须在SDWAN网络中唯一。
配置设备的系统IP时,只有指定的接口为配置了IP地址的LoopBack接口时,本配置才生效。
在SDWAN网络中,CPE/NAT transfer与RR之间通过SSL连接互相发送TTE信息。其中CPE/NAT transfer作为SDWAN client,RR作为SDWAN server。
通过本功能在CPE/NAT transfer上指定与RR建立SSL连接时引用的SSL客户端策略后,CPE/NAT transfer将采用该策略与RR建立SSL连接。SSL连接建立成功后,CPE/NAT transfer将自身的TTE信息发送给RR,RR将自身的TTE信息发送给CPE/NAT transfer设备,完成TTE信息的交互,以便在CPE/NAT transfer与RR之间建立SDWAN隧道。
一个SSL连接只能引用一个SSL客户端策略。多次执行sdwan ssl-client-policy命令,最后一次执行的命令生效。但新的策略仅对修改配置后新创建的SSL连接生效。
配置本功能前需要先完成SSL客户端策略配置。关于SSL客户端策略的详细介绍,请参见“安全配置指导”中的“SSL”。
(1) 进入系统视图。
system-view
(2) 在CPE上指定SDWAN server的信息。
sdwan server system-ip { system-ipv4-address | ipv6 system-ipv6-address } { ip ipv4-address | ipv6 ipv6-address } [ port port-number ] [ vpn-instance vpn-instance-name ]
缺省情况下,CPE上未指定SDWAN server的信息。
(3) 在CPE上指定与RR(SDWAN server)建立SSL连接时引用的SSL客户端策略。
sdwan ssl-client-policy policy-name
缺省情况下,未指定与RR(SDWAN server)建立SSL连接时引用的SSL客户端策略。
执行本配置后,RR将与CPE/NAT transfer建立SSL连接,并通过SSL连接将自身的TTE信息发送给CPE/NAT transfer设备。CPE/NAT transfer也通过SSL连接将自身的TTE信息发送给RR。完成TTE信息的交互后,RR与CPE/NAT transfer将根据TTE信息建立SDWAN隧道。
SSL连接有以下两种建立方式:
· 简便方式:RR上无需配置SSL服务器端策略,RR使用自签名证书(RR自己生成的证书,无需从CA获取)、各SSL参数的缺省值与CPE/NAT transfer建立SSL连接。这种方式简化了配置,但是存在安全隐患。
· 安全方式:设备需要配置SSL服务器端策略、PKI域等。这种方式配置复杂,但是具有更高的安全性。
一个SSL连接只能引用一个SSL服务器端策略。重复执行sdwan ssl-server-policy命令修改SSL连接引用的SSL服务器端策略后,修改后的策略不会生效。只有先执行undo sdwan server enable命令,再执行sdwan server enable命令,新的策略才会生效。
如果采用安全方式建立SSL连接,则需要先完成SSL服务器端策略配置。关于SSL服务器端策略的详细介绍,请参见“安全配置指导”中的“SSL”。
(1) 进入系统视图。
system-view
(2) 在RR设备上开启SDWAN server服务。
sdwan server enable
缺省情况下,RR设备上的SDWAN server服务处于关闭状态。
(3) 在RR上配置SDWAN server服务的TCP端口号。
sdwan server port port-number
缺省情况下,SDWAN server服务的TCP端口号为2004。
(4) (可选)在RR上指定与CPE(SDWAN client)之间建立SSL连接时引用的SSL服务器端策略。
sdwan ssl-server-policy policy-name
缺省情况下,未指定与CPE之间建立SSL连接时引用的SSL服务器端策略。
CPE与CPE/RR之间完成TTE信息交互后,通过比较TTE信息判断是否建立SDWAN隧道:
· 若SDWAN隧道的路由域、组ID和传输网络均相同,则在CPE与CPE/RR之间建立SDWAN隧道。
· 若SDWAN隧道的路由域、组ID或传输网络存在不同,则不在CPE与CPE/RR之间建立SDWAN隧道。
关于隧道的详细介绍及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。
系统视图和Tunnel接口视图下均可以配置SDWAN报文封装时的源UDP端口号。系统视图的配置对所有Tunnel接口都有效,而Tunnel接口视图下的配置只对当前Tunnel接口有效。对于一个Tunnel接口来说,优先采用该Tunnel接口视图下的配置,只有该Tunnel接口下未进行配置时,才采用系统视图的配置。
UDP封装的SDWAN隧道与SRv6封装的SDWAN隧道互斥,设备上不支持同时配置两种封装类型的隧道。
(1) 进入系统视图。
system-view
(2) (可选)配置全局SDWAN报文封装时的源UDP端口号。
sdwan encapsulation global-udp-port port-number
缺省情况下,SDWAN报文的全局源UDP端口号为4799。
(3) 创建模式为UDP封装的SDWAN Tunnel接口,并进入Tunnel接口视图。
interface tunnel tunnel-number mode sdwan udp [ ipv6 ]
在隧道的两端应配置相同的隧道模式,否则会造成报文传输失败。
(4) 指定发送隧道报文时的物理出接口。
tunnel out-interface out-interface-type out-interface-number
缺省情况下,未指定发送隧道报文的出接口,如果存在多条等价路径,随机选择一个出接口发送隧道报文。
(5) 配置SDWAN隧道接口的接口ID。
sdwan interface-id interface-id
缺省情况下,未配置SDWAN隧道接口的接口ID。
(6) (可选)配置SDWAN报文封装时的源UDP端口号。
sdwan encapsulation udp-port port-number [ dynamic [ time ] ]
缺省情况下,SDWAN报文的源UDP端口号与全局配置的源UDP端口号保持一致。
(7) 配置SDWAN隧道的路由域。
sdwan routing-domain domain-name id domain-id
缺省情况下,未配置SDWAN隧道的路由域。
(8) (可选)配置SDWAN隧道的组ID。
sdwan group-id group-id
缺省情况下,未配置SDWAN隧道的组ID。
(9) 配置SDWAN隧道使用的传输网络。
sdwan transport-network network-name id network-id [ restrict ]
缺省情况下,未配置SDWAN隧道使用的传输网络。
(10) 配置隧道的源端地址。请选择其中一项进行配置。
¡ 直接指定隧道的源端地址。
source { ipv4-address | ipv6-address }
指定的地址将作为封装后SDWAN报文的源IP地址。
¡ 指定隧道的源接口。
source interface-type interface-number
采用指定接口的IP地址作为封装后SDWAN报文的源IP地址。
缺省情况下,未设置SDWAN隧道的源端地址。
设备可以通过BFD方式或Keepalive方式检测SDWAN隧道上TTE连接的连通性。当SDWAN隧道上TTE连接出现故障时,设备可以快速检测到故障,以便及时进行相应地处理,如将流量切换到其他TTE连接。
BFD方式通过在SDWAN隧道的所有TTE连接上,周期性地向TTE连接对端发送BFD控制报文,来检测TTE连接的连通性。如果在检测时间内没有收到对端发送的BFD控制报文,则认为本端与对端的TTE连接不可达。关于BFD功能的详细介绍,请参见“网络管理和监控配置指导”中的“BFD”。
Keepalive方式通过在SDWAN隧道的所有TTE连接上,按照指定的时间间隔向对端发送Keepalive请求报文,来检测TTE连接的连通性:
· 如果本端在发送Keepalive请求报文的时间间隔内收到对端发送的Keepalive应答报文,则认为本端与对端的TTE连接可达。
· 如果本端未在发送Keepalive请求报文的时间间隔内收到对端发送的Keepalive应答报文,则本端会尝试重新发送Keepalive请求报文。若在发送Keepalive请求报文的时间间隔×允许未收到Keepalive应答报文的最大连续次数时间内没有收到Keepalive应答报文,则认为本端与对端的TTE连接不可达,将不再使用该TTE连接转发报文。
对于UDP封装的SDWAN隧道,需要注意如下内容:
· 采用BFD方式时,需要在TTE连接的两端均配置sdwan bfd enable命令。
· 若隧道接口下配置了sdwan bfd enable命令,则设备基于BFD方式的检测结果判断TTE连接的连通性;否则,设备基于Keepalive方式的检测结果判断TTE连接的连通性。
对于SRv6封装的SDWAN隧道,完成BFD模板配置后,设备会自动采用BFD方式检测TTE连接的连通性。
(1) 进入系统视图。
system-view
(2) 进入UDP封装的IPv4/IPv6 SDWAN隧道模式的Tunnel接口视图。
interface tunnel tunnel-number [ mode sdwan udp [ ipv6 ] ]
(3) 配置使用BFD检测TTE连接的连通性。
sdwan bfd enable [ template template-name ]
缺省情况下,未使用BFD检测TTE连接的连通性,使用Keepalive报文检测TTE连接的连通性。
(1) 进入系统视图。
system-view
(2) 进入UDP封装的IPv4/IPv6 SDWAN隧道模式的Tunnel接口视图。
interface tunnel tunnel-number [ mode sdwan udp [ ipv6 ] ]
(3) 配置SDWAN隧道发送Keepalive请求报文的时间间隔和允许未收到Keepalive应答报文的最大连续次数。
sdwan keepalive interval interval [ retry retries ]
缺省情况下,SDWAN隧道发送Keepalive请求报文的时间间隔为10秒,允许未收到Keepalive应答报文的最大连续次数为3次。
在应用智能选路的SDWAN组网中,建议将发送Keepalive请求报文的时间间隔配置为1~5秒。
BGP相关命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
(1) 进入系统视图。
system-view
(2) 启动BGP实例,并进入BGP实例视图。
bgp as-number [ instance instance-name ]
缺省情况下,没有运行BGP,不存在BGP实例。
(3) 将CPE或RR配置为对等体。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-number as-number
(4) 创建BGP IPv4 Tnl-encap-ext地址族,并进入BGP IPv4 Tnl-encap-ext地址族视图。
address-family ipv4 tnl-encap-ext
(5) 使能与指定对等体/对等体组交换IPv4 Tnl-encap-ext路由信息的能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } enable
缺省情况下,不能与等体/对等体组交换IPv4 Tnl-encap-ext路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4 Tnl-encap-ext地址族视图。
address-family ipv4 tnl-encap-ext
(4) 对发布给对等体/对等体组的路由或来自对等体/对等体组的路由应用路由策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name { export | import }
缺省情况下,没有为对等体/对等体组指定路由策略。
(5) 设置允许从指定对等体/对等体组收到的路由数量。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *
缺省情况下,不限制从对等体/对等体组接收的路由数量。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4 Tnl-encap-ext地址族视图。
address-family ipv4 tnl-encap-ext
(4) 配置向对等体/对等体组发布路由时,将下一跳属性修改为自身的地址。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-local
缺省情况下,向EBGP对等体/对等体组发布的所有路由时,都将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布EBGP路由时,不修改下一跳属性。
(5) 为从指定对等体/对等体组接收的路由分配首选值。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } preferred-value value
缺省情况下,从对等体/对等体组接收的路由的首选值为0。
(6) 配置对于从对等体/对等体组接收的BGP消息,允许本地AS号在该消息的AS_PATH属性中出现,并配置允许出现的次数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } allow-as-loop [ number ]
缺省情况下,不允许本地AS号在接收消息的AS_PATH属性中出现。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4 Tnl-encap-ext地址族视图。
address-family ipv4 tnl-encap-ext
(4) 配置RR作为路由反射器,CPE或NAT设备作为路由反射器的客户机。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client
缺省情况下,没有配置路由反射器及其客户机。
(5) (可选)允许路由反射器在客户机之间反射IPv4 Tnl-encap-ext路由。
reflect between-clients
缺省情况下,允许路由反射器在客户机之间反射IPv4 Tnl-encap-ext路由。
(6) (可选)配置路由反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4 Tnl-encap-ext地址族视图。
address-family ipv4 tnl-encap-ext
(4) 配置向对等体/对等体组发布团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-community
缺省情况下,不向对等体/对等体组发布团体属性。
(5) 配置向对等体/对等体组发布扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情况下,不向对等体/对等体组发布扩展团体属性。
请在用户视图下执行如下命令,复位或软复位BGP会话。
· 复位Tnl-encap-ext地址族下的BGP会话。
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all |external | group group-name | internal } ipv4 tnl-encap-ext
· 手工对Tnl-encap-ext地址族下的BGP会话进行软复位。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } ipv4 tnl-encap-ext
在SDWAN网络中,CPE之间通过IP前缀路由发布站点VPN路由,因此需要在CPE上开启发布SDWAN封装的EVPN路由的能力。
在SDWAN网络支持不同VPN实例的多租户场景下,CPE通常需要完成以下配置:
· 在VPN实例IPv4/IPv6地址族视图下开启EVPN通告SDWAN路由功能,将VPN路由表中的VPN路由作为EVPN的IP前缀路由发布,该路由携带的封装类型为SDWAN封装。
· 在VPN实例视图下配置VPN实例的VN ID,VPN路由作为IP前缀路由发布时,会携带对应VPN实例下的VN ID,以区分不同租户的报文,实现租户之间的隔离。
· 在BGP EVPN地址族视图下配置向RR发布SDWAN封装的EVPN路由。
在CPE上,evpn sdwan routing-enable命令和peer advertise encap-type sdwan命令需要配合使用。否则,CPE无法将VPN实例下的路由信息发布给RR。
(1) 进入系统视图。
system-view
(2) 进入VPN实例视图。
ip vpn-instance vpn-instance-name
(3) 配置VPN实例的VN ID。
sdwan vn-id vn-id
缺省情况下,VPN实例上VN ID为0。
(4) 进入VPN实例IPv4地址族视图或VPN实例IPv6地址族视图。
¡ 进入VPN实例IPv4地址族视图。
address-family ipv4
¡ 进入VPN实例IPv6地址族视图。
address-family ipv6
(5) 开启EVPN通告SDWAN路由功能。
evpn sdwan routing-enable
缺省情况下,EVPN通告SDWAN路由功能处于关闭状态。
(6) 退回系统视图。
quit
quit
(7) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(8) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(9) 配置向RR发布SDWAN封装的EVPN路由。
peer { group name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise encap-type sdwan
缺省情况下,设备不向对等体/对等体组发布SDWAN封装的EVPN路由。
在SDWAN网络中,RR通常作为路由反射器在CPE之间传递站点VPN路由,因此需要在RR上开启向CPE发布SDWAN封装的EVPN路由的能力。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置BGP路由反射。
a. 配置本机作为路由反射器,CPE作为路由反射器的客户机。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client
缺省情况下,没有配置路由反射器及其客户机。
b. (可选)允许路由反射器在客户机之间反射EVPN路由。
reflect between-clients
缺省情况下,允许路由反射器在客户机之间反射EVPN路由。
c. (可选)配置路由反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。
d. (可选)配置路由反射器对反射的EVPN路由进行过滤。
rr-filter ext-comm-list-number
缺省情况下,路由反射器不会对反射的EVPN路由进行过滤。
e. (可选)允许路由反射器反射路由时修改路由属性。
reflect change-path-attribute
缺省情况下,不允许路由反射器反射路由时修改路由属性。
(5) 配置向CPE发布SDWAN封装的EVPN路由。
peer { group name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise encap-type sdwan
缺省情况下,设备不向对等体/对等体组发布SDWAN封装的EVPN路由。
Priority-Color扩展团体属性是BGP路由的一种扩展团体属性,只能用于SDWAN封装的EVPN路由。在SDWAN网络中,通过添加Priority-Color扩展团体属性,可以为EVPN路由增加备份路径,实现SDWAN网络中数据流量通道故障时的流量逃生。
Priority-Color扩展团体属性的格式为优先级:Site ID:Device ID或优先级:Site ID。其中,优先级的数值决定了备份路径的优先级,该数值越小,优先级越高;Site ID和Device ID标识了SDWAN网络中的一个或多个逃生站点(即SDWAN设备)。
IP前缀路由中未携带Priority-Color扩展团体属性时,只能在BGP-VPN实例路由表和VPN实例IP路由表中添加一条路由,路由的下一跳即为IP前缀路由的下一跳。当这个下一跳不可达时,IP前缀路由也将失效,到达该IP前缀的流量转发将中断。
IP前缀路由携带Priority-Color扩展团体属性后,能够在BGP-VPN实例路由表中添加一条主路由,和多条备路由。如果Priority-Color扩展团体属性中包含Device ID,则设备根据每一个Priority-Color扩展团体属性生成一条备路由;如果Priority-Color扩展团体属性中不包含Device ID,则设备根据Site ID对应站点中的每一台SDWAN设备生成一条备路由。主备路由的前缀相同,备路由添加到VPN实例IP路由表时,下一跳为Priority-Color扩展团体属性中Site ID和Device ID代表设备的System IP。
主路由正常可达时,该路由会被添加到VPN实例IP路由表中。主路由失效时,备路由中最优的一条会被添加到VPN实例IP路由表中。判断最优路由的条件是:
(1) 根据生成备路由的Priority-Color扩展团体属性的优先级值进行判断,优先级数值越小,优先级越高。
(2) 如果多条备路由优先级值相同,则下一跳IP地址最小的备路由为最优。
如果在BGP-VPN IPv4单播地址族/BGP-VPN IPv6单播地址族下,设备通过balance命令开启了BGP负载分担,则无论主路由是否失效,优先级值相同的多条最优路由都可以被添加到VPN实例的IP路由表中,以实现SDWAN数据流量的负载分担。有关BGP负载分担的详细介绍,请参见“三层技术-IP路由配置指导”中的“BGP”。
在形成负载分担的过程中,主路由的优先级值视为0。例如,在开启了负载分担后,主路由正常可达时,主路由和多条优先级值为0的备路由均可以被添加到VPN实例的IP路由表中;主路由失效后,VPN实例IP路由表中的主路由不再参与负载分担,由其他优先级值为0的备路由形成负载分担。如果不存在优先级值为0的备路由,则主路由正常可达时,仅主路由被添加到VPN实例IP路由表中,不形成负载分担;主路由失效后,多条优先级数值最小且相同的备路由被添加到VPN实例IP路由表中,并且形成负载分担。
如图2-1所示,在SDWAN网络中,CPE 1、CPE 2和CPE 3均通过RR反射BGP路由,并且两两之间均建立了SDWAN隧道。
图2-1 Priority-Color扩展团体属性应用场景图
CPE 2向RR发布本地站点的IP前缀路由。RR在向CPE 1反射这些路由时,可以使用路由策略为EVPN路由携带Priority-Color扩展团体属性,Priority-Color扩展团体属性中的Site ID和Device ID为逃生站点CPE 3的Site ID和Device ID。CPE 1接收到这些IP前缀路由后,会将这些路由添加到BGP-VPN实例的路由表中,并为每个IP前缀生成主备两条路由:
· 一条迭代到CPE 1与CPE 2之间SDWAN隧道的主路由。
· 一条迭代到CPE 1与CPE 3之间SDWAN隧道的备路由。
CPE 1和CPE 2之间的路径正常时,主路由将被添加到CPE 1的VPN实例IP路由表中。CPE 1接收到发往CPE 2所连站点的流量后,将会迭代到CPE 1与CPE 2之间的SDWAN隧道进行转发。CPE 1和CPE 2之间的路径出现故障时,主路由失效,备路由将被优选并添加到CPE 1的VPN实例IP路由表中,CPE 1接收到发往CPE 2所连站点的流量后,将会迭代到CPE 1与CPE 3之间的SDWAN隧道进行转发,经过CPE 3发往CPE 2,以实现流量逃生。
CPE 1和CPE 2之间的流量需要借助CPE 3的绕行路径进行负载分担时,可以在RR上将Priority-Color扩展团体属性的优先级配置为0,并在CPE 1上配置BGP路由的负载分担条数大于等于2。CPE 1接收到发往CPE 2所连站点的流量后,将会同时在CPE 1与CPE 2之间的SDWAN隧道、CPE 1与CPE 3之间的SDWAN隧道上进行负载分担转发。
如需通过Priority-Color扩展团体属性实现负载分担,必须要在CPE设备的BGP-VPN IPv4单播地址族视图或BGP-VPN IPv6单播地址族视图下配置balance命令。有关balance命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
(1) 进入系统视图。
system-view
(2) 创建路由策略,并进入该路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
(3) (可选)配置if-match子句。
有关if-match子句的配置,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(4) 配置BGP路由的Priority-Color扩展团体属性。
apply extcommunity priority-color priority-color&<1-32> [ additive ]
缺省情况下,未配置BGP路由的Priority-Color扩展团体属性。
(5) 退回系统视图。
quit
(6) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(7) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(8) 应用本配置中创建的路由策略,为EVPN路由添加Priority-Color扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name { export | import }
缺省情况下,没有为对等体/对等体组指定路由策略。
缺省情况下,在BGP路由迭代的角度上,设备接收到携带了Priority-Color扩展团体属性的IP前缀路由后会同时通过路由的NEXT_HOP属性和Priority-Color扩展团体属性进行下一跳迭代。迭代的过程是:
· NEXT_HOP属性的地址通常为远端CPE的System IP,设备根据该地址查找到对应的TTE连接,查找到的TTE连接对应的SDWAN隧道接口,即为IP前缀路由的下一跳迭代到的下一跳出接口。
· 每一个Priority-Color扩展团体属性中均携带了远端CPE的Site ID信息,或同时携带了远端CPE的Site ID以及Device ID信息。设备根据这些信息查找到对应的TTE连接,并查找到这些TTE连接对应的SDWAN隧道接口。这些SDWAN隧道接口即为根据Priority-Color扩展团体属性迭代到的下一跳出接口。
设备接收到匹配IP前缀路由的报文后,对报文的转发方式为:
· 如果未配置BGP路由的负载分担,则设备会通过根据IP前缀路由NEXT_HOP属性迭代到的SDWAN隧道转发报文。在根据IP前缀路由NEXT_HOP属性迭代到的SDWAN隧道不可用时,设备才会通过根据Priority-Color扩展团体属性迭代到的SDWAN隧道转发报文。
· 如果配置了BGP路由的负载分担,则设备可以同时通过根据IP前缀路由NEXT_HOP属性迭代到的SDWAN隧道、以及根据Priority-Color扩展团体属性迭代到的多条SDWAN隧道对报文进行负载分担转发。
由于Priority-Color易于配置,可以实现SDWAN转发路径的灵活控制,如果网络管理员希望携带Priority-Color扩展团体属性的IP前缀路由不经过上述流程进行迭代,直接通过Priority-Color扩展团体属性进行下一跳迭代,可以配置本功能。配置本功能后,设备接收到匹配IP前缀路由的报文时,仅会通过根据Priority-Color扩展团体属性迭代到的SDWAN隧道转发报文,使得转发路径不受IP前缀路由NEXT_HOP属性的限制,用户只需要修改Priority-Color扩展团体属性的配置就可以控制转发路径,以便灵活实现负载分担。
本功能仅对SDWAN封装、携带Priority-Color扩展团体属性的IP前缀路由生效。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置SDWAN封装的IP前缀路由仅通过Priority-Color扩展团体属性进行下一跳迭代。
evpn-sdwan nexthop-recursive priority-color-only
缺省情况下,设备接收到携带Priority-Color扩展团体属性的IP前缀路由后,先通过路由的NEXT_HOP属性进行下一跳迭代,再通过Priority-Color扩展团体属性进行下一跳迭代。
如图2-2所示,CPE 1和CPE 2处在不同的SDWAN网络中,ASBR 1和ASBR 2同时属于SDWAN网络以及EVPN VXLAN网络。Site 1和Site 2的租户之间相互间通信时,需要穿越运营商的EVPN VXLAN网络。
图2-2 SDWAN网络穿越EVPN VXLAN网络示意图
在SDWAN网络的边界设备ASBR 1和ASBR 2上,配置peer re-originated命令可以实现本功能。配置了peer re-originated命令时:
· ASBR 1和 ASBR 2在接收到SDWAN封装的IP前缀路由后,会将路由的下一跳修改为本地地址,并额外将该IP前缀路由的封装修改为VXLAN封装,使得该IP前缀路由可以被EVPN VXLAN网络的对等体接收并转发。
· ASBR 1和 ASBR 2在接收到VXLAN封装的IP前缀路由后,会将路由的下一跳修改为本地地址,并额外将该IP前缀路由的封装修改为SDWAN封装,使得该IP前缀路由可以被SDWAN网络的对等体接收并转发。
通过上述过程,站点内的私网路由信息就可以穿越SDWAN网络和EVPN VXLAN网络到达远端站点,从而实现站点间租户的互相通信。
为指定对等体配置了peer re-originated命令后,从该对等体接收到的BGP路由在向其他对等体转发时便只能转发修改了路由信息后的路由,导致网络间的边界设备在接收到VXLAN封装的IP前缀路由后无法转发给EVPN VXLAN网络中的其他对等体。如需网络间的边界设备能够发送修改路由信息前的源IP前缀路由,请配置peer advertise original-route命令。有关peer advertise original-route命令的详细介绍,请参见“Segment Routing命令参考”中的“SRv6 VPN”。
请在ASBR设备上完成EVPN VXLAN的相关配置,使得ASBR能够与BGP对等体交互VXLAN封装的BGP EVPN路由,并能够完成VXLAN流量的二三层转发。有关EVPN VXLAN的详细配置,请参见“EVPN配置指导”中的“EVPN VXLAN”。
请在ASBR设备上完成SDWAN的相关配置,使得ASBR能够与同一路由域内的RR和CPE建立SDWAN隧道、交互BGP IPv4 Tnl-encap-ext路由以及通过SDWAN封装的IP前缀路由发布站点VPN路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置从RR以及EVPN VXLAN对等体接收到IP前缀路由后,修改路由的封装类型。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } re-originated [ ip-prefix ] [ replace-rt ]
缺省情况下,设备不修改从对等体/对等体组接收到的EVPN路由的信息。
有关本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
如图2-3所示,Site 1和Site 2的租户之间相互间通信时,需要穿越SDWAN网络和EVPN L3VPN over SRv6网络。CPE位于SDWAN网络中;ASBR同时属于SDWAN网络和EVPN L3VPN over SRv6网络;PE位于EVPN L3VPN over SRv6网络。
图2-3 SDWAN网络与EVPN L3VPN over SRv6网络互联
在SDWAN网络的边界设备ASBR上,配置peer re-originated命令可以实现SDWAN网络互联EVPN L3VPN over SRv6网络。配置了peer re-originated命令后:
· ASBR在接收到SDWAN封装的IP前缀路由后,会将路由的下一跳修改为本地地址,并将该IP前缀路由的封装修改为SRv6封装,使得EVPN L3VPN over SRv6网络的PE可以接收并转发该IP前缀路由。
· ASBR在接收到SRv6封装的IP前缀路由后,会将路由的下一跳修改为本地地址,并将该IP前缀路由的封装修改为SDWAN封装,使得SDWAN网络的CPE可以接收并转发该IP前缀路由。
通过上述过程,站点内的私网路由信息就可以穿越SDWAN网络和EVPN L3VPN over SRv6网络到达远端站点,从而实现站点间租户的互访。
为指定对等体配置了peer re-originated命令后,从该对等体接收到的BGP路由在向其他对等体转发时,只能转发修改了路由信息后的路由,如需网络间的边界设备能够发送修改路由信息前的源IP前缀路由,请配置peer advertise original-route命令。有关peer advertise original-route命令的详细介绍,请参见“Segment Routing命令参考”中的“SRv6 VPN”。
在ASBR设备上,接收到的SRv6封装的IP前缀路由和SDWAN封装的IP前缀路由必须学习到同一个VPN实例的路由表中。
跨越SDWAN网络和EVPN L3VPN over SRv6网络互通的租户必须属于同一个VPN实例。
请在ASBR设备上完成EVPN L3VPN over SRv6网络的相关配置,使得ASBR能够与PE交互SRv6封装的BGP EVPN路由,完成SRv6报文的转发。有关EVPN L3VPN over SRv6的详细配置,请参见“Segement Routing配置指导”中的“EVPN L3VPN over SRv6”。
请在ASBR设备上完成SDWAN的相关配置,使得ASBR能够与同一路由域内的RR和CPE建立SDWAN隧道、交互BGP IPv4 Tnl-encap-ext路由以及通过SDWAN封装的IP前缀路由发布站点VPN路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置从CPE和PE接收到IP前缀路由后,修改路由的封装类型和路由信息。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } re-originated [ ip-prefix ] [ replace-rt ]
缺省情况下,设备不修改从对等体/对等体组接收到的EVPN路由的信息。
有关本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
在穿越NAT建立SDWAN隧道的场景中,若NAT设备上配置的是静态NAT转换,则可以通过在CPE/RR上执行本配置,手工指定隧道的源IP地址和端口号(即SDWAN报文封装时的源UDP端口号)NAT转换后的公网IP地址和公网端口号,而无需部署STUN功能来探测NAT转换后的公网IP地址和公网端口号。
执行本功能后,会导致基于该Tunnel接口建立的TTE连接断开,并根据手工指定的NAT转换后的公网IP地址和公网端口号重新建立TTE连接。
在公网不能主动访问内网的场景下,不建议配置本功能。
(1) 进入系统视图。
system-view
(2) 创建SDWAN Tunnel接口,并进入Tunnel接口视图。
interface tunnel tunnel-number mode sdwan { srv6 | udp } [ ipv6 ]
在隧道的两端应配置相同的隧道模式,否则会造成报文传输失败。
(3) 配置隧道的源IP地址和端口号经NAT转换后对应的公网IP地址和公网端口号。
sdwan nat-global-ip global-address [ global-port global-port ]
缺省情况下,未配置NAT转换后对应的公网IP地址和公网端口号。
在完成上述配置后,在任意视图下执行display命令可以显示配置后SDWAN的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,执行reset命令可以清除相应的统计信息。
表2-1 SDWAN显示和维护
|
操作 |
命令 |
|
显示BGP IPv4 tnl-encap-ext路由信息。 |
display bgp [ instance instance-name ] routing-table ipv4 tnl-encap-ext [ peer ipv4-address { advertised-routes | received-routes } [ statistics ] | [ route-type { tte | tte-ipv6 | tte-qos | saas-path } ] [ { tnlencap-route route-length | tnlencap-prefix } [ advertise-info ] ] | statistics ] |
|
显示指定的BGP-VPN实例路由表中,根据Priority-Color扩展团体属性生成的IPv4/IPv6单播路由信息 |
display bgp [ instance instance-name ] routing-table { ipv4 | ipv6 } [ unicast ] vpn-instance vpn-instance-name system-ip |
|
显示所有的BGP-VPN实例路由表中,根据Priority-Color扩展团体属性生成的IPv4/IPv6单播路由信息 |
display bgp [ instance instance-name ] routing-table { vpnv4 | vpnv6 } system-ip |
|
在RR上显示SDWAN server的状态 |
display sdwan server status |
|
在CPE上显示SSL连接状态 |
display sdwan peer-connection status [ system-ip { system-ipv4-address | ipv6 system-ipv6-address } ] [ ipv4 | ipv6 ] |
|
显示站点的TTE信息 |
display sdwan site-tte [ site-id site-id ] [ ipv4 | ipv6 ] [ verbose ] |
|
显示设备上TTE连接的信息 |
display sdwan tte connection [ site-id site-id [ device-id device-id [ interface-id interface-id ] ] | system-ip { system-ipv4-address | ipv6 system-ipv6-address } ] [ reachable | unreachable ] [ ipv4 | ipv6 ] [ collaboration | count ] |
|
清除TTE连接信息 |
reset sdwan tte connection interface interface-type interface-number [ site-id site-id device-id device-id interface-id interface-id ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!
