组网需求
某银行希望通过MPLS VPN实现总行和各分行的安全互访,同时要求分行的VPN流量必须通过总行转发,以实现对流量的监控。如下图所示,Spoke-CE连接分支机构,Hub-CE连接公司总部,实现Spoke-CE之间的流量经过Hub-CE转发。
配置思路
本例配置主要思路是:
- 骨干网上配置IGP协议,实现骨干网Hub-PE和Spoke-PE的互通。
- 骨干网上配置MPLS基本能力和MPLS LDP,建立LDP LSP公网隧道。
- Hub-PE与Spoke-PE间建立MP-IBGP对等体关系;Spoke-PE之间不建立MP-IBGP对等体关系,不交换VPN路由信息。
- Hub-PE上创建两个VPN实例,一个用于接收Spoke-PE发来的路由,其Import Target为100:123; 另一个用于向Spoke-PE发布路由,其VPN实例的Export Target为200:123。
- Spoke-PE上创建一个VPN实例,其Export Target为100:123,Import Target为200:123。
- CE和PE之间使用EBGP交换VPN路由信息。Hub-PE上配置允许接收AS重复1次的路由,以接收Hub-CE发布的路由。
操作步骤
1.配置各接口IP地址
Spoke-CE1
#进入系统视图
<Huawei>system-view
#修改设备名称
[Huawei]sysname Spoke-CE1
#进入接口GE0/0/0视图
[Spoke-CE1]interface GigabitEthernet 0/0/0
#为接口GE0/0/0配置IP地址为172.16.1.1,子网掩码都为255.255.255.0
[Spoke-CE1-GigabitEthernet0/0/0]ip address 172.16.1.1 24
#从接口视图返回到系统视图
[Spoke-CE1-GigabitEthernet0/0/0]quit
Spoke-PE1
<Huawei>system-view
[Huawei]sysname Spoke-PE1
[Spoke-PE1]interface GigabitEthernet 0/0/0
[Spoke-PE1-GigabitEthernet0/0/0]ip address 172.16.1.2 24
[Spoke-PE1-GigabitEthernet0/0/0]quit
[Spoke-PE1]interface GigabitEthernet 0/0/1
[Spoke-PE1-GigabitEthernet0/0/1]ip address 192.168.12.2 24
[Spoke-PE1-GigabitEthernet0/0/1]quit
[Spoke-PE1]interface LoopBack 1
[Spoke-PE1-LoopBack1]ip address 2.2.2.2 32
[Spoke-PE1-LoopBack1]quit
Spoke-PE2
<Huawei>system-view
[Huawei]sysname Spoke-PE2
[Spoke-PE2]interface GigabitEthernet 0/0/0
[Spoke-PE2-GigabitEthernet0/0/0]ip address 172.16.2.2 24
[Spoke-PE2-GigabitEthernet0/0/0]quit
[Spoke-PE2]interface GigabitEthernet 0/0/1
[Spoke-PE2-GigabitEthernet0/0/1]ip address 192.168.13.3 24
[Spoke-PE2-GigabitEthernet0/0/1]quit
[Spoke-PE2]interface LoopBack 1
[Spoke-PE2-LoopBack1]ip add 3.3.3.3 32
[Spoke-PE2-LoopBack1]quit
Spoke-CE2
<Huawei>system-view
[Huawei]sysname Spoke-CE2
[Spoke-CE2]interface GigabitEthernet 0/0/0
[Spoke-CE2-GigabitEthernet0/0/0]ip address 172.16.2.1 24
[Spoke-CE2-GigabitEthernet0/0/0]quit
Hub-CE
<Huawei>system-view
[Huawei]sysname Hub-CE
[Hub-CE]interface GigabitEthernet 0/0/0
[Hub-CE-GigabitEthernet0/0/0]ip address 10.1.1.1 24
[Hub-CE-GigabitEthernet0/0/0]quit
[Hub-CE]interface GigabitEthernet 0/0/1
[Hub-CE-GigabitEthernet0/0/1]ip address 10.1.2.1 24
[Hub-CE-GigabitEthernet0/0/1]quit
Hub-PE
<Huawei>system-view
[Huawei]sysname Hub-PE
[Hub-PE]interface GigabitEthernet 0/0/0
[Hub-PE-GigabitEthernet0/0/0]ip address 10.1.1.2 24
[Hub-PE-GigabitEthernet0/0/0]quit
[Hub-PE]interface GigabitEthernet 0/0/1
[Hub-PE-GigabitEthernet0/0/1]ip address 10.1.2.2 24
[Hub-PE-GigabitEthernet0/0/1]quit
[Hub-PE]interface GigabitEthernet 4/0/0
[Hub-PE-GigabitEthernet4/0/0]ip address 192.168.12.1 24
[Hub-PE-GigabitEthernet4/0/0]quit
[Hub-PE]interface GigabitEthernet 4/0/1
[Hub-PE-GigabitEthernet4/0/1]ip address 192.168.13.1 24
[Hub-PE-GigabitEthernet4/0/1]quit
[Hub-PE]interface LoopBack 1
[Hub-PE-LoopBack1]ip add 1.1.1.1 32
[Hub-PE-LoopBack1]quit
验证
配置完成后,使用<font style="color:#DF2A3F;">display ip interface brief</font>**
命令查看设备上所有接口的与IP是否与拓扑图规划一致。
以Hub-PE的显示为例:
[Hub-PE]display ip interface brief
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 6
The number of interface that is DOWN in Physical is 3
The number of interface that is UP in Protocol is 6
The number of interface that is DOWN in Protocol is 3
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.1.1.2/24 up up
GigabitEthernet0/0/1 10.1.2.2/24 up up
GigabitEthernet0/0/2 unassigned down down
GigabitEthernet4/0/0 192.168.12.2/24 up up
GigabitEthernet4/0/1 192.168.13.3/24 up up
GigabitEthernet4/0/2 unassigned down down
GigabitEthernet4/0/3 unassigned down down
LoopBack1 1.1.1.1/32 up up(s)
NULL0 unassigned up up(s)
2.在IP/MPLS骨干网上配置OSPF协议,实现骨干网Hub-PE和Spoke-PE的互通
Spoke-PE1
#运行OSPF协议。进程号,缺省值为1。如果没有通过命令指定ID号,系统会从当前接口的IP地址中自动选取一个作为设备的ID号。缺省情况下,路由器系统会从当前接口的IP地址中自动选取一个最大值作为Router ID。
[Spoke-PE1]ospf
#创建并进入OSPF区域视图,0的称为骨干区域。
[Spoke-PE1-ospf-1]area 0
#配置区域所包含的网段,其中掩码是IP地址的反码
[Spoke-PE1-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[Spoke-PE1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
#从OSPF区域视图返回到OSPF视图
[Spoke-PE1-ospf-1-area-0.0.0.0]quit
#从OSPF视图返回到系统视图
[Spoke-PE1-ospf-1]quit
Spoke-PE2
[Spoke-PE2]ospf
[Spoke-PE2-ospf-1]area 0
[Spoke-PE2-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[Spoke-PE2-ospf-1-area-0.0.0.0]network 192.168.13.0 0.0.0.255
[Spoke-PE2-ospf-1-area-0.0.0.0]quit
[Spoke-PE2-ospf-1]quit
Hub-PE
[Hub-PE]ospf
[Hub-PE-ospf-1]area 0
[Hub-PE-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[Hub-PE-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[Hub-PE-ospf-1-area-0.0.0.0]network 192.168.13.0 0.0.0.255
[Hub-PE-ospf-1-area-0.0.0.0]quit
[Hub-PE-ospf-1]quit
验证
配置完成后,Hub-PE、Spoke-PE1、Spoke-PE2之间应能建立OSPF邻居关系,执行**<font style="color:#DF2A3F;">display ospf peer</font>**
命令可以看到邻居状态为Full。执行**<font style="color:#DF2A3F;">display ospf routing</font>**
命令可以看到PE之间学习到对方的Loopback1路由。
以Hub-PE的显示为例:
[Hub-PE]display ospf peer
OSPF Process 1 with Router ID 10.1.1.2
Neighbors
Area 0.0.0.0 interface 192.168.12.1(GigabitEthernet4/0/0)'s neighbors
Router ID: 172.16.1.2 Address: 192.168.12.2
State: Full Mode:Nbr is Master Priority: 1
DR: 192.168.12.2 BDR: 192.168.12.1 MTU: 0
Dead timer due in 37 sec
Retrans timer interval: 5
Neighbor is up for 00:13:22
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.0 interface 192.168.13.1(GigabitEthernet4/0/1)'s neighbors
Router ID: 172.16.2.2 Address: 192.168.13.3
State: Full Mode:Nbr is Master Priority: 1
DR: 192.168.13.1 BDR: 192.168.13.3 MTU: 0
Dead timer due in 30 sec
Retrans timer interval: 5
Neighbor is up for 00:13:38
Authentication Sequence: [ 0 ]
[Hub-PE]display ospf routing
OSPF Process 1 with Router ID 10.1.1.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
1.1.1.1/32 0 Stub 1.1.1.1 10.1.1.2 0.0.0.0
192.168.12.0/24 1 Transit 192.168.12.1 10.1.1.2 0.0.0.0
192.168.13.0/24 1 Transit 192.168.13.1 10.1.1.2 0.0.0.0
2.2.2.2/32 1 Stub 192.168.12.2 172.16.1.2 0.0.0.0
3.3.3.3/32 1 Stub 192.168.13.3 172.16.2.2 0.0.0.0
Total Nets: 5
Intra Area: 5 Inter Area: 0 ASE: 0 NSSA: 0
3.在骨干网上配置MPLS基本能力和MPLS LDP,建立LDP LSP
Spoke-PE1
#LSR ID用来在网络中唯一标识一个LSR。在网络中部署MPLS业务时,必须首先配置LSR ID。LSR没有缺省的LSR ID,必须手工配置。
#配置LSR的ID为2.2.2.2
[Spoke-PE1]mpls lsr-id 2.2.2.2
#使能本节点的全局MPLS能力,并进入MPLS视图。
[Spoke-PE1]mpls
#关闭MPLS标签倒数第二跳弹出功能。缺省情况下,使用的是implicit-null,表示支持PHP。Egress向倒数第二跳节点分配隐式空标签,值为3;配置的是non-null,表示不支持PHP。Egress向倒数第二跳正常分配标签,即分配的标签值不小于16。
[Spoke-PE1-mpls]label advertise non-null
#使能本节点的LDP能力,并进入MPLS-LDP视图。
[Spoke-PE1-mpls]mpls ldp
[Spoke-PE1-mpls-ldp]quit
#在GE0/0/0接口上使能MPLS能力与MPLS LDP功能。
[Spoke-PE1]interface GigabitEthernet 0/0/1
[Spoke-PE1-GigabitEthernet0/0/1]mpls
[Spoke-PE1-GigabitEthernet0/0/1]mpls ldp
[Spoke-PE1-GigabitEthernet0/0/1]quit
Spoke-PE2
[Spoke-PE2]mpls lsr-id 3.3.3.3
[Spoke-PE2]mpls
[Spoke-PE2-mpls]label advertise non-null
[Spoke-PE2-mpls]mpls ldp
[Spoke-PE2-mpls-ldp]quit
[Spoke-PE2]interface GigabitEthernet 0/0/1
[Spoke-PE2-GigabitEthernet0/0/1]mpls
[Spoke-PE2-GigabitEthernet0/0/1]mpls ldp
[Spoke-PE2-GigabitEthernet0/0/1]quit
Hub-PE
[Hub-PE]mpls lsr-id 1.1.1.1
[Hub-PE]mpls
[Hub-PE-mpls]label advertise non-null
[Hub-PE-mpls]quit
[Hub-PE]mpls ldp
[Hub-PE-mpls-ldp]quit
[Hub-PE]interface GigabitEthernet 4/0/0
[Hub-PE-GigabitEthernet4/0/0]mpls
[Hub-PE-GigabitEthernet4/0/0]mpls ldp
[Hub-PE-GigabitEthernet4/0/0]quit
[Hub-PE]interface GigabitEthernet 4/0/1
[Hub-PE-GigabitEthernet4/0/1]mpls
[Hub-PE-GigabitEthernet4/0/1]mpls ldp
[Hub-PE-GigabitEthernet4/0/1]quit
验证
上述配置完成后,Hub-PE和Spoke-PE之间应能建立LDP会话,执行**<font style="color:#DF2A3F;">display mpls ldp session</font>**
命令可以看到显示结果中Status项为“Operational”。执行**<font style="color:#DF2A3F;">display mpls ldp lsp</font>**
命令,可以看到LDP LSP的建立情况。
以Hub-PE的显示为例:
[Hub-PE]display mpls ldp session
LDP Session(s) in Public Network
Codes: LAM(Label Advertisement Mode), SsnAge Unit(DDDD:HH:MM)
A '*' before a session means the session is being deleted.
------------------------------------------------------------------------------
PeerID Status LAM SsnRole SsnAge KASent/Rcv
------------------------------------------------------------------------------
2.2.2.2:0 Operational DU Passive 0000:00:08 33/33
3.3.3.3:0 Operational DU Passive 0000:00:08 33/33
------------------------------------------------------------------------------
TOTAL: 2 session(s) Found.
[Hub-PE]display mpls ldp lsp
LDP LSP Information
-------------------------------------------------------------------------------
DestAddress/Mask In/OutLabel UpstreamPeer NextHop OutInterface
-------------------------------------------------------------------------------
1.1.1.1/32 1025/NULL 2.2.2.2 127.0.0.1 InLoop0
1.1.1.1/32 1025/NULL 3.3.3.3 127.0.0.1 InLoop0
*1.1.1.1/32 Liberal/1025 DS/2.2.2.2
*1.1.1.1/32 Liberal/1024 DS/3.3.3.3
2.2.2.2/32 NULL/1024 - 192.168.12.2 GE4/0/0
2.2.2.2/32 1024/1024 2.2.2.2 192.168.12.2 GE4/0/0
2.2.2.2/32 1024/1024 3.3.3.3 192.168.12.2 GE4/0/0
*2.2.2.2/32 Liberal/1025 DS/3.3.3.3
3.3.3.3/32 NULL/1026 - 192.168.13.3 GE4/0/1
3.3.3.3/32 1026/1026 2.2.2.2 192.168.13.3 GE4/0/1
3.3.3.3/32 1026/1026 3.3.3.3 192.168.13.3 GE4/0/1
*3.3.3.3/32 Liberal/1026 DS/2.2.2.2
-------------------------------------------------------------------------------
TOTAL: 8 Normal LSP(s) Found.
TOTAL: 4 Liberal LSP(s) Found.
TOTAL: 0 Frr LSP(s) Found.
A '*' before an LSP means the LSP is not established
A '*' before a Label means the USCB or DSCB is stale
A '*' before a UpstreamPeer means the session is stale
A '*' before a DS means the session is stale
A '*' before a NextHop means the LSP is FRR LSP
4.在各PE设备上配置VPN实例,将CE接入PE
Hub-PE的两个VPN实例接收的VPN-target分别为两个Spoke-PE发布的VPN-target,且发布的VPN-target与接收的VPN-target不同。Spoke-PE的VPN实例引入的VPN-target为Hub-PE发布的VPN-target。
Spoke-PE1
#VPN实例用于将VPN私网路由与公网路由隔离。不同VPN实例的路由之间也是相互隔离的。在所有BGP/MPLS IP VPN组网方案中,都需要配置VPN实例。
#创建VPN实例,并进入VPN实例视图。需注意:VPN实例的名字区分大小写。
[Spoke-PE1]ip vpn-instance vpna
#使能VPN实例IPv4地址族,并进入VPN实例IPv4地址族视图。 VPN实例下支持双栈,即IPv4地址族和IPv6地址族。根据通告路由和转发数据的类型使能相应的地址族后,才能进行VPN的相关配置。
[Spoke-PE1-vpn-instance-vpna]ipv4-family
#VPN实例IPv4地址族只有配置了RD后才生效。同一PE上的不同VPN实例IPv4地址族下的RD不能相同。
[Spoke-PE1-vpn-instance-vpna-af-ipv4]route-distinguisher 123:2
#为VPN实例IPv4地址族配置VPN-target扩展团体属性。 VPN Target是BGP的扩展团体属性,用来控制VPN路由信息的接收和发布。一条vpn-target命令最多可以配置8个VPN Target。
[Spoke-PE1-vpn-instance-vpna-af-ipv4]vpn-target 100:123 export-extcommunity
[Spoke-PE1-vpn-instance-vpna-af-ipv4]vpn-target 200:123 import-extcommunity
[Spoke-PE1-vpn-instance-vpna-af-ipv4]quit
[Spoke-PE1-vpn-instance-vpna]quit
#配置VPN实例后,需要将本设备上属于该VPN的接口与该VPN实例绑定,否则该接口将属于公网接口,无法转发VPN数据
[Spoke-PE1]interface GigabitEthernet0/0/0
#配置接口与VPN实例绑定后,或取消接口与VPN实例的绑定,都会清除该接口的IP地址,应需要重新配置。
[Spoke-PE1-GigabitEthernet0/0/0]ip binding vpn-instance vpna
[Spoke-PE1-GigabitEthernet0/0/0]ip address 172.16.1.2 24
[Spoke-PE1-GigabitEthernet0/0/0]quit
Spoke-PE2
[Spoke-PE2]ip vpn-instance vpna
[Spoke-PE2-vpn-instance-vpna]ipv4-family
[Spoke-PE2-vpn-instance-vpna-af-ipv4]route-distinguisher 123:3
[Spoke-PE2-vpn-instance-vpna-af-ipv4]vpn-target 100:123 export-extcommunity
[Spoke-PE2-vpn-instance-vpna-af-ipv4]vpn-target 200:123 import-extcommunity
[Spoke-PE2-vpn-instance-vpna-af-ipv4]quit
[Spoke-PE2-vpn-instance-vpna]quit
[Spoke-PE2]interface GigabitEthernet0/0/0
[Spoke-PE2-GigabitEthernet0/0/0]ip binding vpn-instance vpna
[Spoke-PE2-GigabitEthernet0/0/0]ip address 172.16.2.2 24
[Spoke-PE2-GigabitEthernet0/0/0]quit
Hub-PE
#Hub-PE需配置两个VPN实例(vpna_in和vpna_out):vpna_in用于接收并维护所有Spoke-PE发布的VPNv4路由。vpna_out用于维护Hub站点及所有Spoke站点的路由,并发布给所有Spoke-PE。
[Hub-PE]ip vpn-instance vpna_in
[Hub-PE-vpn-instance-vpna_in]ipv4-family
[Hub-PE-vpn-instance-vpna_in-af-ipv4]route-distinguisher 123:11
[Hub-PE-vpn-instance-vpna_in-af-ipv4]vpn-target 100:123 import-extcommunity
[Hub-PE-vpn-instance-vpna_in-af-ipv4]quit
[Hub-PE-vpn-instance-vpna_in]quit
[Hub-PE]ip vpn-instance vpna_out
[Hub-PE-vpn-instance-vpna_out]ipv4-family
[Hub-PE-vpn-instance-vpna_out-af-ipv4]route-distinguisher 123:12
[Hub-PE-vpn-instance-vpna_out-af-ipv4]vpn-target 200:123 export-extcommunity
[Hub-PE-vpn-instance-vpna_out-af-ipv4]quit
[Hub-PE-vpn-instance-vpna_out]quit
#Hub-PE上需要使用两个接口或子接口:一个绑定vpna_in,用于接收Spoke-PE发来的路由;另一个绑定vpna_out,用于发布Hub站点及所有Spoke站点的路由。
[Hub-PE]interface GigabitEthernet0/0/0
[Hub-PE-GigabitEthernet0/0/0]ip binding vpn-instance vpna_in
[Hub-PE-GigabitEthernet0/0/0]ip address 10.1.1.2 24
[Hub-PE-GigabitEthernet0/0/0]quit
[Hub-PE]interface GigabitEthernet0/0/1
[Hub-PE-GigabitEthernet0/0/1]ip binding vpn-instance vpna_out
[Hub-PE-GigabitEthernet0/0/1]ip address 10.1.2.2 24
[Hub-PE-GigabitEthernet0/0/1]quit
验证
配置完成后,在PE设备上执行**<font style="color:#DF2A3F;">display ip vpn-instance verbose</font>**
命令可以看到VPN实例的配置情况。在PE设备上执行**<font style="color:#DF2A3F;">display ip routing-table vpn-instance </font>**_<font style="color:#DF2A3F;">vpn-instance-name</font>_
命令可以看到IPv4 VPN实例的路由表的概要信息。各PE能ping通自己接入的CE。
当PE上有多个接口绑定了同一个VPN,则使用
<font style="color:#DF2A3F;">ping -vpn-instance</font>
命令ping对端PE接入的CE时,要指定源IP地址,即要指定<font style="color:#DF2A3F;">ping -vpn-instancevpn-instance-name -a source-ip-address dest-ip-address</font>
命令中的参数<font style="color:#DF2A3F;">-a source-ip-address</font>
,否则可能ping不通。
以Hub-PE为例:
[Hub-PE]display ip vpn-instance verbose
Total VPN-Instances configured : 2
Total IPv4 VPN-Instances configured : 2
Total IPv6 VPN-Instances configured : 0
VPN-Instance Name and ID : vpna_in, 1
Interfaces : GigabitEthernet0/0/0
Address family ipv4
Create date : 2025/05/12 20:07:08 UTC-08:00
Up time : 0 days, 00 hours, 11 minutes and 52 seconds
Route Distinguisher : 123:11
Import VPN Targets : 200:123
Label Policy : label per route
Log Interval : 5
VPN-Instance Name and ID : vpna_out, 2
Interfaces : GigabitEthernet0/0/1
Address family ipv4
Create date : 2025/05/12 20:07:09 UTC-08:00
Up time : 0 days, 00 hours, 11 minutes and 51 seconds
Route Distinguisher : 123:12
Export VPN Targets : 100:123
Label Policy : label per route
Log Interval : 5
[Hub-PE]display ip routing-table vpn-instance vpna_in
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: vpna_in
Destinations : 4 Routes : 4
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.1.0/24 Direct 0 0 D 10.1.1.2 GigabitEthernet0/0/0
10.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
10.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
[Hub-PE]ping -vpn-instance vpna_in 10.1.1.1
PING 10.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 10.1.1.1: bytes=56 Sequence=1 ttl=255 time=110 ms
Reply from 10.1.1.1: bytes=56 Sequence=2 ttl=255 time=20 ms
Reply from 10.1.1.1: bytes=56 Sequence=3 ttl=255 time=30 ms
Reply from 10.1.1.1: bytes=56 Sequence=4 ttl=255 time=20 ms
Reply from 10.1.1.1: bytes=56 Sequence=5 ttl=255 time=20 ms
--- 10.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/40/110 ms
5.在PE与CE之间建立EBGP对等体关系,引入VPN路由
Spoke-CE1
[Spoke-CE1]bgp 65002
#引入本端CE的直连路由,使用import-route direct或network ipv4-address mask
#CE将所连接的VPN网段地址发布给接入的PE,通过PE发布给对端CE。根据实际组网情况,该步骤中需要引入的路由类型有所不同。
[Spoke-CE1-bgp]peer 172.16.1.2 as-number 100
[Spoke-CE1-bgp]import-route direct
[Spoke-CE1-bgp]quit
Spoke-PE1
[Spoke-PE1]bgp 100
#将指定的VPN实例与IPv4地址族进行关联,并进入BGP-VPN实例IPv4地址族视图。
[Spoke-PE1-bgp]ipv4-family vpn-instance vpna
#将CE配置为VPN私网对等体
[Spoke-PE1-bgp-vpna]peer 172.16.1.1 as-number 65002
#当需要将到本端CE的直连路由引入VPN路由表中,以发布给对端PE时配置。PE会自动学习到本地CE直连路由,该路由优于本地CE通过EBGP发布过来的直连路由,因此如果不配置此步骤,PE不会将该直连路由通过MP-BGP发布给对端PE。
[Spoke-PE1-bgp-vpna]import-route direct
[Spoke-PE1-bgp-vpna]quit
[Spoke-PE1-bgp]quit
Spoke-PE2
[Spoke-PE2]bgp 100
[Spoke-PE2-bgp]ipv4-family vpn-instance vpna
[Spoke-PE2-bgp-vpna]peer 172.16.2.1 as-number 65003
[Spoke-PE2-bgp-vpna]import-route direct
[Spoke-PE2-bgp-vpna]quit
[Spoke-PE2-bgp]quit
Spoke-CE2
[Spoke-CE2]bgp 65003
[Spoke-CE2-bgp]peer 172.16.2.2 as-number 100
[Spoke-CE2-bgp]import-route direct
[Spoke-CE2-bgp]quit
Hub-CE
[Hub-CE]bgp 65001
[Hub-CE-bgp]peer 10.1.1.2 as-number 100
[Hub-CE-bgp]peer 10.1.2.2 as-number 100
[Hub-CE-bgp]import-route direct
[Hub-CE-bgp]quit
Hub-PE
Hub-PE与Hub-CE间可以使用IGP或EBGP,但当Hub-PE与Hub-CE使用EBGP时,Hub-PE上必须手工配置允许本地AS编号重复。
[Hub-PE]bgp 100
[Hub-PE-bgp]ipv4-family vpn-instance vpna_in
[Hub-PE-bgp-vpna_in]peer 10.1.1.1 as-number 65001
[Hub-PE-bgp-vpna_in]import-route direct
[Hub-PE-bgp-vpna_in]quit
[Hub-PE-bgp-vpna_in]ipv4-family vpn-instance vpna_out
[Hub-PE-bgp-vpna_out]peer 10.1.2.1 as-number 65001
#允许路由环路。这里的number取1,允许AS重复1次的路由通过。
[Hub-PE-bgp-vpna_out]peer 10.1.2.1 allow-as-loop 1
[Hub-PE-bgp-vpna_out]import-route direct
[Hub-PE-bgp-vpna_out]quit
[Hub-PE-bgp]quit
验证
配置完成后,在PE设备上执行**<font style="color:#DF2A3F;">display bgp vpnv4 all peer</font>**
命令,可以看到PE与CE之间的BGP对等体关系已建立,并达到Established状态。
以Hub-PE与Hub-CE的对等体关系为例:
[Hub-PE]display bgp vpnv4 all 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 Pre fRcv
Peer of IPv4-family for vpn instance :
VPN-Instance vpna_in, Router ID 1.1.1.1:
10.1.1.1 4 65001 5 4 0 00:01:35 Established 2
VPN-Instance vpna_out, Router ID 1.1.1.1:
10.1.2.1 4 65001 5 4 0 00:01:35 Established 2
6.在Spoke-PE与Hub-PE之间建立MP-IBGP对等体关系
Spoke-PE上不需要配置允许AS号重复一次,因为路由器接收IBGP对等体发布的路由时并不检查其中的AS-PATH属性。
Spoke-PE1
#启动BGP,进入BGP视图
[Spoke-PE1]bgp 100
#配置IPv4对等体1.1.1.1的对端AS号为100
[Spoke-PE1-bgp]peer 1.1.1.1 as-number 100
#指定BGP报文的源接口和源地址
[Spoke-PE1-bgp]peer 1.1.1.1 connect-interface loopback 1
#使能与指定对等体交换BGP-VPNv4路由信息
[Spoke-PE1-bgp]ipv4-family vpnv4
[Spoke-PE1-bgp-af-vpnv4]peer 1.1.1.1 enable
[Spoke-PE1-bgp-af-vpnv4]quit
[Spoke-PE1-bgp]quit
Spoke-PE2
[Spoke-PE2]bgp 100
[Spoke-PE2-bgp]peer 1.1.1.1 as-number 100
[Spoke-PE2-bgp]peer 1.1.1.1 connect-interface loopback 1
[Spoke-PE2-bgp]ipv4-family vpnv4
[Spoke-PE2-bgp-af-vpnv4]peer 1.1.1.1 enable
[Spoke-PE2-bgp-af-vpnv4]quit
[Spoke-PE2-bgp]quit
Hub-PE
[Hub-PE]bgp 100
[Hub-PE-bgp]peer 2.2.2.2 as-number 100
[Hub-PE-bgp]peer 2.2.2.2 connect-interface loopback 1
[Hub-PE-bgp]peer 3.3.3.3 as-number 100
[Hub-PE-bgp]peer 3.3.3.3 connect-interface loopback 1
[Hub-PE-bgp]ipv4-family vpnv4
[Hub-PE-bgp-af-vpnv4]peer 2.2.2.2 enable
[Hub-PE-bgp-af-vpnv4]peer 3.3.3.3 enable
[Hub-PE-bgp-af-vpnv4]quit
[Hub-PE-bgp]quit
验证
配置完成后,在各PE设备上执行**<font style="color:#DF2A3F;">display bgp peer</font>**
或**<font style="color:#DF2A3F;">display bgp vpnv4 all peer</font>**
命令,可以看到Spoke-PE与Hub-PE之间的BGP对等体关系已建立,并达到Established状态。
[Hub-PE]display bgp 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 Pre fRcv
2.2.2.2 4 100 4 7 0 00:01:11 Established 0
3.3.3.3 4 100 4 7 0 00:01:10 Established 0
7.验证配置结果
测试连通性
完成上述配置后,Spoke-CE之间可以相互Ping通,使用Tracert可以看到Spoke-CE之间的流量经过Hub-CE转发,也可以通过Ping结果中的TTL值推算Spoke-CE之间经过的转发设备数目。
以Spoke-CE1的显示为例:
[Spoke-CE1]ping 172.16.2.1
PING 172.16.2.1: 56 data bytes, press CTRL_C to break
Reply from 172.16.2.1: bytes=56 Sequence=1 ttl=250 time=100 ms
Reply from 172.16.2.1: bytes=56 Sequence=2 ttl=250 time=50 ms
Reply from 172.16.2.1: bytes=56 Sequence=3 ttl=250 time=50 ms
Reply from 172.16.2.1: bytes=56 Sequence=4 ttl=250 time=30 ms
Reply from 172.16.2.1: bytes=56 Sequence=5 ttl=250 time=40 ms
--- 172.16.2.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 30/54/100 ms
[Spoke-CE1]tracert 172.16.2.1
traceroute to 172.16.2.1(172.16.2.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 172.16.1.2 30 ms 20 ms 10 ms
2 10.1.2.2 < AS=100 > 30 ms 40 ms 30 ms
3 10.1.2.1 < AS=100 > 30 ms 30 ms 40 ms
4 10.1.1.2 < AS=65001 > 30 ms 30 ms 30 ms
5 172.16.2.2 < AS=100 > 40 ms 50 ms 40 ms
6 172.16.2.1 < AS=100 > 40 ms 40 ms 50 ms
查看相关路由信息
在Spoke-CE上执行**<font style="color:#DF2A3F;">display bgp routing-table</font>**
命令,可以看到去往对端Spoke-CE的BGP路由的AS路径中存在重复的AS号
以Spoke-CE1的显示为例:
[Spoke-CE1]display bgp routing-table
BGP Local router ID is 172.16.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 8
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.1.0/24 172.16.1.2 0 100 65001?
*> 10.1.2.0/24 172.16.1.2 0 100?
*> 127.0.0.0 0.0.0.0 0 0 ?
*> 127.0.0.1/32 0.0.0.0 0 0 ?
*> 172.16.1.0/24 0.0.0.0 0 0 ?
172.16.1.2 0 0 100?
*> 172.16.1.1/32 0.0.0.0 0 0 ?
*> 172.16.2.0/24 172.16.1.2 0 100 65001 100?
链接:https://www.ljh99.cn/archives/pei-zhi-hub-and-spokeshi-li–xiang-jie-ban