配置VPNv6 FRR示例
在CE多归属环境中,配置VPNv6 FRR可以保证PE设备发生故障时实现IPv6 VPN业务的快速切换。
组网需求
在CE双归属环境中,通过配置VPNv6 FRR特性,当PE之间的主链路转发不通时,IPv6 VPN流量能够快速切换到备份的PE链路上。
如图8-21所示,PE1会从PE2、PE3收到去往CE所在站点同一路由前缀的两条路由。要求在PE1上为IPv6 VPN路由配置备份下一跳,使PE3为PE2的备份下一跳,当PE2出现故障时VPN流量可以快速切换到PE3上。
配置注意事项
- CE双归属到PE上配置不同RD的VPN实例。
- VPN FRR场景,主路径故障恢复后,会进行路径回切。在这个过程中,可能由于各个节点IGP收敛时序不同,造成回切丢包。为了解决这个问题,需要执行route-select delay delay-value命令,配置选路延迟功能,保证在主路径设备上的转发表项刷新稳定后再进行回切。具体的回切延迟时间delay-value与设备上实际路由数量等因素有关,用户需要根据实际情况合理配置。
配置思路
采用如下的思路配置VPNv6 FRR功能。
在MPLS骨干网上(PE1、PE2和PE3)配置OSPF,实现骨干网互通。
在MPLS骨干网上配置MPLS基本能力,使能MPLS LDP,建立LDP LSP。
分别在各PE设备(PE1、PE2和PE3)上配置支持IPv6地址族的VPN实例,并将CE接入PE2和PE3。
在PE与CE之间建立EBGP对等体,引入IPv6 VPN路由;在PE之间建立MP-IBGP对等体。
PE1和PE2上配置静态BFD检测LDP LSP。
在PE1上使能VPNv6 Auto FRR。
数据准备
为完成此配置例,需准备如下的数据:
PE设备所在的AS号,CE设备所在的AS号。
PE设备上配置的VPN实例名称,VPN实例IPv6地址族的其他属性,比如RD、VPN Target。
在PE1上配置的路由策略名称以及ip-prefix名称。
BFD配置名、本地标识符、远端标识符。
操作步骤
- 配置VPN骨干网各接口的IP地址和VPN site中各接口的IPv6地址(略)
- 在MPLS骨干网上配置OSPF协议,实现骨干网PE互通(略)
- 在MPLS骨干网上配置MPLS基本能力和MPLS LDP,建立LDP LSP
# 配置PE1。
<PE1> system-view
[~PE1] mpls lsr-id 1.1.1.1
[*PE1] mpls
[*PE1-mpls] quit
[*PE1] mpls ldp
[*PE1-mpls-ldp] quit
[*PE1] interface gigabitEthernet2/0/0
[*PE1-GigabitEthernet2/0/0] mpls
[*PE1-GigabitEthernet2/0/0] mpls ldp
[*PE1-GigabitEthernet2/0/0] quit
[*PE1] interface gigabitEthernet3/0/0
[*PE1-GigabitEthernet3/0/0] mpls
[*PE1-GigabitEthernet3/0/0] mpls ldp
[*PE1-GigabitEthernet3/0/0] quit
[*PE1] commit
# 配置PE2。
<PE2> system-view
[~PE2] mpls lsr-id 2.2.2.2
[*PE2] mpls
[*PE2-mpls] quit
[*PE2] mpls ldp
[*PE2-mpls-ldp] quit
[*PE2] interface gigabitEthernet1/0/0
[*PE2-GigabitEthernet1/0/0] mpls
[*PE2-GigabitEthernet1/0/0] mpls ldp
[*PE2-GigabitEthernet1/0/0] quit
[*PE2] commit
# 配置PE3。
<PE3> system-view
[~PE3] mpls lsr-id 3.3.3.3
[*PE3] mpls
[*PE3-mpls] quit
[*PE3] mpls ldp
[*PE3-mpls-ldp] quit
[*PE3] interface gigabitEthernet1/0/0
[*PE3-GigabitEthernet1/0/0] mpls
[*PE3-GigabitEthernet1/0/0] mpls ldp
[*PE3-GigabitEthernet1/0/0] quit
[*PE3] commit
此时在PE上执行命令display mpls lsp,可看到PE1与PE2、PE1与PE3之间的LSP建立成功。以PE1的显示为例:
[~PE1] display mpls lsp
------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 1.1.1.1/32 3/NULL -/- 2.2.2.2/32 NULL/3 -/GE2/0/0 2.2.2.2/32 1025/3 -/GE2/0/0 3.3.3.3/32 NULL/3 -/GE3/0/0 3.3.3.3/32 1024/3 -/GE3/0/0
- 在PE设备上配置支持IPv6地址族的VPN实例,将CE接入PE2和PE3
# 配置PE1。
[~PE1] ip vpn-instance vpn1
[*PE1-vpn-instance-vpn1] ipv6-family
[*PE1-vpn-instance-vpn1-af-ipv6] route-distinguisher 100:1
[*PE1-vpn-instance-vpn1-af-ipv6] vpn-target 111:1
[*PE1-vpn-instance-vpn1-af-ipv6] quit
[*PE1-vpn-instance-vpn1] quit
[*PE1] interface loopback2
[*PE1-Loopback2] ip binding vpn-instance vpn1
[*PE1-Loopback2] ipv6 enable
[*PE1-Loopback2] ipv6 address 1999::128
[*PE1-Loobpack2] quit
[*PE1] commit
# 配置PE2。
[~PE2] ip vpn-instance vpn1
[*PE2-vpn-instance-vpn1] ipv6-family
[*PE2-vpn-instance-vpn1-af-ipv6] route-distinguisher 100:2
[*PE2-vpn-instance-vpn1-af-ipv6] vpn-target 111:1
[*PE2-vpn-instance-vpn1-af-ipv6] quit
[*PE2-vpn-instance-vpn1] quit
[*PE2] interface gigabitethernet2/0/0
[*PE2-GigabitEthernet2/0/0] ip binding vpn-instance vpn1
[*PE2-GigabitEthernet2/0/0] ipv6 enable
[*PE2-GigabitEthernet2/0/0] ipv6 address 2001:db8:1::2 64
[*PE2-GigabitEthernet2/0/0] quit
[*PE2] commit
# 配置PE3。
[~PE3] ip vpn-instance vpn1
[*PE3-vpn-instance-vpn1] ipv6-family
[*PE3-vpn-instance-vpn1-af-ipv6] route-distinguisher 100:3
[*PE3-vpn-instance-vpn1-af-ipv6] vpn-target 111:1
[*PE3-vpn-instance-vpn1-af-ipv6] quit
[*PE3-vpn-instance-vpn1] quit
[*PE3] interface gigabitethernet2/0/0
[*PE3-GigabitEthernet2/0/0] ip binding vpn-instance vpn1
[*PE3-GigabitEthernet2/0/0] ipv6 enable
[*PE3-GigabitEthernet2/0/0] ipv6 address 2001:db8:3::2 64
[*PE3-GigabitEthernet2/0/0] quit
[*PE3] commit
- 在PE2与CE,及PE3与CE之间建立EBGP对等体
# 配置PE2。
[~PE2] bgp 100
[*PE2-bgp] ipv6-family vpn-instance vpn1
[*PE2-bgp6-vpn1] peer 2001:db8:1::1 as-number 65410
[*PE2-bgp6-vpn1] quit
[*PE2-bgp] quit
[*PE2] commit
# 配置PE3。
[~PE3] bgp 100
[*PE3-bgp] ipv6-family vpn-instance vpn1
[*PE3-bgp6-vpn1] peer 2001:db8:3::1 as-number 65410
[*PE3-bgp6-vpn1] quit
[*PE3-bgp] quit
[*PE3] commit
# 配置CE。
<CE> system-view
[~CE] bgp 65410
[*CE-bgp] router-id 10.10.10.10
[*CE-bgp] peer 2001:db8:1::2 as-number 100
[*CE-bgp] peer 2001:db8:3::2 as-number 100
[*CE-bgp] ipv6-family unicast
[*CE-bgp-af-ipv6] peer 2001:db8:1::2 enable
[*CE-bgp-af-ipv6] peer 2001:db8:3::2 enable
[*CE-bgp-af-ipv6] network 2001:db8:0:1:2::1 128
[*CE-bgp-af-ipv6] quit
[*CE-bgp] quit
[*CE] commit
完成此步骤后,在PE2和PE3上执行display bgp vpnv6 vpn-instance vpn1 peer命令,可看到PE和CE之间的EBGP对等体建立成功,其状态为“Established”。
以PE2的显示为例:
[~PE2] display bgp vpnv6 vpn-instance vpn1 peer
BGP local router ID : 2.2.2.2 Local AS number : 100 Total number of peers : 1 Peers in established state : 1 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 2001:db8:1::1 4 65001 46 46 0 00:08:36 Established 5
- 在PE之间建立MP-IBGP对等体
# 配置PE1。
[~PE1] bgp 100
[*PE1-bgp] peer 2.2.2.2 as-number 100
[*PE1-bgp] peer 2.2.2.2 connect-interface loopback 1
[*PE1-bgp] peer 3.3.3.3 as-number 100
[*PE1-bgp] peer 3.3.3.3 connect-interface loopback 1
[*PE1-bgp] ipv6-family vpnv6
[*PE1-bgp-af-vpnv6] peer 2.2.2.2 enable
[*PE1-bgp-af-vpnv6] peer 3.3.3.3 enable
[*PE1-bgp-af-vpnv6] quit
[*PE1-bgp] quit
[*PE1] commit
# 配置PE2。
[~PE2] bgp 100
[*PE2-bgp] peer 1.1.1.1 as-number 100
[*PE2-bgp] peer 1.1.1.1 connect-interface loopback 1
[*PE2-bgp] ipv6-family vpnv6
[*PE2-bgp-af-vpnv6] peer 1.1.1.1 enable
[*PE2-bgp-af-vpnv6] quit
[*PE2-bgp] quit
[*PE2-bgp] commit
# 配置PE3。
[~PE3] bgp 100
[*PE3-bgp] peer 1.1.1.1 as-number 100
[*PE3-bgp] peer 1.1.1.1 connect-interface loopback 1
[*PE3-bgp] ipv6-family vpnv6
[*PE3-bgp-af-vpnv6] peer 1.1.1.1 enable
[*PE3-bgp-af-vpnv6] quit
[*PE3-bgp] quit
[*PE3] commit
完成此步骤后,在PE上执行display bgp vpnv6 all peer命令,可看到MP-IBGP对等体建立成功,其状态为“Established”。
以PE1的显示为例:
[~PE1] display bgp vpnv6 all peer
BGP local router ID : 10.10.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 2.2.2.2 4 100 29 26 0 00:20:08 Established 2 3.3.3.3 4 100 18 17 0 00:11:32 Established 1
- 配置静态BFD检测LDP LSP
# 在PE1上配置静态BFD检测LDP LSP
[~PE1] bfd
[*PE1-bfd] quit
[*PE1] bfd for_ldp_lsp bind ldp-lsp peer-ip 2.2.2.2 nexthop 10.10.1.2 interface gigabitethernet2/0/0
[*PE1-bfd-session-for_ldp_lsp] discriminator local 10
[*PE1-bfd-session-for_ldp_lsp] discriminator remote 20
[*PE1-bfd-session-for_ldp_lsp] process-pst
[*PE1-bfd-session-for_ldp_lsp] commit
[~PE1-bfd-session-for_ldp_lsp] quit
# 在PE2上配置静态BFD检测LDP LSP
[~PE2] bfd
[*PE2-bfd] quit
[*PE2] bfd for_ldp_lsp bind ldp-lsp peer-ip 1.1.1.1 nexthop 10.10.1.1 interface gigabitethernet1/0/0
[*PE2-bfd-session-for_ldp_lsp] discriminator local 20
[*PE2-bfd-session-for_ldp_lsp] discriminator remote 10
[*PE2-bfd-session-for_ldp_lsp] commit
[~PE2-bfd-session-for_ldp_lsp] quit
# 配置完成后,在PE1和PE2上执行display bfd session all verbose命令,可以看到“State”字段的值为“Up”,且“BFD Bind Type”字段的值为“LDP_LSP”。
- 使能VPNv6 Auto FRR
# 配置PE1。
[~PE1] bgp 100
[~PE1-bgp] ipv6-family vpn-instance vpn1
[*PE1-bgp6-vpn1] auto-frr
[*PE1-bgp6-vpn1] route-select delay 300
[*PE1-bgp6-vpn1] quit
[*PE1-bgp] quit
[*PE1] commit
- 检查配置结果
以上配置完成后,PE1上执行命令display ipv6 routing-table vpn-instance verbose,可以查看IPv6 VPN路由的备份下一跳、备份标签和备份Tunnel ID的信息。
[~PE1] display ipv6 routing-table vpn-instance vpn1 2001:db8:0:1:2::1 128 verbose
Routing Table : vpn1 Summary Count : 1 Destination : 2001:db8:0:1:2::1 PrefixLength : 128 NextHop : ::FFFF:2.2.2.2 Preference : 255 Neighbour : :: ProcessID : 0 Label : 4099 Protocol : IBGP State : Active Adv Relied Cost : 0 Entry ID : 0 EntryFlags : 0x00000000 Reference Cnt: 0 Tag : 0 Priority : low Age : 450sec IndirectID : 0x5A00006E RelayNextHop : :: TunnelID : 0x0000000001004c4b42 Interface : LDP LSP Flags : RD BkNextHop : ::FFFF:0:303:303 BkInterface : LDP LSP BkLabel : 4098 BkTunnelID : 0x0 BkPETunnelID: 0x0000000001004c4b43 BkIndirectID : 0x5A000070
配置文件
PE1的配置文件
#
sysname PE1
#
ip vpn-instance vpn1
ipv6-family
route-distinguisher 100:1
apply-label per-instance
vpn-target 111:1 export-extcommunity
vpn-target 111:1 import-extcommunity
#
bfd
#
mpls lsr-id 1.1.1.1
#
mpls
#
mpls ldp
#
interface GigabitEthernet2/0/0
undo shutdown
ip address 10.10.1.1 255.255.255.252
mpls
mpls ldp
#
interface GigabitEthernet3/0/0
undo shutdown
ip address 10.20.1.1 255.255.255.252
mpls
mpls ldp
#
interface LoopBack1
ip address 1.1.1.1 255.255.255.255
#
interface LoopBack2
ip binding vpn-instance vpn1
ipv6 enable
ipv6 address 1999::1/128
#
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack1
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack1
#
ipv4-family unicast
undo synchronization peer 2.2.2.2 enable
peer 3.3.3.3 enable
#
ipv6-family vpnv6
policy vpn-target
peer 2.2.2.2 enable
peer 3.3.3.3 enable
#
ipv6-family vpn-instance vpn1
auto-frr
route-select delay 300
#
ospf 1
area 0.0.0.0
network 10.10.1.0 0.0.0.3
network 10.20.1.0 0.0.0.3
network 1.1.1.1 0.0.0.0
#
bfd for_ldp_lsp bind ldp-lsp peer-ip 2.2.2.2 nexthop 10.10.1.2 interface gigabitethernet2/0/0
discriminator local 10
discriminator remote 20
process-pst
#
return
PE2的配置文件
#
sysname PE2
#
ip vpn-instance vpn1
ipv6-family
route-distinguisher 100:2
apply-label per-instance
vpn-target 111:1 export-extcommunity
vpn-target 111:1 import-extcommunity
#
bfd
#
mpls lsr-id 2.2.2.2
#
mpls
#
mpls ldp
#
interface GigabitEthernet1/0/0
undo shutdown
ip address 10.10.1.2 255.255.255.252
mpls
mpls ldp
#
interface GigabitEthernet2/0/0
undo shutdown
ipv6 enable
ip binding vpn-instance vpn1
ipv6 address 2001:db8:1::2/64
#
interface LoopBack1
ip address 2.2.2.2 255.255.255.255
#
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack1
#
ipv4-family unicast
undo synchronization peer 1.1.1.1 enable
#
ipv6-family vpnv6
policy vpn-target
peer 1.1.1.1 enable
#
ipv6-family vpn-instance vpn1
peer 2001:db8:1::1 as-number 65410
import-route direct
#
ospf 1
area 0.0.0.0
network 10.10.1.0 0.0.0.3
network 2.2.2.2 0.0.0.0
#
bfd for_ldp_lsp bind ldp-lsp peer-ip 1.1.1.1 nexthop 10.10.1.1 interface gigabitethernet1/0/0
discriminator local 20
discriminator remote 10
#
return
PE3的配置文件
#
sysname PE3
#
ip vpn-instance vpn1
ipv6-family
route-distinguisher 100:3
apply-label per-instance
vpn-target 111:1 export-extcommunity
vpn-target 111:1 import-extcommunity
#
mpls lsr-id 3.3.3.3
#
mpls
#
mpls ldp
#
interface GigabitEthernet1/0/0
undo shutdown
ip address 10.20.1.2 255.255.255.252
mpls
mpls ldp
#
interface GigabitEthernet2/0/0
undo shutdown
ipv6 enable
ip binding vpn-instance vpn1
ipv6 address 2001:db8:3::2/64
#
interface LoopBack1
ip address 3.3.3.3 255.255.255.255
#
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack1
#
ipv4-family unicast
undo synchronization peer 1.1.1.1 enable
#
ipv6-family vpnv6
policy vpn-target
peer 1.1.1.1 enable
#
ipv6-family vpn-instance vpn1
peer 2001:db8:3::1 as-number 65410
#
ospf 1
area 0.0.0.0
network 10.20.1.0 0.0.0.3
network 3.3.3.3 0.0.0.0
#
Return
CE的配置文件
#
sysname CE
#
interface GigabitEthernet1/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:1::1/64
#
interface GigabitEthernet2/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:3::1/64
#
interface LoopBack1
ipv6 enable
ipv6 address 2001:db8:2::1/128
#
bgp 65410
router-id 10.10.10.10
peer 2001:db8:1::2 as-number 100
peer 2001:db8:3::2 as-number 100
#
ipv4-family unicast
undo synchronization #
ipv6-family unicast
undo synchronization network 2001:db8:0:1:2::1 128
peer 2001:db8:1::2 enable
peer 2001:db8:3::2 enable
#
return