这是我们本次实验的要求
基于要求,我们设计的拓扑为:
本次实验没有ip的具体要求:
注意:在MPLS VPN中两个私域的ip可以是相同的,为了验证实验我们可以设置不一样,然后在测试的时候可以有区别,比如在R5上配置4.1环回,在R7配置4.2环回,然后我们使用R1ping4.1通,4.2不通。
在各个路由器ip配置完成后。
第一步我们现在公网部分使用OSPF和BGP建邻:
在公网启用ospf 进程1来建立起公网的路由表,让R2,R3,R4,R7间可达。以及在R2和R4上建立起BGP邻居,并且bgp建邻
[r2]bgp 2
[r2-bgp]router-id 2.2.2.2
先和对端建立正常BGP邻居关系,可用于传递正常的公网路由
[r2-bgp]pe 4.4.4.4 as-number 2
[r2-bgp]pe 4.4.4.4 connect-interface LoopBack 0
[r2-bgp]pe 4.4.4.4 next-hop-local
同时还需要再在IPV4的家族模式中,与对端建立一个VPNV4的关系,用于传递VPNV4路由
[r2-bgp]ipv4-family vpnv4
[r2-bgp-af-vpnv4]peer 4.4.4.4 enable
对于解决bgp的黑洞问题:我们使用mpls来解决:
通过压入2.5层标签,让中间没有启用BGP协议的路由器不看三层的ip地址,只看2.5层的标签就传递给下一个路由器,直到传到bgp路由器,这个原理相当于骗过了中间的路由器,虽然路由表中没有目的ip,但是仍然可以传递这个包。
具体操作命令为:route recursive-lookup tunnel
然后我们配置MPLS
[r2]mpls lsr-id 2.2.2.2 必须先定义mpls的router-id,要为本地设备的真实ip地址,且邻居可达,因为该地址将用于建立TCP会话,建议使用环回地址
[r2]mpls 再开启mpls协议
[r2-mpls]mpls ldp 再激活LDP协议
[r2-mpls-ldp]q
之后需要在所有标签经过的接口上开启协议
[r2]interface GigabitEthernet 0/0/1
[r2-GigabitEthernet0/0/1]mpls 先开启MPLS
[r2-GigabitEthernet0/0/1]mpls ldp 再激活LDP协议
当启动配置完成后,邻居间使用UDP报文组播收发hello包;之后基于hello包中的router-id地址进行TCP会话的建立;
然后我们建立vpn的区域:
我们此次要建立4个区域,a1,a2相连,b1,b2相连,相互通过bgp来做通道连接,通过RT和RD值来验证起始区域。
具体的操作命令为:
[r2]ip vpn-instance a 创建名为a的vrf空间
[r2-vpn-instance-a]ipv4-family 进入IPV4的配置模式下
[r2-vpn-instance-a-af-ipv4]route-distinguisher 1:1 RD值
[r2-vpn-instance-a-af-ipv4]vpn-target 1:1 RT值 必须对端的PE端一致
注意:如若RT和RD值不通,那么就会两区域断联,一定不要搞混了
[r2]interface GigabitEthernet 0/0/0 进入链接CE端的接口
[r2-GigabitEthernet0/0/0]ip binding vpn-instance a 关联到vrf空间
[r2-GigabitEthernet0/0/0]ip address 192.168.2.2 24 配置私有ip地址
注:在关联到vrf空间前不能配置接口ip,否则该地址的直连路由将进入公有路由表;
理解:其实动态不管RIP和OSPF又或者是静态,整个操作流程都大差不差,先确保IGP间路由可达,然后开始在BGP路由器上开始双向的重发布,只不过要注意的是在BGP路由器上,开启的动态的路由协议一定要归属于一个区域,因为它和其他区域还可以使用一样的路由协议,所以要开多进程的例如ospf协议,然后再引入的时候也要进入到专属区域的路由协议里引入bgp路由,以及在bgp路由引入的时候也要进入到对应的区域然后引入对应的ospf进程。