当前位置: 代码迷 >> 综合 >> OSPF-weiPN联动下的防环问题
  详细解决方案

OSPF-weiPN联动下的防环问题

热度:13   发布时间:2024-02-01 18:46:36.0

OSPF-weiPN联动下的防环

文章目录

  • OSPF-weiPN联动下的防环
  • 参考阅读
  • 写在前面
  • 一、实验搭建
    • 1.1 实验拓扑
    • 1.2 分析
      • 1.2.1 为什么要被weiPN连接起来?
      • 1.2.2 hub间的通信
      • 1.2.3 OSPF-weiPN-instance
      • 1.2.4 路由引入
    • 1.3 配置部署
      • 1.3.1 spoke端
      • 1.3.2 hub端
      • 1.3.3 超级骨干域
  • 二、环路分析
      • 2.1 环路举例
      • 2.2 spoke、hub架构
      • 2.3 解除DN位
      • 2.4 解除weiPN Route Tag
        • 2.4.1 OSPF Domin ID
        • 2.4.2 解除route-tag
        • 2.5 总结
  • 三、Sham-Link
    • 3.1 实验拓扑
    • 3.2 需求分析
    • 3.3 配置部署
    • 3.4 总结

参考阅读

在网络架构中,P、PE、CE、CR等分别代表什么意思?
MPLS 实验-VRF表分离(Huawei设备
企业级网络架构配置细则(贰)
网络100问之路由技术(贰)OSPF大礼包(1-10)
网络100问之路由技术(壹)

写在前面

此实验的全称叫做Hub、Spoke环境下MP-BGP、MPLS-weiPN的OSPF3、5、7类LSA的DN、weiPN Route-Tag防环

此实验的题目有点长,我来简单分析下;核心问题是OSPF的防环问题,我们知道OSPF的防环分为域内和域间,域内防环用的是SPF算法基于LSDB计算出来的树,而域间防环分为如下几种

1、星型拓扑、水平分割

2、DN位防环

3、weiPN Route Tag

要知道这些置位情况,首先看看3、5类LSA的报文字段情况

Type-3 summary LSA
在这里插入图片描述

Type-5 AS-External-LSA 格式
在这里插入图片描述

什么是DN位?

存在位置:在3、5、7类LSA的头部信息中存在一个8bit的Options字段,其字段中的最高位为DN位;
定义:为了防止路由环路,OSPF多实例进程使用一个bit位作为标志位,称为DN位;
作用:PE在生成Type3、Type5或Type7LSA发布给CE时,都将DN位置位(值为1),其他类型LSA的DN位不置位(值0)
防环:PE的OSPF多实例进程在进行计算时,忽略DN置位的LSA;这样就防止了PE又从CE学到发出的LSA而引起的环路

如下就是一个3类LSA的DN位被置位的情况,实验中会详解
在这里插入图片描述

什么是weiPN Route Tag ?

存在位置:在5、7类LSA的头部信息中存在一个32bit的外部路由标记(External Route Tag)字段,添加到外部路由上的标记;OSPF 本身并不使用这个字段,它可以用来对外部路由进行管理
定义:
1、weiPN路由标记(weiPN Route Tag),PE根据收到的BGP的私网路由产生的5/7类LSA中必须包含这个参数。
2、weiPN路由标记不在BGP的扩展团体属性中传递,只是本地概念,只在收到BGP路由并且产生OSPF LSA的PE上有意义
作用:当PE发现LSA的weiPN路由标记(LSA的Tag值)和自己的一样,就会忽略这条LSA,因此避免了环路

如下就是一个5类LSA的route-tag存在的情况,实验中会详解
在这里插入图片描述

重要的概念说完了,下面就开始在实验环境下详细分析吧

一、实验搭建

1.1 实验拓扑

在这里插入图片描述

1.2 分析

? OSPF进程1分为三个区域spoke端的a0区域、hub1端的a1区域、hub2端的a2区域;但是中间被MP-BGP MPLS-weiPN 连接了起来

1.2.1 为什么要被weiPN连接起来?

目的:

? OSPF 是一种应用广泛的 IGP 协议,很多情况下,weipen 用户内部网络运行 OSPF。如果能够在 PE-CE之间使用 OSPF,PE 通过 OSPF 向 CE 发布 weiPN 路由,则在 CE 上就不需要配置 PE-CE 之间的其它路由协议,从而简化 CE的管理和配置

PE-CE 间使用 OSPF 有如下优势:
1、通常在一个 Site 内部使用 OSPF 学习路由。如果 PE-CE 间也使用 OSPF 则可以减少 CE 设备所支持的协议种类,降低对 CE 设备的要求。
2、同样,Site 内部和 PE-CE 间都使用 OSPF 可以降低网络管理人员的工作复杂度,不必要求管理人员对多种协议熟练掌握。
3、对于在骨干网上使能 OSPF 而不使能 weiPN 的网络,将其转换为使能 BGP/MPLS weiPN 时,由于 PE-CE 间继续使能 OSPF,从而降低了转换的难度。

实现:

在这里插入图片描述

CE1 上的路由发布给 CE3 和 CE4 过程可以描述为:

  1. PE1 将 CE1 上的 OSPF 路由引入到 BGP 中,形成 BGP weiPNv4 路由。

  2. PE1 通过 MP-BGP 将这些 BGP weiPNv4 路由发布给 PE2。

  3. PE2 将 BGP weiPNv4 路由引入到 OSPF,再发布给 CE3 和 CE4。

同理,CE4 和 CE3 上的路由发布给 CE1 的过程类似。

中间的VPN区域可被称为超级骨干域Super Backbone

1.2.2 hub间的通信

? hub就是分支的意思,spoke就是总部的意思,即分支间的通信需要绕行总部,由于OSPF进程1的中间区域是weiPN,即传递的路由是携带BGP团体属性的BGP weiPNV4路由,所以存在VRF表,那么hub1、2上将接收spoke的VRF表,总部的VRF表各自接收分支的VRF路由即可,即存在主备结构,但是此实验重在分析防环的字段,并不着重说明分流互备的思想,若想要了解,查看参考阅读即可

1.2.3 OSPF-weiPN-instance

在中间粉色的区域,由于跑的是BGP协议,底层首先要通,使用了OSPF进程2;

在spoke、hub区上用的是OSPF的进程1,因为这是总部与分支,他们本来就是属于一个OSPF进程的;

在PE与CE间,PE上起OSPF的weiPN-instance进行宣告,即两个hub上的OSPF宣告有些不同

1.2.4 路由引入

四个PE上做路由的双向引入操作,即将BGP引入到OSPF,将OSPF引入到BGP;需要注意的是PE的OSPF是 weiPN-instance路由,引入到BGP上是要进入ipv4-family weiPNv4 weiPN-instacne内进行路由的引入操作

题外话:

? 看过我之前的实验配置Blog的朋友,可能会发现此篇Blog将大篇幅的重心放在分析思考上面;其实,对于这种网络的架构与思想,最重要的其实就是分析问题的思考逻辑,而不是配置,套用在研发方面,学到后面看重的都是思考而不是语法,希望关注我的朋友们一定要明确这个道理

1.3 配置部署

1.3.1 spoke端

感觉没啥说的,配IP、起OSPF即可,注意一点,spoke端的OSPF是在a0区域的

[R3-ospf-1]di th
#
ospf 1 router-id 10.1.3.3area 0.0.0.0network 10.0.0.0 0.255.255.255
#
return
R4、5、6相同

1.3.2 hub端

两个hub处的OSPF与spoke的OSPF进程相同,因为处于同一个OSPF域中

[R7-ospf-1]di th
#
ospf 1 router-id 10.1.7.7area 0.0.0.1network 10.0.0.0 0.255.255.255
#
return
R8做相同配置

1.3.3 超级骨干域

显而易见,就是中间跑MP-BGP、MPLS-weiPN的区域

根据逻辑分为如下几个配置细则

1、底层起OSPF,因为同一个AS的BGP建邻用的是环回

为什么用环回?

因为用的是TCP建邻,就算直连断了后,底层能通,邻居还是可以建立起来的

2、建立IBGP邻居

注意:IBGP水平分割导致的下一跳不优不能加表的问题

解决:路由反射器、EBGP联邦;本实验采用的是将R2、3作为路由反射器

3、建立vpnv4邻居

因为要传递CE的私网路由,所有要使用MP-BGP来传递BGP的VPNV4路由,注意一定要关闭vpn-target策略

4、铺设MPLS隧道,即防止数据层面的路由黑洞

因为运营商内部肯定存在纯P设备,即不运行BGP

5、spoke与hub的VRF表接收

hub接收spoke;spoke中存在分流与互备的结构,此实验没有展开这里,但是此思想时刻存在于网络架构中

6、路由引入

四个PE端进行双向的路由引入即可

部署命令:

1、底层的OSPF;R2、3、4相同,注意是进程2
[R1-ospf-2]di th
#
ospf 2 router-id 10.1.1.1area 0.0.0.0network 10.0.0.0 0.255.255.255
#
return2、ipv4-family unicast邻居、weiPNv4邻居、路由引入
R1、R4建邻命令相同,区别在于引入的weiPNn-instance不同;R3、R2类似
[R1-bgp]di th
#
bgp 1peer 10.1.2.2 as-number 1peer 10.1.2.2 connect-interface LoopBack0peer 10.1.3.3 as-number 1peer 10.1.3.3 connect-interface LoopBack0#ipv4-family unicastundo synchronizationpeer 10.1.2.2 enablepeer 10.1.2.2 next-hop-localpeer 10.1.3.3 enablepeer 10.1.3.3 next-hop-local#ipv4-family vpnv4undo policy vpn-targetpeer 10.1.2.2 enablepeer 10.1.2.2 advertise-communitypeer 10.1.3.3 enablepeer 10.1.3.3 advertise-community#ipv4-family vpn-instance aimport-route ospf 1
#
[R4-bgp]di th
#
bgp 1peer 10.1.2.2 as-number 1peer 10.1.2.2 connect-interface LoopBack0peer 10.1.3.3 as-number 1peer 10.1.3.3 connect-interface LoopBack0#ipv4-family unicastundo synchronizationpeer 10.1.2.2 enablepeer 10.1.2.2 next-hop-localpeer 10.1.3.3 enablepeer 10.1.3.3 next-hop-local#ipv4-family vpnv4undo policy vpn-targetpeer 10.1.2.2 enablepeer 10.1.2.2 advertise-communitypeer 10.1.3.3 enablepeer 10.1.3.3 advertise-community#ipv4-family vpn-instance cimport-route ospf 1
#
return[R2-bgp]di th
#
bgp 1peer 10.1.1.1 as-number 1peer 10.1.1.1 connect-interface LoopBack0peer 10.1.4.4 as-number 1peer 10.1.4.4 connect-interface LoopBack0#ipv4-family unicastundo synchronizationpeer 10.1.1.1 enablepeer 10.1.1.1 reflect-clientpeer 10.1.1.1 next-hop-localpeer 10.1.4.4 enablepeer 10.1.4.4 reflect-clientpeer 10.1.4.4 next-hop-local#ipv4-family vpnv4undo policy vpn-targetpeer 10.1.1.1 enablepeer 10.1.1.1 reflect-clientpeer 10.1.1.1 advertise-communitypeer 10.1.4.4 enablepeer 10.1.4.4 reflect-clientpeer 10.1.4.4 advertise-community#                                        ipv4-family vpn-instance bimport-route ospf 1
#
return
[R3-bgp]di th
#
bgp 1peer 10.1.1.1 as-number 1peer 10.1.1.1 connect-interface LoopBack0peer 10.1.4.4 as-number 1peer 10.1.4.4 connect-interface LoopBack0#ipv4-family unicastundo synchronizationpeer 10.1.1.1 enablepeer 10.1.1.1 reflect-clientpeer 10.1.1.1 next-hop-localpeer 10.1.4.4 enablepeer 10.1.4.4 reflect-clientpeer 10.1.4.4 next-hop-local#ipv4-family vpnv4undo policy vpn-targetpeer 10.1.1.1 enablepeer 10.1.1.1 reflect-clientpeer 10.1.1.1 advertise-communitypeer 10.1.4.4 enablepeer 10.1.4.4 reflect-clientpeer 10.1.4.4 advertise-community#                                        ipv4-family vpn-instance cimport-route ospf 1
#
return3、VRF表
hub1
[R1-vpn-instance-a]di th
#
ip vpn-instance aipv4-familyroute-distinguisher 1:1vpn-target 1:1 export-extcommunityvpn-target 3:3 4:4 import-extcommunity
#
returnhub2
[R2-vpn-instance-b]di th
#
ip vpn-instance bipv4-familyroute-distinguisher 2:2vpn-target 2:2 export-extcommunityvpn-target 3:3 4:4 import-extcommunity
#
returnspoke
[R3-vpn-instance-c]di th
#
ip vpn-instance cipv4-familyroute-distinguisher 3:3vpn-target 3:3 export-extcommunityvpn-target 1:1 import-extcommunity
#
return
[R4-vpn-instance-c]di th
#
ip vpn-instance cipv4-familyroute-distinguisher 4:4vpn-target 4:4 export-extcommunityvpn-target 2:2 import-extcommunity
#
return4、OSPF-VPN-instance  需要注意的是区域
[R1-ospf-1]di th
#
ospf 1 router-id 10.1.1.1 vpn-instance aimport-route bgparea 0.0.0.1network 10.0.0.0 0.255.255.255
#
return
[R2-vpn-instance-b]ospf 1
[R2-ospf-1]di th
#
ospf 1 router-id 10.1.2.2 vpn-instance bimport-route bgparea 0.0.0.2network 10.0.0.0 0.255.255.255
#
return
R3、R4配置相同
[R3-ospf-1]di th
#
ospf 1 router-id 10.1.3.3 vpn-instance cimport-route bgparea 0.0.0.0network 10.0.0.0 0.255.255.255
#
return5、铺设MPLS-VPN隧道
部署方法:
全局mpls lsr-id 10.1.1.1mplsmpls ldp
进入接口:mpls ldpmpls

二、环路分析

2.1 环路举例

例1:CE双归

? 如下图所示CE3有一条路由,通过PE3重发布给自己的IBGP邻居PE1、2中,对于PE2来说从OSPF学到的三类LSA优先值是150,而IBGP学到的是255,则这条3类LSA又会被重发布到BGP中,至此环路产生

在这里插入图片描述

例2:路由震荡+完全环路

在这里插入图片描述

? 如上图所示,PE1 上 OSPF 引入了目的地址为 10.1.1.1/32 的 BGP 路由,产生 5 类或 7 类 LSA 发布给 CE1,CE1 上学到一条目的地址为 10.1.1.1/32,下一跳为 PE1 的 OSPF 路由,并发布给 PE2,这样 PE2 上就学到一条目的地址为 10.1.1.1/32,下一跳为 CE1 的 OSPF 路由。上图绿色线
? 同理,CE1 上也会学到一条目的地址为 10.1.1.1/32,下一跳为 PE2 的 OSPF 路由,PE1 上学到一条
目的地址为 10.1.1.1/32,下一跳为 CE1 的 OSPF 路由。上图蓝色线
? 此时,CE1 上存在两条等价路由,分别指向 PE1 和 PE2,而 PE1 和 PE2 上到 10.1.1.1/32 的下一跳
也都指向 CE1,环路就产生了。
? 同时,由于 OSPF 路由的优先级高于 BGP 路由,PE1 和 PE2 上到 10.1.1.1/32 的 BGP 路由被 OSPF路由所替代,也就是说,PE1 和 PE2 的路由表中活跃的是到 10.1.1.1/32,下一跳为 CE1 的 OSPF路由。很明显,此时真正的10.1.1.1/32路由是从OSPF学到的,那么BGP 路由转为不活跃状态,之前 OSPF 引入这条 BGP 路由时所产生的 LSA 就会被删除,而这样又会导致 OSPF 路由被撤消。

? 路由表中没有了 OSPF 路由,BGP 路由又变为活跃状态,继续重复之前的循环,导致路由振荡。

2.2 spoke、hub架构

此实验中,我们需要两个hub间进行路由的学习与流量的互通,即spoke,hub是同一家企业,只是中间存在一个运营商级别的超级骨干域;但是两个hub间并没有对方的路由;那么在这种架构下,就需要解除DN位的防环设计

在这里插入图片描述在这里插入图片描述

2.3 解除DN位

在R5上查看lsdb的summary,可见DN位的存在;即R3引入这个3类LSA是将DN位置位

在这里插入图片描述

R5上抓包查看,可见,10.1.7.7这条路由进来的时候DN位被置位

在这里插入图片描述

R4上的OSPF的数据库表其实是可以看到这条DN被置位的路由的,但是并不会加表,至于为什么看到这里你肯定懂了

在这里插入图片描述在这里插入图片描述

下面开始解除DN位

R3上解除3类LSA的DN位

[R3-ospf-1]dn-bit-set disable summary

一旦解除,OSPF马上发送LSU,如下所示,此时的10.1.7.7是没有DN位的

在这里插入图片描述

验证R4的数据库表与路由表,可见数据库表中没有了DN位的限制,路由也加表了

在这里插入图片描述在这里插入图片描述

接下来在R3、R4上对五类做相同的配置,即解除DN位

 dn-bit-set disable summarydn-bit-set disable ase

验证测试:

hub间的通信
在这里插入图片描述

通了!!!

这是我在网络中最喜欢的一句话!!!

2.4 解除weiPN Route Tag

R7与R8的环回通了说明CE的私网路由相通,但是R7的链路能不能与R8的链路相通呢?答案是不能,别问,问就是不能,要不然说weiPN Route Tag干嘛?

首先查看hub端的CE–PE间的10.1.17.0在spoke端是几类的LSA,可以很明显的看到其为5类的LSA
在这里插入图片描述

这里引入一个新的概念OSPF Domin ID(域ID)

2.4.1 OSPF Domin ID

OSPF Domain ID
本地 OSPF 区域和 VPN 远端的 OSPF 区域间如果相互发布区域间路由(Inter-area routes),则认为
这些区域属于同一个 OSPF 域(OSPF Domain)。

  • 域标识符(Domain ID)用来标识和区分不同的域。
  • 每一个 OSPF 域都有一个或多个域标识符,其中有一个是主标识符,其它为从标识符。
  • 如果 OSPF 实例没有明确域标识符,则认为它的标识符为 NULL。PE 把 BGP 传来的远端路由向 CE 发布时,需要根据域标识符的情况选择向 CE 发布 Type3、Type5或 Type7 的 OSPF 路由。
  • 如果本地的域标识符与 BGP 路由信息中携带的远端域标识符相等或相互兼容,则发布 3 类路由;否则,发布 Type5 或 Type7 路由。

在这里插入图片描述

? 现在就可以回答为什么CE–PE间的链路是5类的,因为其处在PE下的 weiPN-instance下,所以重发布时是5类的,而hub端CE的私网路由经BGP引入进spoke端时,其OSPF的Domin是一直的,注意:默认是进程号;那么就是3类的LSA

修改其Domin ID,使hub与spoke端的Domin ID不一致,这样一来hub端CE的私网路由来到spoke就是5类的

没有修改时,CE的私网路由是3类的
在这里插入图片描述

将R1上的domain id修改,修改后就是5类的了

[R1-ospf-1]domain-id 2

在这里插入图片描述

至于为什么R1-R7间的链路10.1.17.0在spoke端是以5类出现,原因是这条直连处在weiPN-instance表中,对于OSPF来说就当作是外部的路由,所以引入到spoke上时,就是以5类的LSA出现的

为了后面的实验,我将刚才配置的domin id取消了

2.4.2 解除route-tag

前面说到了什么是route-tag,我们来回顾一下

存在位置:在5、7类LSA的头部信息中存在一个32bit的外部路由标记(External Route Tag)字段,添加到外部路由上的标记;OSPF 本身并不使用这个字段,它可以用来对外部路由进行管理
定义:
1、 weiPN路由标记( weiPN Route Tag),PE根据收到的BGP的私网路由产生的5/7类LSA中必须包含这个参数。
2、 weiPN路由标记不在BGP的扩展团体属性中传递,只是本地概念,只在收到BGP路由并且产生OSPF LSA的PE上有意义
作用:当PE发现LSA的VPN路由标记(LSA的Tag值)和自己的一样,就会忽略这条LSA,因此避免了环路

未解除前

在这里插入图片描述
在这里插入图片描述

解除后

[R3-ospf-1]route-tag disable 

在这里插入图片描述
在这里插入图片描述

测试,可见与预期相符

在这里插入图片描述

2.5 总结

总结:

PE是不加带DN位标记的路由进表;而tag位是引入的时候不能引入

注意:
DN位的路由,是进入了数据库中,但是不可能进表

为什么hub进入spoke的路由是3类的?

其实啊,中间的区域看似是一个区域,其实就是一条链路;即看似引入,实则链路

三、Sham-Link

3.1 实验拓扑

在这里插入图片描述

3.2 需求分析

hub与spoke都存在区域0,那么此时中间的VPN区域就叫做超级骨干域

? 如上图拓扑,在hub与spoke间拉了一条专线,但是我的需求是,weiPN作为主线路,专线作为备线路,此时有些人就不乐意了,花大价钱拉一条专线,却沦为备线路?

注意:我拉专线的时候,拉的是带宽低的线路,对比而言,其实 weiPN的价格和速率还是较快的

但是问题来了,如何调整选路,使weiPN链路作为主线路?

分析:

? 以现在这种情况,无论怎样调整cost,肯定优选的是专线,因为1类优于3类,即O>OIA;那么我有两种方案来解决此问题

1、将VPN做成一类的,这样主备线路就在同一级别上进行选路的调整(都是1类)

2、在专线上继续划区域,这样专线就是三类的了,但是,由于CE端接入的路由协议于区域十分复杂多变,这样做在实际环境中几乎不可能实现

综上所述,采用第一种方案

问题又又又又来了!!!

如何实现?

sham-link!!!

部署前的验证,即增大链路的cost还是优先专线

在这里插入图片描述

3.3 配置部署

分为如下几步

1、做sham-link的两个PE创建回环,放在vpn-instance里并且必须是32位

[R1]int loo 100
[R1-LoopBack100]ip binding vpn-instance a
Info: All IPv4 related configurations on this interface are removed!
Info: All IPv6 related configurations on this interface are removed!
[R1-LoopBack100]
[R1-LoopBack100]ip add 100.1.1.1 32[R3]int loo 100
[R3-LoopBack100]ip binding vpn-instance c
Info: All IPv4 related configurations on this interface are removed!
Info: All IPv6 related configurations on this interface are removed!
[R3-LoopBack100]ip add 100.1.1.2 32

2、BGP的VPN-instance中宣告

[R1-LoopBack100]bgp 1
[R1-bgp]ipv4-family vpn-instance a
[R1-bgp-a]network 100.1.1.1 32[R3-LoopBack100]bgp 1
[R3-bgp]ipv4-family vpn-instance c
[R3-bgp-c]network 100.1.1.2 32

测试这两个环回的连通性

在这里插入图片描述

3、在OSPF-weiPN-instance的区域0配置sham-link

[R1-ospf-1-area-0.0.0.0]sham-link 100.1.1.1 100.1.1.2
[R3-ospf-1-area-0.0.0.0]sham-link 100.1.1.2 100.1.1.1

查看sham-link邻居

在这里插入图片描述

验证测试:可见由于专线的cost大,所以会走 weiPN

在这里插入图片描述

3.4 总结

配置部署总结:

1、PE上各配置一个VRF的回环接口(接口VRF于OSPF所处的VRF相同)

2、PE在BGP的VRF簇中宣告回环接口,使之能够通信

3、PE中OSPF下的区域0内使用两个回环接口建立sham-link

sham-link的原理:

通过两个可以在PE的VRF中通信的回环地址,让两个PE建立OSPF邻居,从而不在依赖BGP的 weiPNV4传递两个PE之间的OSPF路由,sham-link的建立是两个站点之间的OSPF拓扑

CE1(OSPF)---->PE1(OSPF)---->PE1(BGP)---->PE2(BGP)---->PE2(OSPF)---->CE2(OSPF)

变为

CE1(OSPF)---->PE1(OSPF)---->PE2(OSPF)---->CE2(OSPF)sham-link