配置私网IPv6路由FRR示例
IPv6 VPN site中的多个CE接入到同一台PE上时,配置私网IPv6 FRR特性,当PE与CE之间转发不通时,可以快速将流量切换到另一条PE与CE相连的链路上。
组网需求
同一站点的不同私网CE对等体通过BGP接入到同一PE,PE通过CE对等体学到了多条到达同一私网前缀的IPv6 VPN路由。当希望这些路由为主备关系时,可以配置私网IPv6路由的FRR。配置私网IPv6路由FRR功能后,PE上会生成去往该私网前缀的主备路由。当进行私网IPv6数据转发时,当主路由所在链路发生故障时,流量可以快速切换到备份路由所在的链路上。
如图8-22所示,PE与CE1、CE2之间建立EBGP邻居,PE到DeviceA的Loopback1有两条BGP路由可达,Link_A为最优路由所在的路径,Link_B为次优路由所在的路径。要求在PE上配置私网IPv6 Auto FRR特性,使链路Link_A出现转发故障时,IPv6流量可以快速切换到Link_B上。
配置注意事项
VPN FRR场景,主路径故障恢复后,会进行路径回切。在这个过程中,可能由于各个节点IGP收敛时序不同,造成回切丢包。为了解决这个问题,需要执行route-select delay delay-value命令,配置选路延迟功能,保证在主路径设备上的转发表项刷新稳定后再进行回切。具体的回切延迟时间delay-value与设备上实际路由数量等因素有关,用户需要根据实际情况合理配置。
配置思路
采用如下的思路配置私网IPv6 Auto FRR功能。
VPN站点内配置IGP,使得DeviceA的Loopback接口路由可以发送到CE1,CE2。
在PE上配置支持IPv6地址族的VPN实例vpna,将GE1/0/0、GE2/0/0绑定到vpna上。
PE与CE1、CE2之间分别建立EBGP对等体。CE1、CE2上将IGP路由引入到BGP中,BGP路由引入到IGP中。
PE上使能私网IPV6 Auto FRR功能。
数据准备
为完成此配置例,需准备如下的数据:
PE上的VPN实例名称(vpna),VPN实例IPv6地址族的属性,如:RD(100:1),VPN Target(100:100)
CE1、CE2上将IGP路由引入到BGP中时,附加的MED值。
操作步骤
- VPN站点内配置路由器上各接口的IPv6地址
配置过程略,具体配置请参见后面的配置文件。
- VPN站点内配置IGP,使得DeviceA的Loopback接口路由可以发送到CE1,CE2。这里以OSPFv3为例
# 配置CE1。
[~CE1] ospfv3 1
[*CE1-ospfv3-1] router-id 2.2.2.2
[*CE1-ospfv3-1] quit
[*CE1] interface gigabitethernet 2/0/0
[*CE1-GigabitEthernet2/0/0] ospfv3 1 area 0.0.0.0
[*CE1-GigabitEthernet2/0/0] quit
[*CE1] commit
CE2、DeviceA上的配置与CE1类似,具体配置请参见后面的配置文件。
配置完成后,CE上运行命令display ipv6 routing-table可以查看到CE1、CE2学习到DeviceA的Loopack 1接口路由。以CE1为例:
[~CE1] display ipv6 routing-table Routing Table : _public_ Destinations : 10 Routes : 10 Destination : ::1 PrefixLength : 128 NextHop : ::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : InLoopBack0 Flags : D Destination : ::FFFF:127.0.0.0 PrefixLength : 104 NextHop : ::FFFF:127.0.0.1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : InLoopBack0 Flags : D Destination : ::FFFF:127.0.0.1 PrefixLength : 128 NextHop : ::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : InLoopBack0 Flags : D Destination : 2001:DB8:0:: PrefixLength : 64 NextHop : 2001:DB8:4::2 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet1/0/0 Flags : D Destination : 2001:DB8:4::2 PrefixLength : 128 NextHop : ::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet1/0/0 Flags : D Destination : 2001:DB8:2:: PrefixLength : 64 NextHop : 2001:DB8:2::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet2/0/0 Flags : D Destination : 2001:DB8:2::1 PrefixLength : 128 NextHop : ::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet2/0/0 Flags : D Destination : 2001:DB8:3:: PrefixLength : 64 NextHop : FE80::5451:0:FAC1:1 Preference : 10 Cost : 3124 Protocol : OSPFv3 RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet2/0/0 Flags : D Destination : 2001:DB8:4::1 PrefixLength : 128 NextHop : FE80::5451:0:FAC1:1 Preference : 10 Cost : 1562 Protocol : OSPFv3 RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet2/0/0 Flags : D Destination : FE80:: PrefixLength : 10 NextHop : :: Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : NULL0 Flags : D
- 在PE上配置支持IPv6地址族的VPN实例,并将连接CE的接口与VPN实例绑定
# 在PE上配置VPN实例vpna,并将vpna与接口GE1/0/0和GE2/0/0绑定。
<PE> system-view
[~PE] ip vpn-instance vpna
[*PE-vpn-instance-vpna] ipv6-family
[*PE-vpn-instance-vpna-af-ipv6] route-distinguisher 100:1
[*PE-vpn-instance-vpna-af-ipv6] vpn-target 100:100
[*PE-vpn-instance-vpna-af-ipv6] quit
[*PE-vpn-instance-vpna] quit
[*PE] interface gigabitethernet 1/0/0
[*PE-GigabitEthernet1/0/0] ip binding vpn-instance vpna
[*PE-GigabitEthernet1/0/0] ipv6 enable
[*PE-GigabitEthernet1/0/0] ipv6 address 2001:DB8:4::1 64
[*PE-GigabitEthernet1/0/0] quit
[*PE] interface gigabitethernet 2/0/0
[*PE-GigabitEthernet2/0/0] ip binding vpn-instance vpna
[*PE-GigabitEthernet2/0/0] ipv6 enable
[*PE-GigabitEthernet2/0/0] ipv6 address 2001:DB8:1::1 64
[*PE-GigabitEthernet2/0/0] quit
[*PE] commit
- 配置PE与CE之间建立EBGP邻居
# 配置PE。
[~PE] bgp 100
[*PE-bgp] ipv6-family vpn-instance vpna
[*PE-bgp6-vpna] peer 2001:DB8:4::2 as-number 65410
[*PE-bgp6-vpna] peer 2001:DB8:1::2 as-number 65410
[*PE-bgp6-vpna] quit
[*PE-bgp] quit
[*PE] commit
# 配置CE1。
[~CE1] bgp 65410
[*CE1-bgp] peer 2001:DB8:4::1 as-number 100
[*CE1-bgp] ipv6-family unicast
[*CE1-bgp-af-ipv6] peer 2001:DB8:4::1 enable
[*CE1-bgp-af-ipv6] quit
[*CE1-bgp] quit
[*CE1] commit
CE2的配置与CE1类似,具体配置信息请参见后面的配置文件。
配置完成后,PE上运行命令display bgp vpnv6 vpn-instance vpna peer,可以看到PE与CE之间的EBGP对等体状态为Established,说明PE与CE之间的EBGP对等体已建立。
<PE> display bgp vpnv6 vpn-instance vpna peer BGP local router ID : 1.1.1.1 Local AS number : 100 Total number of peers : 2 Peers in established state : 2 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 2001:DB8:4::2 4 65410 35 37 0 00:24:31 Established 3 2001:DB8:1::2 4 65410 41 43 0 00:24:03 Established 3
- CE上配置BGP路由与OSPFv3路由的交互
CE上配置OSPFv3路由,引入到BGP中。为了使PE优选LinkA所在的路由,CE1上引入OSPFv3路由到BGP中时配置MED值要小于CE2配置的值。
# 配置CE1。
[~CE1] bgp 65410
[*CE1-bgp] ipv6-family unicast
[*CE1-bgp-af-ipv6] import-route ospfv3 1 med 100
[*CE1-bgp-af-ipv6] quit
[*CE1-bgp] quit
[*CE1] commit
# 配置CE2。
[~CE2] bgp 65410
[*CE2-bgp] ipv6-family unicast
[*CE2-bgp-af-ipv6] import-route ospfv3 1 med 500
[*CE2-bgp-af-ipv6] quit
[*CE2-bgp] quit
[*CE2] commit
# 配置CE1上引入BGP路由到OSPFv3中。
[~CE1] ospfv3 1
[*CE1-ospfv3-1] import-route bgp
[*CE1-ospfv3-1] quit
[*CE1] commit
# 配置CE2上引入BGP路由到OSPFv3中。
[~CE2] ospfv3 1
[*CE2-ospfv3-1] import-route bgp
[*CE2-ospfv3-1] quit
[*CE2] commit
配置完成后,PE上运行命令display ipv6 routing-table vpn-instance可以查看到DeviceA上的Loopback接口路由。
<PE> display ipv6 routing-table vpn-instance vpna Routing Table : vpna Destinations : 8 Routes : 8 Destination : 2001:DB8:0:: PrefixLength : 64 NextHop : 2001:DB8:4::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet1/0/0 Flags : D Destination : 2001:DB8:4::1 PrefixLength : 128 NextHop : ::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet2/0/0 Flags : D Destination : 2001:DB8:1:: PrefixLength : 64 NextHop : 2001:DB8:1::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet2/0/0 Flags : D Destination : 2001:DB8:1::1 PrefixLength : 128 NextHop : ::1 Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet1/0/0 Flags : D Destination : 2001:DB8:2:: PrefixLength : 64 NextHop : 2001:DB8:4::2 Preference : 255 Cost : 100 Protocol : BGP RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet1/0/0 Flags : D Destination : 2001:DB8:3:: PrefixLength : 64 NextHop : 2001:DB8:1::2 Preference : 255 Cost : 0 Protocol : BGP RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet2/0/0 Flags : D Destination : 2001:DB8:4::1 PrefixLength : 128 NextHop : 2001:DB8:4::2 Preference : 255 Cost : 100 Protocol : BGP RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet1/0/0 Flags : D Destination : FE80:: PrefixLength : 10 NextHop : :: Preference : 0 Cost : 0 Protocol : Direct RelayNextHop : :: TunnelID : 0x0 Interface : NULL0 Flags : D
- PE上使能私网IPv6 Auto FRR功能
# 配置PE。
[~PE] bgp 100
[~PE-bgp] ipv6-family vpn-instance vpna
[*PE-bgp6-vpna] auto-frr
[*PE-bgp6-vpna] route-select delay 300
[*PE-bgp6-vpna] quit
[*PE-bgp] quit
[*PE] commit
BGP-VPN实例IPv6地址族下使能auto-frr,只对BGP路由生效。
- 检查配置结果
PE上运行命令display ipv6 routing-table vpn-instance,可以看到PE上到2001:DB8:4::1/128的路由下一跳为2001:DB8:4::2,且有备份下一跳、备份出接口。
[~PE] display ipv6 routing-table vpn-instance vpna 2001:DB8:4::1 verbose Routing Table : vpna Summary Count : 1 Destination : 2001:DB8:4::1 PrefixLength : 128 NextHop : 2001:DB8:4::2 Preference : 255 Neighbour : 2001:DB8:4::2 ProcessID : 0 Label : NULL Protocol : BGP State : Active Adv Cost : 100 Entry ID : 27 EntryFlags : 0x80004100 Reference Cnt: 2 Tag : 0 IndirectID : 0x6 Age : 3sec RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet1/0/0 Flags : D BkNextHop : 2001:DB8:1::2 BkInterface : GigabitEthernet2/0/0 BkLabel : NULL BkTunnelID : 0x0 BkPETunnelID : 0x0 BkIndirectID : 0x5
当CE1上的GE2/0/0接口去使能IPv6,使得链路Link_A上不再发送IPv6路由。
[~CE1] interface Gigabitethernet2/0/0
[*CE1-GigabitEthernet2/0/0] undo ipv6 enable
[*CE1-GigabitEthernet2/0/0] quit
[*CE1] commit
PE上再次运行命令display ipv6 routing-table vpn-instance,可以看到PE上到2001:DB8:4::1/128的路由下一跳为2001:DB8:1::2,且没有备份下一跳、备份出接口。
[~PE] display ipv6 routing-table vpn-instance vpna 2001:DB8:4::1 verbose Routing Table : vpna Summary Count : 1 Destination : 2001:DB8:4::1 PrefixLength : 128 NextHop : 2001:DB8:1::2 Preference : 255 Neighbour : 2001:DB8:1::2 ProcessID : 0 Label : NULL Protocol : BGP State : Active Adv Cost : 500 Entry ID : 27 EntryFlags : 0x80004100 Reference Cnt: 2 Tag : 0 IndirectID : 0x6 Age : 3sec RelayNextHop : :: TunnelID : 0x0 Interface : GigabitEthernet2/0/0 Flags : D
综上所述,私网路由的IPv6 Auto FRR已经生效。
配置文件
- PE的配置文件
# sysname PE # ip vpn-instance vpna ipv6-family route-distinguisher 100:1 apply-label per-instance vpn-target 100:100 export-extcommunity vpn-target 100:100 import-extcommunity # interface GigabitEthernet1/0/0 undo shutdown ip binding vpn-instance vpna ipv6 enable ipv6 address 2001:DB8:4::1/64 # interface GigabitEthernet2/0/0 undo shutdown ip binding vpn-instance vpna ipv6 enable ipv6 address 2001:DB8:1::1/64 # bgp 100 # ipv4-family unicast undo synchronization # ipv6-family vpnv6 policy vpn-target # ipv6-family vpn-instance vpna auto-frr route-select delay 300 peer 2001:DB8:4::2 as-number 65410 peer 2001:DB8:1::2 as-number 65410 # return
- CE1的配置文件
# sysname CE1 # ospfv3 1 router-id 2.2.2.2 import-route bgp # interface GigabitEthernet1/0/0 undo shutdown ipv6 enable ipv6 address 2001:DB8:4::2/64 # interface GigabitEthernet2/0/0 undo shutdown ipv6 enable ipv6 address 2001:DB8:2::1/64 ospfv3 1 area 0.0.0.0 # interface LoopBack1 ip address 2.2.2.2 255.255.255.255 # bgp 65410 peer 2001:DB8:4::1 as-number 100 # ipv4-family unicast undo synchronization # ipv6-family unicast undo synchronization import-route ospfv3 1 med 100 peer 2001:DB8:4::1 enable # return
- CE2的配置文件
# sysname CE2 # ospfv3 1 router-id 3.3.3.3 import-route bgp area 0.0.0.0 # interface GigabitEthernet1/0/0 undo shutdown ipv6 enable ipv6 address 2001:DB8:1::2/64 # interface GigabitEthernet2/0/0 undo shutdown ipv6 enable ipv6 address 2001:DB8:3::1/64 ospfv3 1 area 0.0.0.0 # interface LoopBack1 ip address 3.3.3.3 255.255.255.255 # bgp 65410 peer 2001:DB8:1::1 as-number 100 # ipv4-family unicast undo synchronization # ipv6-family unicast undo synchronization import-route ospfv3 1 med 500 peer 2001:DB8:1::1 enable # return
DeviceA的配置文件
# sysname DeviceA # ospfv3 1 router-id 4.4.4.4 # interface GigabitEthernet1/0/0 undo shutdown ipv6 enable ipv6 address 2001:DB8:2::2/64 ospfv3 1 area 0.0.0.0 # interface GigabitEthernet2/0/0 undo shutdown ipv6 enable ipv6 address 2001:DB8:3::2/64 ospfv3 1 area 0.0.0.0 # interface LoopBack1 ipv6 enable ipv6 address 2001:DB8:4::1/128 ospfv3 1 area 0.0.0.0 # return