思科设备实现城域网ISIS+BGP+MPLS VPN多域互通实战

网友投稿 412 2022-10-26


思科设备实现城域网ISIS+BGP+MPLS VPN多域互通实战

【高级】思科设备实现城域网ISIS+BGP+MPLS ×××多域互通实战

实验拓扑:

GNS3 0.8.6 + c3725-adventerprisek9-mz.124-15.T5.p_w_picpath

实验要求:

1.   IGP使用ISIS协议,用来承载城域网的直连和环回口路由。

2.通过配置普通BGP协议,承载用户业务路由(大客户和PPPoE拨号),实现互联网路由传递。

3.通过配置BGP/MPLS 的跨域×××实现分公司和总公司之间的私网通信。

实验步骤及验证:

1.接口及ip地址规划:

路由器

接口

ip地址

R1

F0/0

172.16.0.1/24

R1

F0/1

12.0.0.1/30

R1

Loopback 0

1.1.1.1/32

R1

Loopback 10

10.0.0.1/30

R2

F0/0

12.0.0.2/30

R2

Loopback 0

2.2.2.2/32

R2

F0/1

23.0.0.1/30

R3

F0/0

23.0.0.2/30

R3

loopback 0

3.3.3.3/32

R3

F0/1

34.0.0.1/30

R4

F0/0

34.0.0.2/30

R4

loopback 0

4.4.4.4/32

R4

F0/1

45.0.0.1/30

R5

F0/0

45.0.0.2/30

R5

loopback 0

5.5.5.5/32

R5

F0/1

56.0.0.1/30

R6

F0/0

56.0.0.2/30

R6

loopback 0

6.6.6.6/32

R6

F0/1

67.0.0.1/30

R7

F0/0

67.0.0.2/30

R7

Loopback 10

70.0.0.1/30

R7

Loopback 0

7.7.7.7/32

R7

F0/1

172.16.1.1/24

R8

Loopback 0

192.168.8.1/24

R8

F0/0

172.16.0.2/24

R9

Loopback 0

192.168.9.1/24

R9

F0/0

172.16.1.2/24

2.配置脚本:

R1

R1(config-if)#int f0/0

R1(config-if)#ip add172.16.0.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#int lo 10 //模拟R1下挂30位掩码的大客户业务网段//

R1(config-if)#ip add 10.0.0.1 255.255.255.252

R1(config-if)#int lo 0

R1(config-if)#ip add 1.1.1.1 255.255.255.255

R1(config-if)#int f0/1

R1(config-if)#ip add 12.0.0.1 255.255.255.252

R1(config-if)#no sh

R2

R2(config)#int f0/0

R2(config-if)#ip add 12.0.0.2255.255.255.252

R2(config-if)#no sh

R2(config-if)#int lo 0

R2(config-if)#ip add 2.2.2.2255.255.255.255

R2(config-if)#int f0/1

R2(config-if)#ip add 23.0.0.1255.255.255.252

R2(config-if)#no sh

R3

R3(config)#int f0/0

R3(config-if)#ip add 23.0.0.2255.255.255.252

R3(config-if)#no sh

R3(config-if)#int lo 0

R3(config-if)#ip add 3.3.3.3255.255.255.255

R3(config-if)#int f0/1

R3(config-if)#ip add 34.0.0.1255.255.255.252

R3(config-if)#no sh

R4

R4(config)#int f0/0

R4(config-if)#ip add 34.0.0.2255.255.255.252

R4(config-if)#no sh

R4(config-if)#int lo 0

R4(config-if)#ip add 4.4.4.4255.255.255.255

R4(config-if)#int f0/1

R4(config-if)#ip add 45.0.0.1255.255.255.252

R4(config-if)#no sh

R5

R5(config)#int f0/0

R5(config-if)#ip add 45.0.0.2255.255.255.252

R5(config-if)#no sh

R5(config-if)#int lo 0

R5(config-if)#ip add 5.5.5.5255.255.255.255

R5(config-if)#int f0/1

R5(config-if)#ip add 56.0.0.1255.255.255.252

R5(config-if)#no sh

R6

R6(config)#int f0/0

R6(config-if)#ip add 56.0.0.2255.255.255.252

R6(config-if)#no sh

R6(config-if)#int lo 0

R6(config-if)#ip add 6.6.6.6255.255.255.255

R6(config-if)#int f0/1

R6(config-if)#ip add 67.0.0.1255.255.255.252

R6(config-if)#n sh

R7

R7(config)#int f0/0

R7(config-if)#ip add 67.0.0.2255.255.255.252

R7(config-if)#no sh

R7(config-if)#int lo 0

R7(config-if)#ip add 7.7.7.7255.255.255.255

R7(config-if)#int lo 10  //模拟R7下挂30位掩码的大客户业务网段//

R7(config-if)#ip add 70.0.0.1255.255.255.252

R7(config-if)#int f0/1

R7(config-if)#ip add 172.16.1.1255.255.255.0

R7(config-if)#no sh

R8

R8(config)#int lo 0 //模拟A公司分公司的私网网段//

R8(config-if)#ip add 192.168.8.1255.255.255.0

R8(config-if)#int f0/0

R8(config-if)#ip add 172.16.0.2255.255.255.0

R8(config-if)#no sh

R9

R9(config)#int lo 0 //模拟A公司总公司的私网网段//

R9(config-if)#ip add 192.168.9.1255.255.255.0

R9(config-if)#int f0/0

R9(config-if)#ip add 172.16.1.2255.255.255.0

R9(config-if)#no sh

---------------------------以上是ip地址配置----------------------------------

R1

R1(config)#router isis //开启ISIS协议//

R1(config-router)#net 49.0001.0010.0100.1001.00 //根据环回口翻译得出net地址//

R1(config-router)#is-type level-1 //指定为L1型路由器//

R1(config)#int r f0/1 ,lo 0 //在AS内部的互连接口和环回口下通告ISIS//

R1(config-if-range)#ip router isis

R2 //R2上ISIS配置同R1这里就不再赘述了//

R2(config)#router isi

R2(config-router)#net 49.0001.0020.0200.2002.00

R2(config-router)#is-type level-1

R2(config)#int r f0/0 - 1 ,lo 0

R2(config-if-range)#ip router isis

R3 //R3上ISIS配置同R1这里就不再赘述了//

R3(config)#router isis

R3(config-router)#net 49.0001.0030.0300.3003.00

R3(config-router)#is-type level-1

R3(config)#int r f0/0 , lo 0

R3(config-if-range)#ip router isis

R5 //R5上ISIS配置同R1这里就不再赘述了,R5,R6,R7为另一个ISIS  AS//

R5(config)#router isis

R5(config-router)#net 49.0002.0050.0500.5005.00

R5(config-router)#is-type level-1

R5(config)#int r f0/1 ,lo 0

R5(config-if-range)#ip router isis

R6 //R6上ISIS配置同R1这里就不再赘述了//

R6(config)#router isis

R6(config-router)#net 49.0002.0060.0600.6006.00

R6(config-router)#is-type level-1

R6(config)#int r f0/0 - 1 ,lo 0

R6(config-if-range)#ip router isis

R7 //R7上ISIS配置同R1这里就不再赘述了//

R7(config)#router isis

R7(config-router)#net 49.0002.0070.0700.7007.00

R7(config-router)#is-type level-1

R7(config)#int r f0/0 ,lo 0

R7(config-if-range)#ip router isis 2

---------------------------以上是IS-IS路由配置及验证----------------------------

R1

R1(config)#router bgp 65001 //开启BGP协议//

R1(config-router)#neighbor 2.2.2.2 remote-as 65001 //指定为IBGP//

R1(config-router)#neighbor 2.2.2.2 update-source lo 0

R1(config-router)#neighbor 3.3.3.3 remote-as 65001

R1(config-router)#neighbor 3.3.3.3 update-source lo 0

R1(config-router)#network 10.0.0.0 mask 255.255.255.252  //通过IBGP传递下挂的30位掩码大客户公网业务网段//

R2 //R2上IBGP配置同R1这里就不再赘述了//

R2(config)#router bgp 65001

R2(config-router)#neighbor 1.1.1.1 remote-as 65001

R2(config-router)#neighbor 1.1.1.1 update-source lo 0

R2(config-router)#neighbor 3.3.3.3 remote-as 65001

R2(config-router)#neighbor 3.3.3.3 update-source lo 0

R2(config-router)#neighbor 1.1.1.1 next-hop-self // R2作为市干设备需要告诉BARS(R1)自己为通过BGP学习到的路由的下一跳//

R2(config-router)#neighbor 1.1.1.1 route-reflector-client //R2作为市干设备需要指定BARS(R1)为自己的路由反射器客户端//

R3 //R3上IBGP配置同R1这里就不再赘述了//

R3(config)#router bgp 65001

R3(config-router)#neighbor 1.1.1.1 remote-as 65001

R3(config-router)#neighbor 1.1.1.1 update-source lo 0

R3(config-router)#neighbor 2.2.2.2 remote-as 65001

R3(config-router)#neighbor 2.2.2.2 update-source lo 0

R3(config-router)#neighbor 1.1.1.1 next-hop-s // R3作为省干设备需要告诉市干(R2),BARS(R1)自己为通过BGP学习到的路由的下一跳//

R3(config-router)#neighbor 2.2.2.2 next-hop-self

R3(config-router)#neighbor 2.2.2.2 route-reflector-client //R3作为省干设备需要指定市干(R2)为自己的路由反射器客户端//

在R3的路由表中可以看到通过IBGP学习到R1下的公网业务网段路由,在R3上可以ping通R1的loopback 10,证明通过IBGP传递路由成功。

R7 //R7上IBGP配置同R1这里就不再赘述了//

R7(config)#router bgp 65002

R7(config-router)#neighbor 6.6.6.6 remote-as 65002

R7(config-router)#neighbor 6.6.6.6 update-source lo 0

R7(config-router)#neighbor 5.5.5.5 remote-as 65002

R7(config-router)#neighbor 5.5.5.5 update-source lo 0

R7(config-router)#network 70.0.0.0 mask 255.255.255.252 //通过IBGP传递下挂的30位掩码大客户公网业务网段//

R6 //R6上IBGP配置同R1这里就不再赘述了//

R6(config)#router bgp 65002

R6(config-router)#neighbor 7.7.7.7 remote-as 65002

R6(config-router)#neighbor 7.7.7.7 update-source lo 0

R6(config-router)#neighbor 5.5.5.5 remote-as 65002

R6(config-router)#neighbor 5.5.5.5 update-source lo 0

R6(config-router)#neighbor 7.7.7.7 next-hop-self // R6作为市干设备需要告诉BARS(R7)自己为通过BGP学习到的路由的下一跳//

R6(config-router)#neighbor 7.7.7.7 route-reflector-client //R6作为市干设备需要指定BARS(R7)为自己的路由反射器客户端//

R5 //R5上IBGP配置同R1这里就不再赘述了//

R5(config)#router bgp 65002

R5(config-router)#neighbor 6.6.6.6 remote-as 65002

R5(config-router)#neighbor 6.6.6.6 update-source lo 0

R5(config-router)#neighbor 7.7.7.7 remote-as 65002

R5(config-router)#neighbor 7.7.7.7 update-source lo R5(config-router)#neighbor6.6.6.6 next-hop-self // R5作为省干设备需要告诉市干(R6),BARS(R7)自己为通过BGP学习到的路由的下一跳//

R5(config-router)#neighbor 7.7.7.7 next-hop-self

R5(config-router)#neighbor 6.6.6.6 route-reflector-client //R5作为省干设备需要指定市干(R6)为自己的路由反射器客户端//

在R5的路由表中可以看到通过IBGP学习到R7下的公网业务网段路由,在R5上可以ping通R7的loopback 10,证明通过IBGP传递路由成功。

------------------------------以上是IBGP配置及验证-------------------------------

R3

R3(config)#ip route 4.4.4.4 255.255.255.255 34.0.0.2

R4

R4(config)#ip route 3.3.3.3 255.255.255.255 34.0.0.1

//R3与R4要建立EBGP邻居关系,所以它们之间要可以通信(网络层可达),需要互指静态路由//

R4

R4(config)#ip route 5.5.5.5 255.255.255.255 45.0.0.2

R5

R5(config)#ip route 4.4.4.4 255.255.255.255 45.0.0.1

//R5与R4要建立EBGP邻居关系,所以它们之间要可以通信(网络层可达),需要互指静态路由//

R3

R3(config)#router bgp 65001

R3(config-router)#neighbor 4.4.4.4 remote-as 65003 //与R4建立EBGP邻居//

R3(config-router)#neighbor 4.4.4.4 update-source lo 0

R3(config-router)#neighbor 1.1.1.1 next-hop-s // R3作为省干设备需要告诉市干(R2),BARS(R1)自己为通过BGP学习到的路由的下一跳//

R3(config-router)#neighbor 2.2.2.2 next-hop-self

R3(config-router)#neighbor 2.2.2.2 route-reflector-client //R3作为省干设备需要指定市干(R2)为自己的路由反射器客户端//

R3(config-router)#neighbor 4.4.4.4 ebgp-multihop 2 //手工配置R3的EBGP跳数限制为2//

R4 //R4需和R3,R5建立EBGP邻居//

R4(config)#router bgp 65003

R4(config-router)#neighbor 3.3.3.3 remote-as 65001

R4(config-router)#neighbor 3.3.3.3 update-source lo 0

R4(config-router)#neighbor 5.5.5.5 remote-as 65002

R4(config-router)#neighbor 5.5.5.5 update-source lo 0

R4(config-router)#neighbor 3.3.3.3 ebgp-multihop 2 //手工配置R4的EBGP跳数限制为2//

R4(config-router)#neighbor 5.5.5.5 ebgp-multihop 2

R5 //R5上EBGP配置同R3这里就不再赘述了//

R5(config)#router bgp 65002

R5(config-router)#neighbor 4.4.4.4 remote-as 65003

R5(config-router)#neighbor 4.4.4.4 update-source lo 0

R5(config-router)#neighbor 4.4.4.4 ebgp-multihop 2

在R7上查看BGP表可以看到到达R1下挂公网业务网段路由已经优化,再查看路由表可以看到该条路由已经放入到路由表中,在R7上以loopback 10为源可以ping通R1的loopback 10,证明实现了BARS下挂的公网业务网段跨越互联网的通信。

-----------------以上为公网路由BGP配置--------------------

R1

R1(config)#ip vrf vpna //在R1上划分×××A(名字见名知意即可)//

R1(config-vrf)#route-target 100:1 //设置路由标记,用于唯一标示该×××的路由//

R1(config-vrf)#rd 100:1 //设置路由撤销标记,用于在发送路由撤销时标示不同的×××//

R1(config)#int f0/0

R1(config-if)#ip vrf forwarding vpna //把接口加入到对应×××中//

R1(config-if)#ip add 172.16.0.1 255.255.255.0 //接口ip地址配置需在划分×××之后进行//

R1(config-if)#no sh

R7 //R7上配置同R1这里就不再赘述了//

R7(config)#ip vrf vpna

R7(config-vrf)#route-target 100:1 //注意:因为本例中需要实现总公司和分公司私网之间的互通所以rt值两端需设置为相同,若两端rt的import(收)和export(发)值不同则为hub-spoke模型//

R7(config-vrf)#rd 100:1

R7(config-vrf)#int f0/1

R7(config-if)#ip vrf forwarding vpna

R7(config-if)#ip add 172.16.1.1 255.255.255.0

R7(config-if)#no sh

R1

R1(config)#ip route vrf vpna 192.168.8.0 255.255.255.0172.16.0.2 //在R1上指一条到达公司私网的静态路由(注意要指明是属于哪个×××的路由)//

R7

R7(config)#ip route vrf vpna 192.168.9.0 255.255.255.0172.16.1.2 //在R7上指一条到达公司私网的静态路由(注意要指明是属于哪个×××的路由)//

R8

R8(config)#ip route 0.0.0.0 0.0.0.0 172.16.0.1

R9

R9(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.1

//R8,R9作为公司的出口设备需要指一条到运营商的默认路由//

注意:如果要实现公司之间私网跨越互联网的通信,首先控制层面要可达即路由可达,所以要在公司接入的BARS/SR设备上通过MPBGP传递×××路由。

R1

R1(config)#router bgp 65001

R1(config-router)#address-family vpnv4 //指定为MPBGP//

R1(config-router-af)#neighbor 3.3.3.3 activate //注意:MPBGP邻居关系建立前提是普通的BGP邻居必须已经建立,这里只要激活下MPBGP邻居就好//

R1(config-router-af)#neighbor 3.3.3.3 send-community extended //指定向MPBGP邻居发送包含RT,RD信息的路由消息//

R1(config-router)#address-family ipv4 vrf vpna //需在指定×××的模式下通过MPBGP通告路由//

R1(config-router-af)#network 172.16.0.0 mask 255.255.255.0

R1(config-router-af)#network 192.168.8.0 mask 255.255.255.0

R3 //R3上MPBGP配置命令及原理同R1,这里不再赘述,需要注意的是R3不但要和R1建立IBGP邻居还要和R4建立EBGP邻居以传递私网路由//

R3(config)#router bgp 65001

R3(config-router)#address-family vpnv4

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 4.4.4.4 activate

R3(config-router-af)#neighbor 1.1.1.1 send-community extended

R3(config-router-af)#neighbor 1.1.1.1 next-hop-self //R3需告诉它下挂BARS设备通过MPBGP学习到的路由下一跳为自己,否则BGP会认为路由不可达而不优化//

R3(config)#ip vrf vpna //因为R3需要通过MPBGP传递×××私网路由,所以需要建立相对应的×××信息(RT,RD)//

R3(config-vrf)#route-target 100:1

R3(config-vrf)#rd 100:1

R4 //R4上MPBGP配置命令及原理同R1,这里不再赘述,需要注意的是R4不但要和R3建立EBGP邻居还要和R5建立EBGP邻居以传递私网路由//

R4(config)#router bgp 65003

R4(config-router)#address-family vpnv4

R4(config-router-af)#neighbor 3.3.3.3 activate

R4(config-router-af)#neighbor 3.3.3.3 send-community extended

R4(config-router-af)#neighbor 5.5.5.5 activate

R4(config-router-af)#neighbor 5.5.5.5 send-community extended

R4(config-router)#ip vrf vpna //因为R4需要通过MPBGP传递×××私网路由,所以需要建立相对应的×××信息(RT,RD)//

R4(config-vrf)#route-target 100:1

R4(config-vrf)#rd 100:1

R5 //R5上MPBGP配置命令及原理同R1,这里不再赘述,需要注意的是R5不但要和R4建立EBGP邻居还要和R7建立IBGP邻居以传递私网路由//

R5(config)#router bgp 65002

R5(config-router)#address-family vpnv4

R5(config-router-af)#neighbor 4.4.4.4 activate

R5(config-router-af)#neighbor 4.4.4.4 send-community extended

R5(config-router-af)#neighbor 7.7.7.7 activate

R5(config-router-af)#neighbor 7.7.7.7 send-community extended

R5(config-router-af)#neighbor 7.7.7.7 next-hop-self //R5需告诉它下挂BARS设备通过MPBGP学习到的路由下一跳为自己,否则BGP会认为路由不可达而不优化//

R5(config)#ip vrf vpna //因为R5需要通过MPBGP传递×××私网路由,所以需要建立相对应的×××信息(RT,RD)//

R5(config-vrf)#route-target 100:1

R5(config-vrf)#rd 100:1

R7 //R7上MPBGP配置命令及原理同R1,这里不再赘述,需要注意的是R7不但要和R5建立IBGP邻居还要在相应×××模式下通告×××私网路由//

R7(config)#router bgp 65002

R7(config-router)#address-family vpnv4

R7(config-router-af)#neighbor 5.5.5.5 activate

R7(config-router-af)#neighbor 5.5.5.5 send-community extended

R7(config-router)#address-family ipv4 vrf vpna

R7(config-router-af)#network 172.16.1.0 mask 255.255.255.0

R7(config-router-af)#redistribute static metric 2 //BGP通告路由方式可以采用network命令,另外当设备上静态路由条目较多, 或运行了动态路由协议时可以使用redistribute (路由重分发)的方式//

在R1上查看vpna的BGP表可以看到192.168.9.0的路由已经优化,在vpna的路由表中可以看到通过MPBGP学习到192.168.9.0/24的路由信息,那么控制层面的路由信息有了,数据能通吗?来验证下。

在R8上ping R9的loopback 0不可达,我们来理一下思路,看一下数据的转发过程,首先当一个目标地址为192.168.9.1的数据包从R8发出时会匹配默认路由发到R1上,R1会查找路由表。

因为数据包是从R1的f0/0接口收到的,而f0/0是属于vpna的接口,R1会查看vpna的路由表,发现到192.168.9.0/24子网的下一跳是3.3.3.3,因为3.3.3.3不是R1的直连接口,R1会递归再查看公网路由表来寻找到3.3.3.3的路径。

发现到达3.3.3.3的下一跳是12.0.0.2(R2的f0/0接口),而R2作为公网路由器P设备上根本就没有vpna的相关信息,自然也就不会有vpna的路由192.168.9.0/24的条目,所以数据包到达R2时就会被丢弃。所以我们需要在所有公网路由器的互连接口上开启LDP协议,动态的为数据包交换公网标签,这样一来,公网的路由器在收到一个打上标签的数据包时,只会根据自己的公网标签表来做标签交换转发数据包,不会去查看里面包裹的目标ip地址,相当于通过动态的标签交换构建了一条跨越互联网的MPLS-×××隧道。

实验总结:

1.BGP/MPLS-×××的原理:通过在裹有私网标签的私网数据报文外面再包裹一层公网标签(在接口下开启LDP协议自动分配公网标签),实现双层的标签嵌套,从而使私网数据在公网传输时进行标签查找交换不进行路由查找,相当于通过公网标签交换打通了一条穿越互连网的隧道,使得私网间数据可以跨越互联网传输。

2.BGP/MPLS-×××是通过建立MPBGP邻居关系来传递私网的路由信息,建立MPBGP邻居关系的前提是要先建立普通的BGP邻居关系。

3.BGP/MPLS-×××没用采用任何的加密技术,所以数据在公网传输时是明文的,只能应用于公司私网之间的数据传输不需要加密的场景,如果需要加密传输,可以采用IPSEC-×××技术。我会在手续的文章中介绍。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Weak关键字介绍
下一篇:Java基础之CardLayout的使用
相关文章

 发表评论

评论列表