MPLS 高级应用 sham-link

实验目的: 理解sham-link使用场景
sham-link命令用来配置伪连接,并配置伪连接的参数

使用场景
本命令仅在VPN场景下使用。
使用sham-link命令创建伪连接,使VPN流量优先经过VPN骨干区域的路由,避免在同一个OSPF区域内属于同一个VPN之间的通信总是通过OSPF区域内路由转发。

配置影响
在VPN PE间配置伪连接后,伪连接将被视为OSPF区域内路由。用于使经过MPLS VPN骨干网的路由成为OSPF区域内路由,避免VPN流量经这条路由转发。伪连接的源地址和目的地址使用32位掩码的Loopback接口地址,该Loopback接口需要绑定到VPN实例中,并通过BGP发布。

注意事项
配置伪连接时,伪连接端点地址的路由不能通过私网的OSPF进程发布到对端PE上。如果伪连接端点地址的路由通过私网的OSPF进程发布到对端PE上,则对端PE将同时存在两条到该伪连接端点地址的路由。其中一条是通过私网OSPF学习到的,另一条是通过MP-BGP学习到的。OSPF路由比BGP路由优先级高,对端PE错误地选择了OSPF路由,所以伪连接无法建立成功。

实验环境:
MPLS 高级应用 sham-link
如图:基础环境配置:
R1-2-3-4-5, R1和R5 是CE, R2和R4 是PE,R2-R3-R4 之间运行MPLS+LDP,
PE和CE之间运行EBGP,R2 和R4 之间运行IBGP,AS号100, MPLS域内运行OSPF 1, 这个OSPF 1 是用作底层路由的, 其中R1 和R5 之间连接一根后门链路, 也宣告进OSPF 110 area 0

需求:
正常的数据转发, 走MPLS 链路, 当MPLS链路不可用, 再走后门链路。

分析原因:
由于R2 把OSPF100的路由引入到BGP100 ,传递到R4 ,再从R4 的BGP进程中引入到OSPF100, 同理, 反过来的路由也是一样,而MPLS在OSPF中是看做超级骨干区域的,当R1-2之家的OSPF进程号和R4-5 之间的进程号一样, 就看作是传递额3类LSA,两边进程号不一样, 就看作是5类LSA,这样导致两边的路由类型是区域间路由, 而R1-5之间是宣告进同一个区域的, 是1/2类路由,是区域内路由,由于区域内路由优于区域间路由, 导致所有的流量全部走后门链路, 不走MPLS区域,

配置环境

首先R2-3-4之间的OSPF 邻居没有问题,
PE2-4 之间建立IBGP邻居关系, R3 不需要启用BGP

配置:基础配置省略


配置vpn instance
首先配置vpn instance 并且关联到与CE相连的PE 接口上:
在R2 上:
ip vpn-instance 1
ipv4-family
route-distinguisher 100:100
vpn-target 200:400 export-extcommunity
vpn-target 400:200 import-extcommunity
interface GigabitEthernet0/0/0
ip binding vpn-instance 1
ip address 12.1.1.2 255.255.255.0

在R4 上:

ip vpn-instance 1
ipv4-family
route-distinguisher 100:100
vpn-target 400:200 export-extcommunity
vpn-target 200:400 import-extcommunity

interface GigabitEthernet0/0/1
ip binding vpn-instance 1
ip address 45.1.1.4 255.255.255.0


CE-PE 之间运行OSPF
接下来在R1 和R2 之间运行OSPF
[R1-ospf-100]display this
[V200R003C00]

ospf 100 router-id 1.1.1.1
area 0.0.0.0
network 12.1.1.1 0.0.0.0
[R2-ospf-100]display this
[V200R003C00]

ospf 100 vpn-instance 1
area 0.0.0.0
network 12.1.1.2 0.0.0.0

R4 :
ospf 100 router-id 4.4.4.4 vpn-instance 1
area 0.0.0.0
network 45.1.1.4 0.0.0.0
R5:
[R5-ospf-100]display this
[V200R003C00]

ospf 100 router-id 5.5.5.5
area 0.0.0.0
network 45.1.1.5 0.0.0.0


BGP部分:PE 上BGP中导入OSPF路由

R2

[R2]bgp 100

ipv4-family vpn-instance 1

import-route ospf 100

R4

[R4]bgp 100

ipv4-family vpn-instance 1

import-route ospf 100


OSPF 部分,PE上OSPF中导入BGP路由
在R2和R4 的OSPF 100 中分别引入BGP
[R2]ospf 100
[R2-ospf-100]import-route bgp
[R4]ospf 100
[R4-ospf-100]import-route bgp
首先关闭后门链路, 查看R1 路由表,
可以看到R1 已经收到了所有路由, 同理,R5 也收到了对应的路由

MPLS 高级应用 sham-link
MPLS 高级应用 sham-link

测试没有问题, 连通性问题解决了


查看R1 收到的OSPF路由更新中携带的属性
接下来在R1 上抓包, 在R5 上把5.5.5.5/32 先撤销, 再重新宣告一下,
R5 上操作:
[R5-ospf-100-area-0.0.0.0]undo network 5.5.5.5 0.0.0.0
[R5-ospf-100-area-0.0.0.0]network 5.5.5.5 0.0.0.0

MPLS 高级应用 sham-link

从这张图中可以看到, OSPF 撤销路由使用的是LS age=3600 的更新,这条需要撤销的路由是3类LSA, 前缀是5.5.5.5/32, ADV router 是12.1.1.2, DN 位已经置位,这个位是用来防环的。

MPLS 高级应用 sham-link
可以看到撤销后, LSA的更新报文中LS age字段是1,这是一条路由通告


查看BGP 报文更新中携带的路由属性
由于OSPF 进程ID不同可以建立邻居,还有很多场景, 开销值如何携带,OSPF 有很多的区域规则, 防环机制,
我们再在R2 0/0/1 口抓包

MPLS 高级应用 sham-link


分析路由流向

接下来我们分析一下。
在这个环境中, 中间运行的是MPLS, 右边LSA1/2传递给左边的LSA, 左边收到后是几类LSA,
MPLS 高级应用 sham-link

思科认为是3类LSA,华为认为是5类的,
因为在PE上, 需要把OSPF 路由重分发进BGP, 把BGP中的路由重分发进OSPF,重分发后相当于是外部路由,就是一个5类LSA,华为认为是3类LSA,只有ABR 会产生3类LSA,这里PE可以看成是ABR,中间这个MPLS 可以看成是一个超级骨干区域,虽然左边也是area 0 , 但是等级要比area 0 等级高一点,
比如在这个环境中, 左边进程1 , 右边进程2, 进程不影响邻居建立,但是影响路由的类型, 影响区域的概念,
MPLS 高级应用 sham-link

今天我们这里讨论的是两边区域ID 相同的情景。
如图, 两个CE, 如果启用后门链路, 左右区域号一致, 后门链路传递1/2类LSA,流量不走MPLS 区域,如果区域号不一致, 传递3类LSA,由于MPLS 传递的也是3类LSA, 这个时候就需要比较cost,
对于左右区域相同的,情况, 流量不会走MPLS, 会全部走后门链路, 对于这种情况, 需要在PE1-2之间启用sham-link,sham-link 可以在两个PE之间建立一条逻辑隧道, 这条隧道, 可以把3类LSA 以1/2类LSA 传递过去。
接下来我们把后门链路启用,宣告进OSPF 100 area 0. 验证一下


配置sham-link
MPLS 高级应用 sham-link

在新添加的这条线两端配置15.1.1.0/24地址,并测试连通性
分别在R1和R5上将这个链路宣告进OSPF 100 area 0 查看邻居, 没有问题。
MPLS 高级应用 sham-link

现在邻居起来了, 我们看一下路由
MPLS 高级应用 sham-link

通过查看路由表, 发现R1 上去往R5 下一跳直接是G0/0/1, 去往R5
因为这条R1 上的5.5.5.5 是1类LSA,
我们查看OSPF LSDB, 发现这个5.5.5.5/32 是1类LSA,
MPLS 高级应用 sham-link
这个时候, 我们把R1 g0/0/1接口关闭, 发现R1 上关于R5 5.5.5.5/32
MPLS 高级应用 sham-link

可以看到通过走MPLS, 这个5.5.5.5 的LSA 是3类的,可以看到, 当R1-5之间的邻居起来后, 直接把从MPLS 过来的3类LSA 覆盖了, 没有了。


配置sham-link

接下来我们配置sham-link,位置在PE上, R2 和R5 , 要单独创建一个loopback, 而且必须是32位掩码, 关联vpn 实例, 并且这个环回口要在BGP的vpn 实例中通告出去
R2 :
interface LoopBack1
ip binding vpn-instance 1-----建立sham-link的环回口要和vpn instance 关联
ip address 22.22.22.22 255.255.255.255
bgp 100

ipv4-family vpn-instance 1 --------要在vpn instance中操作
network 22.22.22.22 255.255.255.255 在BGP中通告建立sham-link的环回口
import-route ospf 100--------------重分发OSPF 100

ospf 100 vpn-instance 1-----建立关联vpn instance 的ospf
import-route bgp----------重分发BGP
area 0.0.0.0 —都宣告进area 0,如果两边宣告的区域ID不一样, 会导致问题
network 12.1.1.2 0.0.0.0
sham-link 22.22.22.22 44.44.44.44 启用shamlink
R4:
interface LoopBack1
ip binding vpn-instance 1
ip address 44.44.44.44 255.255.255.255
bgp 100
ipv4-family vpn-instance 1
network 44.44.44.44 255.255.255.255
ospf 100 router-id 4.4.4.4 vpn-instance 1
import-route bgp
area 0.0.0.0
network 45.1.1.4 0.0.0.0
sham-link 44.44.44.44 22.22.22.22
MPLS 高级应用 sham-link

查看R1 路由表, 发现R1 去往R5 5.5.5.5 还是走下边, 因为出接口是g0/0/1,
MPLS 高级应用 sham-link

我们现在分析一下, R1 现在可以收到MPLS 和下边的OSPF 的LSA 都是1/2类的,而上下的带宽都是一样的, 开销都一样, 但是上边比下边跨越的路由器多一些, 所以选择了,下边, 现在我们在R1/5的G0/0/1口增加ospf cost,
[R1-GigabitEthernet0/0/1]ospf cost 10
[R5-GigabitEthernet0/0/1]ospf cost 10
MPLS 高级应用 sham-link

MPLS 高级应用 sham-link

可以看到R1 可以收到关于这个网络5.5.5.5 的1/3类LSA,通过查看这个3类LSA, 发现option中的字段DN位是置位的。
MPLS 高级应用 sham-link

如果把sham-link去掉, 可以看到, 还是走下边路径的
[R2-ospf-100-area-0.0.0.0]undo sham-link 22.22.22.22 44.44.44.44
MPLS 高级应用 sham-link
MPLS 高级应用 sham-link

验证了sham-link 的作用, 是在R2 和R4 之间建立了一条逻辑隧道, 实现了把R5 上的一类LSA 5.5.5.5从R4 传递到R2 上, 是以1/2类LSA传递的。

上一篇:Android抓包


下一篇:ASP .NET CORE 根据环境变量支持多个 appsettings.json