【高级】思科BGP-MPLS-VPN在城域网中的部署实战


实验拓扑:(GNS3-镜像文件:c3725-adventerprisek9-mz.124-15.T5

需求:

1.  AS65001通过OSPF通告直接和环回口网段,通过BGP协议通告公网业务路由。

2.  通过BGP MPLS-VPN技术使R9R10模拟的总公司、分公司中的私网之间可以互相通信

步骤:

1.ip地址规划

R9接口ip地址

Fa0/0

192.168.90.2/24

R10接口ip地址

Fa0/0

192.168.100.2/24


Loopback  0

172.16.90.1/32


Loopback  0

172.16.100.1/32

R1接口ip地址

Fa1/0

192.168.90.1/24

R5接口ip地址

Fa1/0

192.168.100.1/24


Fa0/1

16.0.0.1/24


Fa0/1

25.0.0.5/24


Fa0/0

12.0.0.1/24


Fa0/0

56.0.0.5/24


Loopback  0

1.1.1.1/32


Loopback  0

5.5.5.5/32

R2接口ip地址

Fa0/0

12.0.0.2/24

R6接口ip地址

Fa0/1

56.0.0.6/24


Fa0/1

25.0.0.2/24


Fa0/0

16.0.0.6/24


Fa1/0

26.0.0.2/24


Fa1/0

26.0.0.6/24


Fa1/1

23.0.0.2/24


Fa1/1

67.0.0.6/24


Loopback  0

2.2.2.2/32


Loopback  0

6.6.6.6/32

R3接口ip地址

Fa0/0

23.0.0.3/24

R7接口ip地址

Fa0/0

67.0.0.7/24


Fa0/1

37.0.0.3/24


Fa0/1

37.0.0.7/24


Fa1/0

34.0.0.3/24


Fa1/0

78.0.0.7/24


Loopback  0

3.3.3.3/32


Loopback  0

7.7.7.7/32

R4接口ip地址

Fa0/0

34.0.0.4/24

R8接口ip地址

Fa0/0

78.0.0.8/24


Fa0/1

48.0.0.4/24


Fa0/1

48.0.0.8/24


Loopback  0

4.4.4.4/32


Loopback  0

8.8.8.8/32

2.使用ospf协议将AS65001自治系统中的路由器链路网段互通

#R1配置如下

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

Router>en                                                       //进入en命令进入特权模式

Router#configt                                            //通过config terminal命令进入全局配置模式

Router(config)#hostnameR1         //更改路由的名称,便于查看

R1(config)#interfacefa0/0                //进入fa0/0接口模式

R1(config-if)#ipaddress 12.0.0.1 255.255.255.0             //配置ip地址

R1(config-if)#noshut                          //通过 no shutdown激活ip地址

R1(config-if)#interfacefa0/1

R1(config-if)#ipaddress 16.0.0.1 255.255.255.0

R1(config-if)#noshut

--------------------------------------------以下是配置OSPF---------------------------------

R1(config)#R1ospf 110                      //启用ospf协议,并制定ospf的进程为110

R1(config-R1)#R1-id1.1.1.1           //指定路由id号为1.1.1.1                                

R1(config-R1)#network12.0.0.1 0.0.0.255 area 1           //通告R1所有链路网段和loopback0,并指定所在区域

R1(config-R1)#network16.0.0.1 0.0.0.255 area 1

R1(config-R1)#network1.1.1.1 0.0.0.0 area 1

#R2配置如下

R2ip地址和R1的配置相同此处略

--------------------------------------------以下是配置OSPF---------------------------------

Router(config)#hostnameR2                              //更改路由器的主机名为R2

R2(config)#R2ospf 110

R2(config-R2)#R2-id2.2.2.2

R2(config-R2)#network12.0.0.2 0.0.0.255 area 1

R2(config-R2)#network26.0.0.2 0.0.0.255 area 1

R2(config-R2)#network25.0.0.2 0.0.0.255 area 1

R2(config-R2)#network2.2.2.2 0.0.0.0 area 1

R2(config-R2)#network23.0.0.2 0.0.0.255 area 0

#R3配置如下

R3ip地址和R1的配置相同此处略

--------------------------------------------以下是配置OSPF---------------------------------

R3(config)#routerospf 110

R3(config-router)#router-id3.3.3.3

R3(config-router)#network23.0.0.3 0.0.0.255 area 0

R3(config-router)#network37.0.0.3 0.0.0.255 area 0

R3(config-router)#network3.3.3.3 0.0.0.0 area 0

#R5配置如下

R5ip地址和R1的配置相同此处略

--------------------------------------------以下是配置OSPF---------------------------------

R5(config)#routerospf 110

R5(config-router)#router-id5.5.5.5

R5(config-router)#network25.0.0.5 0.0.0.255 area 1

R5(config-router)#network56.0.0.5 0.0.0.255 area 1

R5(config-router)#network5.5.5.5 0.0.0.0 area 1

#R6配置如下

R6ip地址和R1的配置相同此处略

--------------------------------------------以下是配置OSPF---------------------------------

R6(config)#routerospf 100               //100ospf的进程号只对本地有效可以不同

R6(config-router)#router-id6.6.6.6

R6(config-router)#network56.0.0.6 0.0.0.255 area 1

R6(config-router)#network16.0.0.6 0.0.0.255 area 1

R6(config-router)#network26.0.0.6 0.0.0.255 area 1

R6(config-router)#network67.0.0.6 0.0.0.255 area 0

R6(config-router)#network6.6.6.6 0.0.0.0 area 1

#R7配置如下

R7ip地址和R1的配置相同此处略

-------------------------------------------以下是配置OSPF----------------------------------

R7(config)#routerospf 110

R7(config-router)#router-id7.7.7.7

R7(config-router)#network67.0.0.7 0.0.0.255 area 0

R7(config-router)#network37.0.0.7 0.0.0.255 area 0

R7(config-router)#network7.7.7.7 0.0.0.0 area 0

通过show ip route 查看是否学到所有的链路网段路由

通过在R7上面查看ospf路由表说明AS65001自治系统内IGP协议已经都运行了

3.R9R10配置ip地址,静态路由

#R9配置如下

R9ip地址和R1的配置相同此处略

R9(config)#iproute 0.0.0.0 0.0.0.0 192.168.90.1                     //所有的数据包将通过默认路由转发出去

#R10配置如下

R10ip地址和R1的配置相同此处略

R10(config)#iproute 0.0.0.0 0.0.0.0 192.168.100.1

4.R1R5路由上面配置vrf,并配置一条基于vrf的静态路由指向CR

#R1配置如下

--------------------------------------------以下是配置vrf----------------------------------

R1(config)#ipvrf vpna                                  //创建一个vrf名称为vpnavrfR1独立出来的一个路由表单独存储

R1(config-vrf)#route-target100:1            //指定route-target,默认importexport的标示是一样的。当两端的route-target一样时才可以建立连接。

R1(config-vrf)#rd100:1                               //PE为了区分不同vrf传递的相同路由,一般rd的值和route-target的值一样

R1(config-if)#interfacefa1/0

R1(config-if)#ipvrf forwarding vpna         //将对应的接口放入到vpna

R1(config-if)#ipaddress 192.168.90.1 255.255.255.0 //配置该接口的ip地址

注意:在将接口放入到vpna时,会将之前配置的ip地址删除掉。所以在加入到vrf时必须要重新配置ip地址。

R1(config-if)#noshut                                             //激活该接口

R1(config)#iproute vrf vpna 172.16.90.0 255.255.255.0 192.168.90.2   //vrf模拟下配置静态路由

 

#R5配置如下

--------------------------------------------以下是配置vrf----------------------------------

R5(config)#ipvrf vpna                                          

R5(config-vrf)#route-target100:1                     //由于R5R1需要建立连接,所以他们的importexport需要对应

R5(config-vrf)#rd100:1

R5(config-vrf)#interfacefa1/0

R5(config-if)#ipvrf forwarding vpna

%Interface FastEthernet1/0 IP address 192.168.100.1 removed due to enabling VRFvpna  //提示原有的ip地址将被移除

R5(config-if)#ipaddress 192.168.100.1 255.255.255.0

R5(config-if)#noshut

R5(config-if)#iproute vrf vpna 172.16.100.0 255.255.255.0 192.168.100.2

 

说明:

Vrf(vpnroute-forwarding)虚拟专用网路由转发表,用于存储业务网段。由于业务网段都是私有网段所以里面有可能重复,为了避免重复需要创建一个独立的路由表这就是vrf的功能。Route-target可以设置impotexport、输出和输入接口,当自己的输出接口对应对方的输入接口,自己的输入接口对应对方的输出接口则就可以建立。

 

5.R1R3R5R7上面做MP-BGP,使他们建立ibgp邻居关系

#R1配置如下

--------------------------------------------以下是配置MP-BGP-------------------------------

R1(config)#routerbgp 65001                                                          //创建bgp,并指定进程为65001

R1(config-router)#neighbor3.3.3.3 remote-as 65001             //手动指定邻居关系,并指定远程AS自治系统号

R1(config-router)#neighbor3.3.3.3 update-source loopback 0      //指定做通过自己的环回口和对方建立邻居关系

R1(config-router)#neighbor7.7.7.7 remote-as 65001            

R1(config-router)#neighbor7.7.7.7 update-source loopback 0

R1(config-router)#address-familyvpnv4          //进入vpnv4地址簇模式

R1(config-router-af)#neighbor3.3.3.3 activate   //在地址簇模式中激活邻居关系

R1(config-router-af)#neighbor3.3.3.3 send-community extended         //开启MP-BGP路由器的发送标签的功能

R1(config-router-af)#neighbor7.7.7.7 activate

R1(config-router-af)#neighbor7.7.7.7 send-community extended

 

说明:

Bgp通过TCP协议传输路由,只要指定的邻居能够到达则业务数据就会送达,因此R1中的vrf私用网段就可以被转发到R5,则在R1R5上面就可以指导数据转发了,由于开启了community功能所以当在转发路由时会携带源路由器所分配的标签号。

 

#R5的配置如下

--------------------------------------------以下是配置MP-BGP-------------------------------

R5(config)#routerbgp 65001

R5(config-router)#no synchronization

R5(config-router)#bgp log-neighbor-changes

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

R5(config-router)#neighbor 3.3.3.3 update-source Loopback0

R5(config-router)#neighbor 7.7.7.7 update-source Loopback0

R5(config-router)#address-familyvpnv4

R5(config-router-af)#neighbor3.3.3.3 activate

R5(config-router-af)#neighbor3.3.3.3 send-community extended

R5(config-router-af)#neighbor7.7.7.7 activate

R5(config-router-af)#neighbor7.7.7.7 send-community extended

#R3的配置如下

--------------------------------------------以下是配置MP-BGP-------------------------------

R3(config-router)#routerbgp 65001

R3(config-router)#neighbor1.1.1.1 remote-as 65001

R3(config-router)#neighbor1.1.1.1 update-source loopback 0

R3(config-router)#neighbor1.1.1.1 route-reflector-client

R3(config-router)#neighbor5.5.5.5 remote-as 65001

R3(config-router)#neighbor5.5.5.5 update-source loopback 0

R3(config-router)#neighbor5.5.5.5 route-reflector-client     //设置R5为自己的路由转发客户端

R3(config-router)#neighbor7.7.7.7 remote-as 65001

R3(config-router)#neighbor7.7.7.7 update-source loopback 0

R3(config-router)#bgpcluster-id 1                                                //设置群集号,防止环路

R3(config-router)#address-familyvpnv4

R3(config-router-af)#neighbor1.1.1.1 activate

R3(config-router-af)#neighbor1.1.1.1 send-community extended

R3(config-router-af)#neighbor1.1.1.1 route-reflector-client

R3(config-router-af)#neighbor5.5.5.5 activate

R3(config-router-af)#neighbor5.5.5.5 send-community extended

R3(config-router-af)#neighbor5.5.5.5 route-reflector-client

R3(config-router-af)#neighbor7.7.7.7 activate

R3(config-router-af)#neighbor7.7.7.7 send-community extended

#R3的配置如下

--------------------------------------------以下是配置MP-BGP-------------------------------

R7(config-if)#routerbgp 65001

R7(config-router)#neighbor1.1.1.1 remote-as 65001

R7(config-router)#neighbor1.1.1.1 update-source loopback 0

R7(config-router)#neighbor1.1.1.1 route-reflector-client

R7(config-router)#neighbor5.5.5.5 remote-as 65001

R7(config-router)#neighbor5.5.5.5 update-source loopback 0

R7(config-router)#neighbor5.5.5.5 route-reflector-client

R7(config-router)#neighbor3.3.3.3 remote-as 65001

R7(config-router)#neighbor3.3.3.3 update-source loopback 0

R7(config-router)#bgpcluster-id 1

R7(config-router)#address-familyvpnv4

R7(config-router-af)#neighbor1.1.1.1 activate

R7(config-router-af)#neighbor1.1.1.1 send-community extended

R7(config-router-af)#neighbor1.1.1.1 route-reflector-client

R7(config-router-af)#neighbor5.5.5.5 activate

R7(config-router-af)#neighbor5.5.5.5 send-community extended

R7(config-router-af)#neighbor5.5.5.5 route-reflector-client

R7(config-router-af)#neighbor3.3.3.3 activate

R7(config-router-af)#neighbor3.3.3.3 send-community extended

6.R1R5路由器上面通过MP-BGP发布业务网段,使路由表聚合

#R1的配置如下

--------------------------------------------以下是通过MP-BGP发布路由-----------------------

R1(config-router)#address-familyipv4 vrf vpna                                  //进入VPNA中发布私网路由

R1(config-router-af)#network192.168.90.0 mask 255.255.255.0

R1(config-router-af)#redistributestatic metric 10          //将私网的静态路由引入,以便传递给对端

#R5的配置如下

--------------------------------------------以下是通过MP-BGP发布路由-----------------------

R5(config-router)#address-familyipv4 vrf vpna

R5(config-router-af)#network192.168.100.0 mask 255.255.255.0

R5(config-router-af)#redistributestatic metric 10

通过show命令查看是否学习到所通告的路由

通过show命令可以看出路由器R1已经学到了R5所通告的路由

6.在运行MPLS的路由的接口上面启用LDP协议,用来分配公网标签

#R1的配置如下

--------------------------------------------以下是配置LDP协议------------------------------

R1(config)#interfacerange fa0/0 -1   //通过range命令同时进入多个接口

R1(config-if-range)#mplsip                        //开启LDP协议

#R2的配置如下

--------------------------------------------以下是配置LDP协议------------------------------

R2(config-router)#interfacerange fa0/0 -1 , fa1/0 -1

R2(config-if-range)#mplsip

#R3的配置如下

--------------------------------------------以下是配置LDP协议------------------------------

R3(config-router-af)#interfacerange fa0/1 - 1

R3(config-if-range)#mplsip

#R5的配置如下

--------------------------------------------以下是配置LDP协议------------------------------

R5(config-router-af)#interfacerange fa0/0 -1

R5(config-if-range)#mplsip

#R6的配置如下

--------------------------------------------以下是配置LDP协议------------------------------

R6(config-router)#interfacerange fa0/0 -1 , fa1/0 -1

R6(config-if-range)#mplsip

#R7的配置如下

--------------------------------------------以下是配置LDP协议------------------------------

R7(config-router-af)#interfacerange fa0/0 -1

R7(config-if-range)#mplsip

 

说明:

在运行mpls的所有PPE路由器的指定接口上面都要执行该命令,不然P路由是无法转发和接受带有标签的数据包的。

 

跟踪一下路由,看一下数据包的转发情况

注意:需要跟踪标签的转发情况需要在接口激活LDP协议(mpls ip

通过上面的转发路径,简单的说一下数据包在各路由器上面的转发流程。

1)通过show命令查看R1vpna tabel

vpna中的数据送达R1时,路由器会查看vpna所对应的路由表192.168.100.0标签为28,发现下一跳为5.5.5.5R5)。

这时路由器会给数据打上内部标签为28,这是由源路由器分配的MPLS标签。

2)通过show命令查看R1的公网路由转发表

本地标签是由自己给上游路由分配的标签号,出标签是由下游路由给自己分配的标签号。转发数据包是路由器会压入出标签由于上面对应的下一跳ip地址为5.5.5.5,所以这里的标签号为19

3)通过show命令查看R2的公网路由转发表

R2收到一个带有19的标签时,路由器会查找自己的mpls转发表找到19对应的条目,发现出标签为POP tag,这是路由器会弹出外部标签(PHP)19.然后将数据转发给5.5.5.5

4)通过show命令查看R5的公网路由表

R5收到一个标签号为28的路由则不带标签,直接转给192.168.100.2.当路由到达了R10则数据已经成功到达了172.168.100.1

测试

R9 ping结果

R10 ping结果

通过上面的ping测试,说明MPLS-VPN已经搭建成功,总公司和分公司之间能够互相访问了。

BGP-MPLS-VPN的工作原理总结如下:


-------私网路由和标签-------

1CE将一条普通路由传给PE

2PE通过VPNv4协议对该路由进行修改。(在路由信息中增加RD信息,将路由产生者(下一跳)改成自已的环回口,增加RT信息,分配并记录一个in标签28

3、通过MP-BGP协议传给VPN邻居。

4、对端收到后,会记录信息,出标签是28,下一跳是对端PE

5、将VPN信息脱掉,并将下一跳改成自己后,将一条普通的路由信息交给CE

 

----公网路由和标签---

1PE1为自己环回口的地址分一个标签3

2P收到明白自己是倒数第二跳。将该路由分配一个标签4,给下一跳。

3、收到后,没有邻居了,所以不再产生标签。

 

------数据转发-----------

1CE将数据交给PE

2PE将目标地址对应的私网标签装上。

3、下一跳是地址而不是出口,所以要递归查公网标签表。

4、打上下一跳对应的公网标签,从出口发出。

5P路由器收到后,直接根据目标地址查找标签表。进行标签交换。

6、对端PE收到后,由于公网标签已经被倒数二跳去掉,所以直接看到的就是私网标签,将标签脱掉后,将普通报文发送给下一跳CE

 


本文出自 “阳光学苑” 博客,请务必保留此出处http://yuan2.blog.51cto.com/446689/1583916

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。