实验拓扑:(GNS3-镜像文件:c3725-adventerprisek9-mz.124-15.T5)
需求:
1. AS65001通过OSPF通告直接和环回口网段,通过BGP协议通告公网业务路由。
2. 通过BGP MPLS-VPN技术使R9和R10模拟的总公司、分公司中的私网之间可以互相通信
步骤:
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配置如下
R2的ip地址和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配置如下
R3的ip地址和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配置如下
R5的ip地址和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配置如下
R6的ip地址和R1的配置相同此处略
--------------------------------------------以下是配置OSPF---------------------------------
R6(config)#routerospf 100 //100为ospf的进程号只对本地有效可以不同
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配置如下
R7的ip地址和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.给R9和R10配置ip地址,静态路由
#R9配置如下
R9的ip地址和R1的配置相同此处略
R9(config)#iproute 0.0.0.0 0.0.0.0 192.168.90.1 //所有的数据包将通过默认路由转发出去
#R10配置如下
R10的ip地址和R1的配置相同此处略
R10(config)#iproute 0.0.0.0 0.0.0.0 192.168.100.1
4.在R1和R5路由上面配置vrf,并配置一条基于vrf的静态路由指向CR。
#R1配置如下
--------------------------------------------以下是配置vrf----------------------------------
R1(config)#ipvrf vpna //创建一个vrf名称为vpna,vrf为R1独立出来的一个路由表单独存储
R1(config-vrf)#route-target100:1 //指定route-target,默认import和export的标示是一样的。当两端的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 //由于R5与R1需要建立连接,所以他们的import和export需要对应
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可以设置impot和export、输出和输入接口,当自己的输出接口对应对方的输入接口,自己的输入接口对应对方的输出接口则就可以建立。
5.在R1、R3、R5、R7上面做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,则在R1和R5上面就可以指导数据转发了,由于开启了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.在R1和R5路由器上面通过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的所有P和PE路由器的指定接口上面都要执行该命令,不然P路由是无法转发和接受带有标签的数据包的。
跟踪一下路由,看一下数据包的转发情况
注意:需要跟踪标签的转发情况需要在接口激活LDP协议(mpls ip)
通过上面的转发路径,简单的说一下数据包在各路由器上面的转发流程。
1)通过show命令查看R1的vpna 、tabel表
当vpna中的数据送达R1时,路由器会查看vpna所对应的路由表192.168.100.0标签为28,发现下一跳为5.5.5.5(R5)。
这时路由器会给数据打上内部标签为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的工作原理总结如下:
-------私网路由和标签-------
1、CE将一条普通路由传给PE
2、PE通过VPNv4协议对该路由进行修改。(在路由信息中增加RD信息,将路由产生者(下一跳)改成自已的环回口,增加RT信息,分配并记录一个in标签28)
3、通过MP-BGP协议传给VPN邻居。
4、对端收到后,会记录信息,出标签是28,下一跳是对端PE。
5、将VPN信息脱掉,并将下一跳改成自己后,将一条普通的路由信息交给CE。
----公网路由和标签---
1、PE1为自己环回口的地址分一个标签3。
2、P收到明白自己是倒数第二跳。将该路由分配一个标签4,给下一跳。
3、收到后,没有邻居了,所以不再产生标签。
------数据转发-----------
1、CE将数据交给PE。
2、PE将目标地址对应的私网标签装上。
3、下一跳是地址而不是出口,所以要递归查公网标签表。
4、打上下一跳对应的公网标签,从出口发出。
5、P路由器收到后,直接根据目标地址查找标签表。进行标签交换。
6、对端PE收到后,由于公网标签已经被倒数二跳去掉,所以直接看到的就是私网标签,将标签脱掉后,将普通报文发送给下一跳CE。