Cisco(59)——Hub&Spoke MPLS进阶
Posted H_Cisco
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cisco(59)——Hub&Spoke MPLS进阶相关的知识,希望对你有一定的参考价值。
目录
3.在两个Spoke的PE(R2、R3)上启用VRF关联接口。
5.在两个Spoke的PE(R2、R3)上回指BGP的邻接关系。
6.ISP域内建立Full Mesh的VPNv4的BGP邻接关系。
7.在Hub的PE(R1)上起两个子接口,关联对应的VRF。
16.将14网络宣告进OSPF,实现R5、R6来访问2.2.2.2和3.3.3.3
一、背景
两个Spoke通过Hub做中转实现互访。
假设Hub在国外,Spoke在中国,希望在Hub上出局访问Internet。
二、拓扑
三、实现
1.配置IP地址。
R1(config)#int loo 0
R1(config-if)#ip add 1.1.1.1 255.255.255.255
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#int ethernet 0/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#int ethernet 0/1
R1(config-if)#ip add 13.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R2(config)#int loo 0
R2(config-if)#ip add 2.2.2.2 255.255.255.255
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#int ethernet 0/1
R2(config-if)#ip add 12.1.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#int ethernet 0/0
R2(config-if)#ip add 172.16.25.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R3(config)#int loo 0
R3(config-if)#ip add 3.3.3.3 255.255.255.255
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#int e0/0
R3(config-if)#ip add 13.1.1.3 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#int e0/1
R3(config-if)#ip add 172.16.36.3 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R4(config)#int loo 0
R4(config-if)#ip add 172.16.4.4 255.255.255.255
R4(config-if)#no shutdown
R5(config)#int loo 0
R5(config-if)#ip add 172.16.5.5 255.255.255.255
R5(config-if)#no shutdown
R5(config)#int e0/0
R5(config-if)#ip add 172.16.25.5 255.255.255.0
R5(config-if)#no shutdown
R5(config-if)#exit
R6(config)#int loo 0
R6(config-if)#ip add 172.16.6.6 255.255.255.255
R6(config-if)#no shutdown
R6(config-if)#exit
R6(config)#int e0/0
R6(config-if)#ip add 172.16.36.6 255.255.255.0
R6(config-if)#no shutdown
R6(config-if)#exit
2.在ISP域内配置OSPF,启用MPLS。
R1(config)#ip cef
R1(config)#mpls ip
R1(config)#mpls label protocol ldp
R1(config)#mpls ldp router-id loopback 0 force
R1(config)#int ran e0/0-1
R1(config-if-range)#mpls ip
R1(config-if-range)#exit
R1(config)#router ospf 10
R1(config-router)#router-id 1.1.1.1
R1(config-router)#net 1.1.1.1 0.0.0.0 area 0
R1(config-router)#network 12.1.1.2 0.0.0.0 area 0
R1(config-router)#net 13.1.1.1 0.0.0.0 area 0
R1(config-router)#exit
R2(config)#ip cef
R2(config)#mpls ip
R2(config)#mpls label protocol ldp
R2(config)#mpls ldp router-id loopback 0 force
R2(config)#int e0/1
R2(config-if)#mpls ip
R2(config-if)#exit
R2(config)#router ospf 10
R2(config-router)#router-id 2.2.2.2
R2(config-router)#net 2.2.2.2 0.0.0.0 area 0
R2(config-router)#net 12.1.1.2 0.0.0.0 area 0
R2(config-router)#exit
R3(config)#ip cef
R3(config)#mpls ip
R3(config)#mpls label protocol ldp
R3(config)#mpls ldp router-id loopback 0 force
R3(config)#int e0/0
R3(config-if)#mpls ip
R3(config-if)#exit
R3(config)#router ospf 10
R3(config-router)#router-id 3.3.3.3
R3(config-router)#net 3.3.3.3 0.0.0.0 area 0
R3(config-router)#net 13.1.1.3 0.0.0.0 area 0
R3(config-router)#exit
3.在两个Spoke的PE(R2、R3)上启用VRF关联接口。
R2(config)#vrf definition Spoke1
R2(config-vrf)#rd 5:5
R2(config-vrf)#address-family ipv4
R2(config-vrf-af)#route-target export 5:5
R2(config-vrf-af)#route-target import 100:100
R2(config-vrf-af)#exit
R2(config-vrf)#exit
R2(config-if)#int e0/0
R2(config-if)#vrf forwarding Spoke1
R2(config-if)#ip address 172.16.25.2 255.255.255.0
R2(config-if)#exit
R3(config)#vrf definition Spoke2
R3(config-vrf)#rd 6:6
R3(config-vrf)#address-family ipv4
R3(config-vrf-af)#route-target export 6:6
R3(config-vrf-af)#route-target import 100:100
R3(config-vrf-af)#exit-address-family
R3(config-vrf)#exit
R3(config)#int e0/1
R3(config-if)#vrf forwarding Spoke2
R3(config-if)# ip address 172.16.36.3 255.255.255.0
R3(config-if)#exit
4.在两个Spoke的CE(R5、R6)上启用BGP。
R5(config)#router bgp 5
R5(config-router)#bgp router-id 5.5.5.5
R5(config-router)#no auto-summary
R5(config-router)#no synchronization
R5(config-router)#no bgp default ipv4-unicast
R5(config-router)#neighbor 172.16.25.2 remote-as 10
R5(config-router)#address-family ipv4 unicast
R5(config-router-af)#neighbor 172.16.25.2 activate
R5(config-router-af)#redistribute connected
R5(config-router-af)#exit-address-family
R5(config-router)#exit
R6(config)#router bgp 6
R6(config-router)#bgp router-id 6.6.6.6
R6(config-router)#no auto-summary
R6(config-router)#no synchronization
R6(config-router)#no bgp default ipv4-unicast
R6(config-router)#neighbor 172.16.36.3 remote-as 10
R6(config-router)#address-family ipv4 unicast
R6(config-router-af)#neighbor 172.16.36.3 activate
R6(config-router-af)#redistribute connected
R6(config-router-af)#exit-address-family
R6(config-router)#exit
5.在两个Spoke的PE(R2、R3)上回指BGP的邻接关系。
R2(config)#router bgp 10
R2(config-router)#bgp router-id 2.2.2.2
R2(config-router)#no auto-summary
R2(config-router)#no synchronization
R2(config-router)#no bgp default ipv4
R2(config-router)#address-family ipv4 vrf Spoke1
R2(config-router-af)#neighbor 172.16.25.5 remote-as 5
R2(config-router-af)#exit-address-family
R2(config-router)#exi
R2(config-router)#exit
R3(config)#router bgp 10
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)# no auto-summary
R3(config-router)#no synchronization
R3(config-router)#no bgp default ipv4-unicast
R3(config-router)#address-family ipv4 vrf Spoke2
R3(config-router-af)#neighbor 172.16.36.6 remote-as 6
R3(config-router-af)#neighbor 172.16.36.6 activate
R3(config-router-af)#exi
R3(config-router)#exit
6.ISP域内建立Full Mesh的VPNv4的BGP邻接关系。
R2(config)#router bgp 10
R2(config-router)#neighbor 1.1.1.1 remote-as 10
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
R2(config-router)#neighbor 3.3.3.3 remote-as 10
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0
R2(config-router)#address-family vpnv4 unicast
R2(config-router-af)#neighbor 1.1.1.1 activate
R2(config-router-af)#neighbor 1.1.1.1 send-community extended
R2(config-router-af)#neighbor 3.3.3.3 activate
R2(config-router-af)#neighbor 3.3.3.3 send-community extended
R2(config-router-af)#exit-address-family
R2(config-router)#exit
R3(config)#router bgp 10
R3(config-router)#neighbor 1.1.1.1 remote-as 10
R3(config-router)#neighbor 1.1.1.1 update-source loopback 0
R3(config-router)#neighbor 2.2.2.2 remote-as 10
R3(config-router)#neighbor 2.2.2.2 update-source loopback 0
R3(config-router)#address-family vpnv4 unicast
R3(config-router-af)#neighbor 1.1.1.1 activate
R3(config-router-af)#neighbor 1.1.1.1 send-community extended
R3(config-router-af)#neighbor 2.2.2.2 activate
R3(config-router-af)#neighbor 2.2.2.2 send-community extended
R3(config-router-af)#exit-address-family
R3(config-router)#exit
R1(config)#router bgp 10
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#no auto-summary
R1(config-router)#no synchronization
R1(config-router)#no bgp default ipv4-unicast
R1(config-router)#neighbor 2.2.2.2 remote-as 10
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R1(config-router)#neighbor 3.3.3.3 remote-as 10
R1(config-router)#neighbor 3.3.3.3 update-source loopback 0
R1(config-router)#address-family vpnv4 unicast
R1(config-router-af)#neighbor 2.2.2.2 activate
R1(config-router-af)#neighbor 2.2.2.2 send-community extended
R1(config-router-af)#neighbor 3.3.3.3 activate
R1(config-router-af)#neighbor 3.3.3.3 send-community extended
R1(config-router-af)#exit-address-family
R1(config-router)#exit
7.在Hub的PE(R1)上起两个子接口,关联对应的VRF。
R1(config)#vrf definition Spoke-to-Hub
R1(config-vrf)#rd 56:56
R1(config-vrf)#address-family ipv4
R1(config-vrf-af)#route-target import 5:5
R1(config-vrf-af)#route-target import 6:6
R1(config-vrf-af)#exit-address-family
R1(config-vrf)#exit
R1(config)#vrf definition Hub-to-Spoke
R1(config-vrf)#rd 100:100
R1(config-vrf)#address-family ipv4
R1(config-vrf-af)#route-target export 100:100
R1(config-vrf-af)#exit-address-family
R1(config-vrf)#exit
R1(config)#interface ethernet 0/2
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#int ethernet 0/2.56
R1(config-subif)#vrf forwarding Spoke-to-Hub
R1(config-subif)#encapsulation dot1Q 56
R1(config-subif)#ip address 172.16.56.1 255.255.255.0
R1(config-subif)#no shutdown
R1(config-subif)#exit
R1(config)#int ethernet 0/2.100
R1(config-subif)#vrf forwarding Hub-to-Spoke
R1(config-subif)#encapsulation dot1Q 100
R1(config-subif)#ip address 172.16.100.1 255.255.255.0
R1(config-subif)#no shutdown
R1(config-subif)#exit
8.在Hub的CE(R4)上起两个子接口。
R4(config)#int ethernet 0/0
R4(config-if)#no shutdown
R4(config-if)#exit
R4(config)#int ethernet 0/0.56
R4(config-subif)#encapsulation dot1Q 56
R4(config-subif)#ip address 172.16.56.4 255.255.255.0
R4(config-subif)#no shutdown
R4(config)#int ethernet 0/0.100
R4(config-subif)#encapsulation dot1Q 100
R4(config-subif)#ip address 172.16.100.4 255.255.255.0
R4(config-subif)#no shutdown
R4(config-subif)#exit
9.在Hub的CE(R4)上和R1建立BGP。
R4(config)#router bgp 4
R4(config-router)#bgp router-id 4.4.4.4
R4(config-router)#no auto-summary
R4(config-router)#no synchronization
R4(config-router)#no bgp default ipv4-unicast
R4(config-router)#neighbor 172.16.56.1 remote-as 10
R4(config-router)#neighbor 172.16.100.1 remote-as 10
R4(config-router)#address-family ipv4 unicast
R4(config-router-af)#neighbor 172.16.56.1 active
R4(config-router-af)#neighbor 172.16.100.1 active
R4(config-router-af)#redistribute connected
R4(config-router-af)#aggregate-address 172.16.0.0 255.255.0.0 summary-only
R4(config-router-af)#exit-address-family
R4(config-router)#exit
10.在Hub的PE(R1)上和R4建立BGP.
R1(config)#router bgp 10
R1(config-router)#address-family ipv4 vrf Spoke-to-Hub
R1(config-router-af)#neighbor 172.16.56.4 remote-as 4
R1(config-router-af)#neighbor 172.16.56.4 activate
R1(config-router-af)#exit-address-family
R1(config-router)#address-family ipv4 vrf Hub-to-Spoke
R1(config-router-af)#neighbor 172.16.100.4 remote-as 4
R1(config-router-af)#neighbor 172.16.100.4 activate
R1(config-router-af)#exit-address-family
R1(config-router)#exit
11.测试。
①.
R1通过两个VRF都收到了关于172.16.0.0/16的路由,但是通过Spoke-to-Hub这个VRF收到是没有关系的,因为它不能给两个Spoke传,因为在Spoke-to-Hub的这个VRF中没有设置导出RT。这个Spoke-to-Hub的VRF是专门接收Spoke的明细路由的。
②.
R4可以收到两个Spoke的明细路由,并且都是通过172.16.56.1收到的。接下来R4把这些路由汇总之后形成了一条 172.16.0.0/16的汇总路由。
③.
自己把下游的明细发送上去,然后收到了一条汇总路由。
④.
R5,和R6也会通过PE收到这条汇总路由。
⑤.R5和R6基于这条汇总路由可以访问Hub、也可以访问其他Spoke的网络。
报文先发送给R2,R2给报文添加了一个标签19,19是内层标签,外层标签已经通过php去掉了;R2再把报文发送给R1,R1收到报文之后,会发现是VPNv4标签,查找对应的路由条目就发送走了。
12.配置关于Internet的服务。
在R1和R4之间再起一个子接口,绑定个公网地址,模拟Internet接入,在R4上做PAT,保证内网的主机发包去往外网的时候没有任何问题,R1在BGP中通告默认路由,保证域内所有路由器都有回包路由。
只有Hub的内网主机能够利用这个子接口来完成Internet访问,而Spoke节点访问不了(没有路由)。如果希望访问的话,需要Hub的CE通过100子接口再给下游路由器下放一条默认路由。
下放默认路由的两种方式:
①.针对邻居default-information originate
②.先写一条默认路由,再重分发进BGP;然后在BGP中添加default-information originate
R1(config)#int e0/2.255
R1(config-subif)#encapsulation dot1Q 255
R1(config-subif)#ip address 14.1.1.1 255.255.255.0
R1(config-subif)#no shutdown
R1(config-subif)#exit
R4(config)#int e0/0.255
R4(config-subif)#encapsulation dot1Q 255
R4(config-subif)#ip add 14.1.1.4 255.255.255.0
R4(config-subif)#no shutdown
R4(config-subif)#exit
13.在R4上做NAT。
R4(config)#int e0/0.255
R4(config-subif)#ip nat outside
R4(config-subif)#exit
R4(config)#int e0/0.56
R4(config-subif)#ip nat inside
R4(config-subif)#exit
R4(config)#int e0/0.100
R4(config-subif)#ip nat inside
R4(config-subif)#exit
R4(config)#access-list 10 permit 172.16.0.0 0.0.255.255
R4(config)#ip nat inside source list 10 interface ethernet 0/0.255 overload
14.BGP下放默认路由。
R4(config)#ip route 0.0.0.0 0.0.0.0 ethernet 0/0.255 14.1.1.1
R4(config)#route-map C permit 10
R4(config-route-map)#match interface loopback 0 ethernet 0/0.56 ethernet 0/0.100
R4(config-route-map)#exit
R4(config)#router bgp 4
R4(config-router)#address-family ipv4 unicast
R4(config-router-af)#redistribute static
R4(config-router-af)#redistribute connected route-map C
R4(config-router-af)#default-information originate
R4(config-router-af)#exit-address-family
R4(config-router)#exit
15.测试。
16.将14网络宣告进OSPF,实现R5、R6来访问2.2.2.2和3.3.3.3
R1(config)#router ospf 10
R1(config-router)#network 14.1.1.1 0.0.0.0 area 0
R1(config-router)#exit
以上是关于Cisco(59)——Hub&Spoke MPLS进阶的主要内容,如果未能解决你的问题,请参考以下文章