OSPF基础——区域间ABR和虚链路

似梦清欢
• 阅读 119

OSPF的为什么要划分区域?

  • 区域内LSA的数量和设备数量成正比。
  • 区域内有1类LSA和2类LSA,且都包含拓扑和路由信息。
  • 路由信息改变都会影响区域内所有设备。
  • 拓扑信息改变区域内所有设备都需要重新计算SPF树。

::: warning OSPF的区域边界在路由器的接口上。 :::


ospf的区域类型:

  • 骨干区域: area id = 0 ,称为骨干区域。又称传输区域,是所有区域连接的核心,用于区域与区域之间数据信息的传递交互。

  • 非骨干区域: area id =! 0 ,称为非骨干区域。又称末节区域,是区域规划的边界,用于业务接入。

  • 特殊区域:非骨干区域改变得来。


OSPF的设备类型:

  • 区域内:IR设备,内部路由器,所有接口都属于一个区域。
  • 区域间:ABR设备,区域边界路由器。
  • 区域外:ASBR设备。

::: tip ABR基本概念:连接了多个区域,且包含骨干区域。 ABR的作用:在区域间泛洪区域内相应的LSA。 :::

ABR的类型:

  • 真ABR:连接了多个区域,并且在区域0中存在活跃的邻居关系。
  • 假ABR:设备指定自己为ABR,但是不执行ABR的操作。
  • 半真半假ABR:连接了多个区域,但只在区域0中存在接口,不存在邻居。具备了真正ABR的操作,但是不具备真正ABR的防环(违反防环规则)。
  • 特殊ABR:被虚链路包含的设备,称为虚链路ABR。

ospf区域的防环规则:

  1. 非骨干区域必须和骨干区域相连。骨干区域有且只有一个(否则会出现环路)。
  2. 区域间的3类LSA,一定是由ABR产生并泛洪的。
  3. ABR可以接收但不能计算非骨干区域的3类LSA,也不会将这个3类LSA发送到其他区域。(如果骨干区域做了分割,两个区域就不能通信。)
    ::: danger 动态路由协议邻居之间的数据信息传递是单向的,不能传回来,否则直接成环。 如果需要发回去,需要再接一根线做双向的邻居。 :::

3类LSA

network summary LSA:网络汇总LSA(将区域内的相互共享),由ABR产生,并在其他区域内泛洪。

ABR针对区域内如下信息产生3类LSA:

  1. 1类LSA是否存在路由信息:
     - **如果存在,则可以由ABR转换为3类。**
     - **如果不存在,则ABR不会转换为3类。**
  2. 2类LSA一定会由ABR转换为3类(2类LSA描述一个广播型网络,一定存在路由信息)。

ABR针对区域间如下信息产生3类LSA:

  1. 如果是骨干区域的3类LSA,会由ABR转换为新的3类LSA。
  2. 如果是非骨干区域的3类LSA,防环机制存在,ABR不转换。

ABR:

OSPF基础——区域间ABR和虚链路 区域内设备只存在本区域的LSDB,无法通过SPF树计算到其他区域的设备。

因为存在ABR设备,所以区域内的设备可以通过ABR访问到其他区域OSPF基础——区域间ABR和虚链路

区域内的设备如何得知ABR? OSPF基础——区域间ABR和虚链路 成为ABR的设备在通告1类LSA的时候,会将flag标志位的B bit置位,表示自己是ABR。 如下: 更新一条路由抓LSU报文查看flag字段:

[AR2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0 

OSPF基础——区域间ABR和虚链路 查看AR2的1类LSA描述也可以看到: OSPF基础——区域间ABR和虚链路 上图中表示在区域0中,AR2是ABR,向下翻可以看到在区域1中,AR2也是ABR。

拓扑中AR1会学到ABR设备转发来的两条3类LSA,分别是AR2和AR3之间的网段和AR3的环回口,如下: OSPF基础——区域间ABR和虚链路 ::: tip 3类LSA描述了其它区域内的路由信息。 一条3类LSA仅描述一条路由信息。 :::

<AR1>dis ospf lsdb summary 3.3.3.3   查看3类LSA的明细信息

OSPF基础——区域间ABR和虚链路

Type      : Sum-Net
Ls id     : 3.3.3.3     其他区域内的路由网段
Adv rtr   : 10.2.2.2     ABR的RID
Ls age    : 1641 
Len       : 28 
Options   :  E  
seq#      : 80000001 
chksum    : 0x66d9
Net mask  : 255.255.255.255     路由网段对应的掩码
Tos 0  metric: 1     ABR到达目的网络的开销
Priority  : Medium

::: tip
上述明细中的开销值1是ABR到AR2的开销,这个3类LSA是由ABR通告给AR1的,描述内容是ABR到AR2的。AR1不能直接使用该开销值,需要先计算AR1到ABR的开销值,然后再叠加ABR到AR2的开销,就是AR1到达目的网段AR3的总开销值。 :::

区域内泛洪

设备成为了ABR,就会将区域之间的信息转换为3类,直接进行泛洪操作。 OSPF基础——区域间ABR和虚链路 OSPF基础——区域间ABR和虚链路 如上AR3到AR4的开销是2,即两端的LSA不需要经过区域0可以直接进行泛洪,路径是AR3-AR2、AR2-AR4。 ::: tip 区域0的作用就是使得AR2成为ABR执行区域间泛洪。 :::

3类LSA的开销计算: 3类LSA内会携带ABR到其他区域内目的网段的开销,本区域计算3类LSA时,需要先计算到达ABR的开销,将两个开销进行叠加,得到计算3类LSA路由后的开销。


3类LSA的优选

OSPF基础——区域间ABR和虚链路 上图中,AR4的环回口的路由经过AR2变为3类LSA通告给AR1,AR1通过1类LSA通告给AR3的接口G0/0/0,AR3处于区域1的接口G0/0/1收到3类LSA后,由于该接口已经收到了区域1AR4发来的1类LSA,,就不会再接收区域0的接口G0/0/0发来的3类LSA了。 AR2和AR3都是ABR,都会转发区域1传来的路由信息: OSPF基础——区域间ABR和虚链路 如上,ABR互联区域的AR1内,共有6个3类LSA。(先计算区域内的路由条目数量,再乘以ABR的数量,就是ABR互联区域3类LSA的条目数量。


::: tip LSA的优选规则: 1类LSA、2类LSA优于3类LSA。 骨干区域的3类LSA优于非骨干区域的3类LSA。 :::

3类LSA的更新、撤销:

更新:ABR通告的3类LSA( ls age = 0,ls seq 从1开始,每次更新加1)。 撤销:ABR撤销的3类LSA( ls age = 3600,ls seq 与更新3类LSA时一致,也会+1)。

邻居关系建立完成后,在AR4创建环回口,使得OSPF更新: OSPF基础——区域间ABR和虚链路 上图中两个更新的LSU报文原因是AR2和AR3都是ABR各转发通告一次。 undo环回口的OSPF: OSPF基础——区域间ABR和虚链路 LS Age变为3600老化时间。序列号保持不变。 ::: warning 撤销时,AR4执行撤销动作(即undo的动作),AR2和AR3只是将产生的3类LSA执行撤销。 一条3类LSA中只能携带一条路由信息,可以使用时间值做撤销。 :::



虚链路

背景: 由于企业机房进行升级改造、搬迁、融合,导致OSPF需要重新规划网络,操作过程中要求业务不能中断。

融合后的网络可能存在如下问题:

  • 两个骨干区域。
  • 非骨干区域没有和骨干区域连接。
  • 不存在骨干区域。

总的来说就是骨干区域存在问题,ABR存在问题。 OSPF可以使用虚连接(虚链路)解决。

OSPF基础——区域间ABR和虚链路 如上图,区域2需要被连接到区域0,区域2与区域1相连,所以需要在区域1建立虚链路。将区域1当作区域0,在AR2和AR3上操作:

[AR2-ospf-1-area-0.0.0.1]vlink-peer 10.3.3.3   
[AR3-ospf-1-area-0.0.0.1]vlink-peer 10.2.2.2 

::: warning [AR2-ospf-1-area-0.0.0.1]vlink-peer
IP_ADDR<X.X.X.X> Neighbor router ID 在配置虚链路时,指定是对端RID,RID不是地址OSPF基础——区域间ABR和虚链路 虚链路只能通过SPF树计算到对端的RID(SPF树只存在在区域内),即虚链路只能在同区域内建立。 如果区域2后面还有区域3,就只能通过AR2-AR3,AR3-AR4建立两条虚链路,将AR3、AR4都变为ABR,才能完成区域0和区域3的连接。AR2可以指定AR4的RID,但是找不到AR4,原因是SPF树不能从AR2计算到AR4,所以不能从AR2-AR4直接建立虚链路。 ::: 再查询AR1的路由表,就可以查到AR4的环回口: OSPF基础——区域间ABR和虚链路

虚链路实际上就是构建了虚拟的区域0,可以当作真正的区域0使用,是区域0的扩展。虚链路就是区域0的一个接口。 虚连接包含的设备是逻辑上的ABR设备(第四类ABR、特殊ABR)。

::: tip 建立虚链路的设备有什么特点?

  • 一定存在一台真正的ABR设备。(如上图中的AR2)
  • 都在非骨干区域。
  • 建立虚链路的设备一定是同区域的设备。 :::

OSPF基础——区域间ABR和虚链路 如上,AR3做了虚链路,就有了区域0的接口,就会存在区域0的数据库,并将自己宣告为ABR设备。

虚链路建立完成后的设备特点:

<AR3>dis ospf lsdb  router 10.3.3.3   如下查看在区域0的flag(options)置位
Area: 0.0.0.0            会存在区域0的数据库
Link State Database 
Type      : Router       在区域0通告1类LSA
Ls id     : 10.3.3.3     描述AR3的状态,即为AR3的RID
Adv rtr   : 10.3.3.3     AR3通告的LSA,即为AR3的RID 
Ls age    : 845 
Len       : 36 
Options   :  ABR  E      通告自身为ABR设备
seq#      : 80000001 
chksum    : 0xbc38
Link count: 1            增加新的链路类型
* Link ID: 10.2.2.2      虚链路邻居的RID
Data   : 10.1.23.3       去往虚链路邻居的接口地址
Link Type: Virtual      
Metric : 1               去往虚链路邻居实际物理链路的开销

::: warning OSPF基础——区域间ABR和虚链路 上述开销是实际的接口链路开销,如果中间有多台设备,开销就是实际链路开销的累加值。 :::


虚链路建立后邻居关系

OSPF基础——区域间ABR和虚链路

虚链路是通过实际的物理链路来建立邻居关系的。

虚链路邻居之间交互的协议报文,目的地址是单播的: OSPF基础——区域间ABR和虚链路 如上从AR2的G0/0/0接口抓包,可以看到两个单播地址(224.0.0.5是组播地址)。 ::: warning 如果AR2和AR3之间还有其他的设备,虚链路邻居通信时的单播报文,中间设备只做转发。 ::: 单播报文目标地址计算: 区域内的LSDB是同步的,用SPF计算的步骤。 第一步:以自己为根计算去往邻居的出接口,出接口的地址为SIP。 第二步:以邻居为根计算去往本端的出接口,出接口的地址为DIP。 OSPF基础——区域间ABR和虚链路 重启AR3的OSPF进程,抓AR3发出的目标地址是组播的1类LSA: OSPF基础——区域间ABR和虚链路 上图抓包显示是发送给区域1内邻居关系的,声明自己通过虚链路成为ABR设备。

<AR3>dis ospf lsdb  router 10.3.3.3   如下查看在区域1的flag(options)置位
Area: 0.0.0.1                 在区域1通告1类LSA
Link State Database 
Type      : Router
Ls id     : 10.3.3.3          描述AR3的状态,即为AR3的RID
Adv rtr   : 10.3.3.3           AR3通告的LSA,即为AR3的RID
Ls age    : 130 
Len       : 36 
Options   :  ABR  VIRTUAL  E   通告自身是因为虚链路成为的ABR
seq#      : 80000008 
chksum    : 0x4f25
Link count: 1
* Link ID: 10.1.23.2    
Data   : 10.1.23.3    
Link Type: TransNet     
Metric : 100

总结: 虚链路通过单播报文建立连接关系。 虚链路建立后的设备AR3在区域0和虚链路穿越的区域1的1类LSA有不同的类型表示

  • 区域0:通告自己是ABR并添加新的链路状态。
  • 虚链路穿越的非骨干区:通告自身为ABR,options(flag)字段V bit置位。

虚链路的使用场景2:

  • 骨干区域的备份 OSPF基础——区域间ABR和虚链路
  • 如上在3和4之间的非骨干区域建立虚链路(骨干区域),1和2断开后,骨干区域仍然可以连成一片。*
  • 次优路径的解决 OSPF基础——区域间ABR和虚链路 上图中AR8访问AR5的环回口,分析可得:AR5-AR7是1类LSA,AR5-AR6-AR7是1类LSA转3类LSA,1类LSA优于3类LSA,虽然AR5-AR7之间链路开销为100,路由器仍会选择此路径。 实际查看: OSPF基础——区域间ABR和虚链路 OSPF基础——区域间ABR和虚链路 从上图判断,访问路径应为AR8-AR7-AR6-AR5(cost累加为3)。 OSPF基础——区域间ABR和虚链路 上图可知访问路径实际为AR8-AR7-AR5。

::: tip 每一台设备都会独立计算最优路径,如上图中AR8的路由表中,根据开销计算可知路径AR8-AR7-AR6-AR5,但AR7的判断是直接转发给AR5: OSPF基础——区域间ABR和虚链路 ::: 如果在AR6和AR7之间做虚链路,AR6-AR7之间传递1类LSA,同类LSA优选开销更小的,就可以解决次优路径的问题:

[AR6-ospf-1-area-0.0.0.1]vlink-peer 10.7.7.7
[AR7-ospf-1-area-0.0.0.1]vlink-peer 10.6.6.6

建立虚链路后出现1类LSA: OSPF基础——区域间ABR和虚链路 此时AR7的路由表选择了开销值更小的路径,转发给了AR6: OSPF基础——区域间ABR和虚链路


虚链路场景3: 没有合理配置虚链路会造成路由的环路: OSPF基础——区域间ABR和虚链路 上图中AR14访问AR11的环回口,路径如下。 AR14-AR11: OSPF基础——区域间ABR和虚链路 AR13通过到AR10的虚链路学习到AR11的路由,但需要走实际链路到AR12: OSPF基础——区域间ABR和虚链路 AR12收到的1类LSA开销默认到AR11: OSPF基础——区域间ABR和虚链路 AR11-AR14: AR13传递了包含AR14的3类LSA,根据虚链路,AR13是在AR10后的,所以拓扑计算需要先到AR10: OSPF基础——区域间ABR和虚链路 根据虚链路AR10转发到AR13,走实际链路到AR12: OSPF基础——区域间ABR和虚链路 AR13在区域1内泛洪AR14的3类LSA (包括虚链路) ,AR12是ABR,不计算该3类LSA,AR12转发到AR14,走骨干区域AR11,发生环路: OSPF基础——区域间ABR和虚链路 路径如下: OSPF基础——区域间ABR和虚链路 ::: tip 上图中AR11和AR14的环回口通信,AR14环回口的描述由AR13转为3类LSA在区域1泛洪传到AR12,通过虚链路将3类LSA传到AR10,AR10是通过单播报文学到AR14的环回口,然后将3类LSA在区域0中泛洪,传到AR11,AR11再通过1类LSA发给AR12。 AR11到AR14时,AR11中的路由是通过AR10学习的,路由先走到AR10,AR10访问AR14时需要走虚链路,实际路径是先到AR12。AR12从AR11、AR13都学到了AR14的路由,优选骨干区域,就形成了环路。 ::: ::: warning 上述AR12在骨干区域0中收到描述AR14路由的3类LSA路径是:AR10-AR11-AR12。不能从AR10直接将3类LSA送到AR12(AR10和AR12互联的0/0/1口属于区域1。) OSPF以接口划分区域,一个接口只能被宣告到一个区域。 ::: OSPF基础——区域间ABR和虚链路 改进:

  1. 将AR10-AR13的虚链路改到AR12-AR13。
  2. 在AR10-AR13存在虚链路的基础上,再增加一条AR10-AR12的虚链路(或再增加一条AR12-AR13的虚链路)。 ::: warning ABR通告3类LSA时,会把3类LSA的adv rtr改成自身的RID,后续转发时adv rtr不会改变。 如下是AR11收到AR10转发来的AR13通告的AR14路由,adv rtr仍为AR13: OSPF基础——区域间ABR和虚链路 上述改进2,AR13通告3类LSA时,adv rtr为AR13的RID,AR10转发时adv rtr不变,即AR12从AR10收到的是AR13通告的信息,虚链路是AR12-AR10-AR13,走实际链路就是AR12-AR13。 即路由路径是AR14-AR13-AR10-AR12-AR13-AR14。不会出现环路。 :::

虚链路打破了原有ospf的防环机制,所以虚链路需要新的机制来防止环路。 下图是AR15和AR18的环回口通信环路: OSPF基础——区域间ABR和虚链路 防环规则:

  1. 虚链路建立后,ABR不会向虚链路穿越的区域泛洪骨干区域的LSA。 (如上图,AR18学到AR15的骨干区域3类LSA后,不会再向区域1泛洪)
  2. 虚链路建立后的ABR,向其他非骨干区域泛洪骨干区域的LSA时,需要在虚链路穿越的区域学习到对应的3类LSA(虚链路是逻辑上的链路,需要对应实际链路。)

满足上述两条规则,LSA才可以正常泛洪。


骨干区域的3类LSA数量: OSPF基础——区域间ABR和虚链路 以上图为例,AR2和AR3存在虚链路: 区域0内的3类LSA数量=区域1内网段数量×区域1内ABR数量+区域2内网段数量×区域2内ABR设备=1×2+1×1=3 区域1内的3类LSA数量=区域0内网段数量×区域0内ABR数量+区域2内网段数量×区域2内ABR设备=1×1+1×1=2(虚链路建立后出现的ABR不会向虚链路穿越的区域泛洪骨干区域的3类LSA。)

点赞
收藏
评论区
推荐文章

暂无数据

似梦清欢
似梦清欢
Lv1
学海无涯
文章
17
粉丝
17
获赞
1