目录
- 实验要求
- mpls简介
- mpls工作过程
- 实验的配置
- 环回的配置
- R1和R5之间
- 公网的ospf配置
- 配置mpls-ldp
- 配置R1和R5间的mplsvpn
- 私网的rip及ospf的宣告配置
- 公网mp-bgp的建立
- R2和R4上面的双向重发布
- R7和R8之间
- 创建R7和R8间的mplsvpn
- 配置静态路由及环回
- 重发布
实验要求
如图
要求:
R1与R5 用mplsvpn,R1这个私网用rip协议跑通,R5用ospf获取路由
R7和R8 用mplsvpn,R7写静态路由到R8,R8也用静态路由写到R7
R8可以访问R2/3/4环回
mpls简介
MPLS:是多协议标签交换
多协议:可以基于多种不同的3层协议来生成2.5层的标签信息;
包交换:
原始的包交换:数据包进入路由器后,路由器需要查询本地的路由表(RIB-路由信息数据库),再基于下一跳或者目标ip查询本地的ARP表,才能进行数据的转发。
快速的包交换:一次路由多次交换;每个数据流中的第一个包将被基于原始包交换规则转发;过程中生成缓存列表,记录整个通讯过程,该数据流量剩余数据包仅查询缓存记录即可。
特快的包交换:无需路由,直接交换; CEF-cisco特快交换,为cisco私有技术;非cisco厂商设备均存在和cef转发机制相同的技术。
标签交换:
数据包在进入到的MPLS的域内后,将在第2层和3层中间压入标签号;使得域内的路由器在转发该数据包时,基于2.5层的标签号仅需要查询本地的一张LFIB表(标签转发信息数据库)
最初在包交换仅支持原始交换时,标签的意义在于更快的查询;但随着包交换的加速,使用标签交换失去了快速查表的优势;
当下MPLS存在的意义:
1、解决BGP的路由黑洞
2、MPLS VPN
3、MPLS TE 流量工程
mpls工作过程
控制层面
1)在没有MPLS时控制层面仅生成RIB(路由表)和FIB(转发信息数据库);FIB是基于RIB生成;
2)MPLS协议会启动TDP(cisco私有)或LDP(公有),直连设备间将建立邻居关系;
3)MPLS在建立邻居关系后,生成邻居表;LDP协议再基于FIB表中学习到的路由条目生成标签号
4)标签号生成后,将存储于本地的LIB表-标签信息数据库;LIB表将在邻居间共享; LIB表中装载本地及邻居为每条路由分发的标签号;
5)运行MPLS协议的设备,将LIB和FIB进行结合,将标签号和最佳路径的关系映射生成LFIB表(标签转发信息数据库)
数据层面
1)当流量进入到第一台pe设备时, 在没有特快交换之前,路由器基于目标IP地址查询本地的RIB;
在LIB表中对应确定流量是否应该压入标签,需要两张表的查询;
2)在存在特快交换时,流量进入第一pe时,直接查询FIB表,表中关联标签号,将直接确定是否压入标签;
3)流量再到P路由器,接收到流量中若存在标签基于LFIB表转发,若没有标签基于FIB表即可;流量从最后一台边界离开MPLS 域时将弹出标签;
实验的配置
基本的ip配置,环回配置均已经完成,不再写上,地址全部为192.168…/24的,图中对应的已经标出。R1 R2 R3 R4 R5环回分别为:
192.1681.1/24, 2.2.2.2/24, 3.3.3.3/24, 4.4.4.4/24, 192.168.4.1/24
环回的配置
[R1]int LoopBack 0 R1的
[R1]ip address 192.168.1.1 24
[R2]int LoopBack 0 R2的
[R2-LoopBack0]ip add 2.2.2.2 24
[R3]int LoopBack 0 R3的
[R3-LoopBack0]ip ad 3.3.3.3 24
[R4]int LoopBack 0 R4的
[R4-LoopBack0]ip address 4.4.4.4 24
[R5]int LoopBack 0 R5的
[R5-LoopBack0]ip address 192.168.4.1 24
R1和R5之间
大概总体思路:
1,先将公网基本ip配置配好,再用ospf让公网互通
2,R2和R4设备作为pe设备,也是EBGP设备,运行bgp协议建立邻居
3,在标签经过的接口运行mpls-ldp协议
4,创建对应vrf空间,并且将rip路由和bgp,ospf路由两两双向重发布
公网的ospf配置
[R4]ospf 1
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0]network 34.1.1.2 0.0.0.0
[R3]ospf 1
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]network 23.1.1.2 0.0.0.0
[R3-ospf-1-area-0.0.0.0]network 34.1.1.1 0.0.0.0
[R2]ospf 1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network 23.1.1.1 0.0.0.0
配置mpls-ldp
配置成功的前题是公网部分已经通了。
只需要在贴标签的路由接口上开启对应的mpls即可,该实验需要开启的接口是下面的四个:
R2-g/0/0/1
R3-g/0/0/0
R3-g/0/0/1
R4-g/0/0/0
配置:
[r2]mpls lsr-id 2.2.2.2 先用真实环回建立,且邻居可达,因为该地址用于建立tcp会话,建议用环回
[r2]mpls 开启mpls协议
[r2-mpls]mpls ldp 再激活ldp协议
之后需要在所有标签经过的接口上开启协议
[r2]interface GigabitEthernet 0/0/1 进入标签要经过的接口
[r2-GigabitEthernet0/0/1]mpls 先开启mpls协议
[r2-GigabitEthernet0/0/1]mpls ldp 再激活ldp协议
[r3]mpls lsr-id 3.3.3.3
[r3]mpls
[r3-mpls]mpls ldp
[r3]interface GigabitEthernet 0/0/1
[r3-GigabitEthernet0/0/1]mpls
[r3-GigabitEthernet0/0/1]mpls ldp
[r3]interface GigabitEthernet 0/0/0
[r3-GigabitEthernet0/0/0]mpls
[r3-GigabitEthernet0/0/0]mpls ldp
[r4]mpls lsr-id 4.4.4.4
[r4]mpls
[r4-mpls]mpls ldp
[r4]interface GigabitEthernet 0/0/0
[r4-GigabitEthernet0/0/0]mpls
[r4-GigabitEthernet0/0/0]mpls ldp
如下,查看建立tcp会话后的tcp状态
配置R1和R5间的mplsvpn
1、 CE将私有路由传递到PE端
2、 PE端在收到不同CE发送过来的相同网段路由时,使用RD值进行区分—格式X:X 32位
3、 PE端将附上RD的私有路由不能直接装载于本地公有路由表中,需要放置到对应的VRF(虚拟路由转发)空间内;之后再路由付RT值,用于传递到对端PE设备,对端区分信息;VPNV4路由=普通IPV4路由+RD+RT
4、 VPNV4路由需要MP-BGP来进行传递;对端基于RT值,将路由装载到对应的VRF空间内,再共享给对应的CE;
5、 控制层面工作完成后,数据层面需要基于MPLS来工作,由于数据层面不能携带RD/RT值;
故mpls将在数据包中压入两层标签,外层标签用于穿越中间设备,打破BGP路由黑洞;内层标签用于对应VRF空间;
配置:
[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端一致
[r2]interface GigabitEthernet 0/0/0 进入链接CE端的接口
[r2-GigabitEthernet0/0/0]ip binding vpn-instance a 关联到vrf空间a
[R4]ip vpn-instance a
[R4-vpn-instance-a]ipv4-family
[R4-vpn-instance-a-af-ipv4]route-distinguisher 1:1
[R4-vpn-instance-a-af-ipv4]vpn-target 1:1
[r4]interface GigabitEthernet 0/0/1
[r4-GigabitEthernet0/0/1]ip binding vpn-instance a
此时pe R2上直接ping192.168.2.1ping不通,因为,R2作为的是公网不会直接存储192.168.2.1这个网段地址,而是存在vrf空间的。需要用在空间a里面的路由表ping
用空间a里面的来ping
私网的rip及ospf的宣告配置
在R1上面正常配置即可:
[R1]rip 1
[R1-rip-1]version 2
[R1-rip-1]network 192.168.1.1 0.0.0.0
[R1-rip-1]network 192.168.2.1 0.0.0.0
[R2]rip 1 vpn-instance a
[R2-rip-1]v 2
[R2-rip-1]network 192.168.2.0
这时R2 vrf空间学习到了rip路由
[R5]ospf 2
[R5-ospf-2]area 0
[R5-ospf-2-area-0.0.0.0]network 192.168.4.1 0.0.0.0
[R5-ospf-2-area-0.0.0.0]network 192.168.3.2 0.0.0.0
[r4]ospf 2 vpn-instance a 在空间a中配置
[r4-ospf-2]area 0
[r4-ospf-2-area-0.0.0.0]network 192.168.3.1 0.0.0.0
这时R4 vrf空间学习到了ospf路由
公网mp-bgp的建立
[r2]bgp 1
[r2-bgp]router-id 2.2.2.2
[r2-bgp]pe 4.4.4.4 as-number 2 和对端R4建立邻居
[r2-bgp]pe 4.4.4.4 connect-interface LoopBack 0 用环回作为源
[r2-bgp]pe 4.4.4.4 next-hop-local 为了传递路由时条目优秀,将下一跳改为本地
同时还需要再在IPV4的家族模式中,与对端建立一个VPNV4的关系,用于传递VPNV4路由(mp-bgp关系)
[r2-bgp]ipv4-family vpnv4
[r2-bgp-af-vpnv4]peer 4.4.4.4 enable
[r4]bgp 1
[r4-bgp]router-id 4.4.4.4
[r4-bgp]pe 2.2.2.2 as-number 2
[r4-bgp]pe 2.2.2.2 connect-interface LoopBack 0
[r4-bgp]pe 2.2.2.2 next-hop-local
[r4-bgp]ipv4-family vpnv4
[r4-bgp-af-vpnv4]peer 2.2.2.2 enable
查看mp-bgp邻居关系
R2和R4上面的双向重发布
为了将R1和5通,需要将rip重发布到bgp,bgp重发布到rip,ospf重发布到bgp,bgp重发布到ospf。
重发布后EBGP会将自己通过任何协议学习到的路由条目传递到邻居
[R2]rip 1 vpn-instance a 到空间a里面导入bgp路由
[R2-rip-1]import-route bgp
[R2-rip-1]q
[R2]bgp 1
[R2-bgp]ipv4-family vpn-instance a 到空间里面导入rip
[R2-bgp-a]import-route rip 1
[R4]ospf 2 vpn-instance a
[R4-ospf-2]import-route bgp
[R4-ospf-2]q
[R4]bgp 1
[R4-bgp]ipv4-family vpn-instance a
[R4-bgp-a]import-route ospf 2
查看vrf空间里面的路由表发现R4有到1.0 和2.0 的路由了
测试:用R1pingR5环回成功
R7和R8之间
大概总体思路:
1,前面公网bgp环境配置已经好了。只需要在以上操作中做出一些添加就可以了,过程相似
创建R7和R8间的mplsvpn
[R2]ip vpn-instance b 再创建名为b的vrf空间用于R7和R8建立mpls-vpn
[R2-vpn-instance-a]ipv4-family 进入IPV4的家族配置模式下
[R2-vpn-instance-a-af-ipv4]route-distinguisher 2:2 RD值
[R2-vpn-instance-a-af-ipv4]vpn-target 2:2 RT值 必须对端的PE端一致
[r2]interface GigabitEthernet 0/0/2 进入链接CE端的接口
[r2-GigabitEthernet0/0/2]ip binding vpn-instance b 关联到vrf空间b
[R4]ip vpn-instance b
[R4-vpn-instance-a]ipv4-family
[R4-vpn-instance-a-af-ipv4]route-distinguisher 2:2
[R4-vpn-instance-a-af-ipv4]vpn-target 2:2
[r4]interface GigabitEthernet 0/0/2
[r4-GigabitEthernet0/0/2]ip binding vpn-instance b
配置静态路由及环回
[R7]ip route-static 192.168.4.0 24 192.168.5.2 手写去往R8的ip
[R7]ip route-static 192.168.6.0 24 192.168.5.2
[R7]int LoopBack 0
[R7-LoopBack0]ip ad 192.168.2.1
[R2]ip route-static vpn-instance b 192.168.2.0 24 192.168.5.1 在空间b中手写到R7的环回ip
[R8]ip route-static 192.168.2.0 24 192.168.6.1
[R8]ip route-static 192.168.5.0 24 192.168.6.1
[R7]int LoopBack 0
[R8-LoopBack0]ip ad 192.168.4.2
[R4]ip route-static vpn-instance b 192.168.4.0 24 192.168.6.2
重发布
[R2]bgp 1
[R2-bgp]ipv4-family vpn-instance b 在空间b中将直连路由和静态路由重发布到bgp
[R2-bgp-b]import-route direct
[R2-bgp-b]import-route static
[R4-bgp]bgp 1
[R4-bgp]ipv4-family vpn-instance b
[R4-bgp-b]import-route direct
[R4-bgp-b]import-route static
最后R2和R4的vrf b空间就有到R7 R8的路由了
pingR8的环回测试成功