MPLS virtual private network Spoken-Hub网络实验(华为设备)

实验拓扑:

在这里插入图片描述

保证PC1和PC2能够通过site1做中转站,互相正常通信。

配置思路:

一、骨干网上配置IGP协议,实现骨干网Hub-PE和Spoke-PE的互通。以PE1为例子:
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.1.12.1 0.0.0.0
network 10.1.13.1 0.0.0.0
注意只需要通过与公网相连的地址,不能将与CE相连的地址通告进去。并且需要将回环口通告进入OSPF中(32位),为第二步的MPLS做准备。

二、骨干网上配置MPLS基本能力和MPLS LDP,建立LDP LSP公网隧道。这里列举注意点:
mpls
label advertise non-null //不为上游设备分配特殊标签,因为在这个环境下,隧道只有两台设备,如果分配的标签为3,那么发送的时候是不会在报文中打上外层标签的,就失去了MPLS VPN的意义(使用标签传输),所以这里最好设置为不分配特殊标签。

三、Hub-PE与Spoke-PE间建立MP-IBGP对等体关系;Spoke-PE之间不建立MP-IBGP对等体关系,不交换VPN路由信息。
注意点:需要PE上全局关闭ipv4-unicast功能,因为我们不需要使用这个地址簇建立邻居关系,使用的是vpnv4地址簇:
[PE1-bgp]undo default ipv4-unicast
PE1上的其他配置:
bgp 100
undo default ipv4-unicast
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0

ipv4-family vpnv4 //在VPNv4环境中激活邻居
policy vpn-target
peer 2.2.2.2 enable
peer 3.3.3.3 enable
配置完成后检查外网邻居关系是否建立完成:
在这里插入图片描述
四、Hub-PE上创建两个VPN实例,一个用于接收Spoke-PE发来的路由,其Import Target为100:1; 另一个用于向Spoke-PE发布路由,其VPN实例的Export Target为200:1。

ip vpn-instance vpn_in //作为Spoke路由的接收端
ipv4-family
route-distinguisher 100:21
vpn-target 100:1 import-extcommunity

ip vpn-instance vpn_out //作为Hub路由的发送端
ipv4-family
route-distinguisher 100:22
vpn-target 200:1 export-extcommunity

绑定对应的接口:
interface GigabitEthernet0/0/2
ip binding vpn-instance vpn_out

interface GigabitEthernet4/0/0
ip binding vpn-instance vpn_in

五、Spoke-PE上创建一个VPN实例,其Export Target为100:1,Import Target为200:1。PE2和PE3:实例配置需要一样的,可以保证PE2和PE3不能够直接通信,需要经过PE1中转。

ip vpn-instance vpna
ipv4-family
route-distinguisher 100:1
vpn-target 100:1 export-extcommunity //对应PE1的接收端,指定PE1接收
vpn-target 200:1 import-extcommunity //对应PE1的发送端,只接收PE1的发送的路由

六、CE和PE之间使用EBGP交换VPN路由信息。Hub-PE上配置允许接收AS重复1次的路由,以接收Hub-CE发布的路由。

以PE1和CE1为例子:
bgp 100
ipv4-family vpn-instance vpn_in
peer 10.1.112.1 as-number 400

ipv4-family vpn-instance vpn_out
peer 10.1.111.1 as-number 400
peer 10.1.111.1 allow-as-loop //在out端口指邻居的时候需要配置允许AS号重复1次,因为从CE1接收的条目是PE1实例in发送来的,已经打上了AS100的标记,然后再新发送给PE的实例out,又因为实例in和实例out都是AS100的,所以如果不配置这条命令,PE1的out实例接收到条目后就因为AS号重复立马丢弃了。当PE1out实例接收到以后,自动重分发进入VPNv4实例中,在发送给PE3和PE2。
在这里插入图片描述
CE1配置:
bgp 400
peer 10.1.111.254 as-number 100
peer 10.1.112.254 as-number 100

七、检测PE2和PE3是否能够直接通信(正常)。
在这里插入图片描述

分析路由传递过程:(以CE2的路由传递到CE3为例子)

首先在CE2上将PC2网段的路由条目通告进BGP传递给PE2,PE2自动从实例中重分发进入VPNv4地址簇中,然后通过MPLS VPN发送给PE1,PE1接收后:
在这里插入图片描述
按照私网交叉重分发进入实例in。
在这里插入图片描述
然后再发送给自己的EBGP邻居CE1,CE1接收后会将从EBGP邻居发送的条目发送给自己EBGP邻居,也就是实例out,对于实例out来说,其上允许接收AS重复的条目,于是接收以后自动重分发进去VPNv4实例中,再打上vpn-target 200:1发给自己的IBGP邻居PE3,PE3接收后通过私网交叉引入实例vpna,再通过EBGP发送给CE3,完成单向的路由传递。

分析通信过程:(站点2的PC和站点1的PC互相通信)

PC2将报文发送给CE2,CE2通过路由信息将报文传递给PE2,PE2查看FIB表:
[PE2]dis fib vpn-instance vpna //注意查看的是vpna的FIB表,因为是这个实例接收的
在这里插入图片描述
在这里我们继续查看详细的信息FIB表:还可以查看到对应的内层标签为1031,所以我们先打上内层标签
[PE2]dis fib vpn-instance vpna verbose
在这里插入图片描述
注意:MPLS VPN中的内层标签不仅是需要看网段地址进行分配,还需要根据RD值进行分配。

然后因为目的地址10.1.101.0的隧道ID不为0(0x1),表示要进入对应的隧道,进行MPLS VPN转发,所以我们继续查看LFIB表:
在这里插入图片描述
简易的LFIB表中其实也是分为了两个表项,BGP LSP表示的是接收的报文需要打上私网标签,LDP LSP表示的是在MPLS VPN中传输过程时需要打上的公网标签,公网抓包报文显示:
在这里插入图片描述
查看详细信息中可以看到对应的隧道编号,在这里打上的外网标签为1025(和报文中的符号),隧道的目的地址为1.1.1.1,那么为什么是1.1.1.1呢?因为其借助了BGP条目的下一跳作为目的地址。
在这里插入图片描述
报文到达了PE1以后,出标签为Null,首先剥离外层标签:
在这里插入图片描述
然后查看对应的内层标签表:1031。
在这里插入图片描述

这时PE1知道了对应转发的条目是通过10.1.101.0/24这个路由条目进行转发,通过的实例是vpn_out,并且将标签进行剥离,查看对应实例的路由条目进行转发即可:
在这里插入图片描述
注意:LFIB表上的内层标签的分配是接着外层标签分配的,例如外层标签分配到了1030,内网标签从1031进行分配。

猜你喜欢

转载自blog.csdn.net/tushanpeipei/article/details/113064500