华为数通笔记-ospf路由计算

LSA的基本概念

LS age 16比特 LSA产生后所经过的时间,单位是秒。无论LSA是在链路上传输,还是保存在LSDB中,其值都会在不停的增长。

Options 8比特

LS type 8比特 LSA的类型:

• Type1:Router-LSA。

• Type2:Network-LSA。

• Type3:Network-summary-LSA。

• Type4:ASBR-summary-LSA。

• Type5:AS-External-LSA。

• Type7:NSSA-LSA。

Link State ID 32比特 与LS Type一起描述路由域中唯一一个LSA

Advertising Router 32比特 产生此LSA的路由器的Router ID。

LS sequence number 32比特 LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。

LS checksum 16比特 除了LS age外其它各域的校验和。

length 16比特 LSA的总长度,包括LSA Header,以字节为单位。

Option字段补充:

 DN:用来避免在MPLS VPN中出现环路。PECE发送3类、5类和7LSA时需要设置DN,其他PE路由器从CE接收到该LSA时,不能够在它的OSPF路由计算中使用该LSA。

O:该字段指出始发路由器支持Opaque LSA(类型9、类型10和类型11)。

DC位:当始发路由器支持按需链路上的OSPF的能力时,该位将被设置。

EA:当始发路由器具有接收和转发External-Attributes-LSA(type8 LSA)的能力时,该位被置位。

N位:只用在Hello数据包中。N=1表明路由器支持7LSA。N=0表明该路由器将不接收和发送NSSA LSA。

P位:只用在NSSA LSA。该位将告诉NSSA区域的ABR路由器将7LSA转换为5LSA

如何比较LSA的新旧?
 

1.首先比较序列号,如果序列号越大,则越新。
2.如果序列号相同,则比较校验和,校验和越大越新。
3.如果校验和相同,则比较存活时间(LS Age),如果这些LSA中有一条存活时间为3600s,则认为该LSA是最新的,用于删除一条LSA。
4.如果所有LSA age不等于3600S,则判断LSA age的差值,如果大于900S(15分钟)则认为LSA age小的最新,如果小于900S则认为相同;
5.如果上述条件都一样的话,则认为这两条LSA是相同的,将本地的LSA保留。
 

Router LSA

  • Link State ID:是指始发路由器的路由器ID。(这里的Link State ID是指LSA头部的该 字段)
  • Flags
    • V:设置为1时,说明始发路由器是一条或者多条具有完全邻接关系的虚链路的一 个端点。
    • E:当始发路由器是一个ASBR路由器时,置为1
    • B:当始发路由器是一个ABR路由器时,置为1。
  • Number of links:表明一个LSA所描述的路由器链路数量。
  • Link Type
    • 值为1表示为点到点网络,常见的PPP链路需要使用点到点网络描述。
    • 值为2表示连接一个transit网络,有至少两台路由器的广播型网段或NBMA网段就 是一种Transit网段。
    • 值为3表示连接stubnet网络,一般该网络上不存在邻居关系,如只有一个出口的 以太网或回环接口。(接口的网络地址和掩码)
    • 值为4表示虚链路
  • Link ID
    • Link Type为1时该值表示邻居路由器的路由器ID
    • Link Type为2时该值表示DR路由器的接口的IP地址
    • Link Type为3时该值表示IP网络或子网地址
    • Link Type为4时该值表示虚链接邻居路由器的路由器ID
  • Link Data
    • Link Type为1时该值表示和网络相连的始发路由器接口IP地址
    • Link Type为2时该值表示和网络相连的始发路由器接口IP地址
    • Link Type为3时该值表示网络的子网掩码
    • Link Type为4时该值表示始发路由器的虚链路接口的IP地址
  • ToS:暂不支持。
  • Metric:是指一条链路或接口的代价。

Router LSA描述TransNet

唯一标识一条lsa:Ls Type、Link State ID、Advertising Router 

Network LSA完整描述网段信息

报文示例:

R3用于描述G0/0/0口用的是router lsa中的stubnet

Link ID: 192.168.10.0

     Data   : 255.255.255.0

     Link Type: StubNet     

     Metric : 1

     Priority : Low

环回口也用stubnet描述, Priority : media

  • Router-LSA的重要字段含义总结:

Links Type

网络类型

Link ID

Link Data

1

点到点网络

邻居路由器的Router ID

和网络相连的始发路由器接口的IP地址

2

transit网络

DR路由器的接口的IP地址

和网络相连的始发路由器接口的IP地址

3

stubnet网络

IP网络或子网地址

网络的子网掩码

4

虚链接

虚链接邻居路由器的Router ID

始发路由器的虚链路接口的IP地址

 

Network LSA

由DR产生

  • Link State ID:是指DR路由器的接口地址。(这里的Link State ID是指LSA头部的该字段)
  • Network Mask:指定这个网络上使用的地址或者子网的掩码。
  • Attached router:列出该多路访问网络上与DR形成完全邻接关系且包括DR本身的所有路由器的路由器ID

Network LSA描述MA网络

报文示例:

Summary LSA

  • Type3和Type4的LSA有相同的格式,它们都是由ABR产生。
  • Link State ID
    • 对于3类LSA来说,表示所通告的网络或子网的IP地址。
    • 对于4类LSA来说表示所通告的ASBR路由器的路由器ID

  • Network Mask
    • 对于3类LSA来说,表示所通告的网络的子网掩码
    • 对于4类LSA来说,该字段没有实际意义一般置为0.0.0.0
  • Metric始发路由器到目的地址的路由的代价。
  • TOS:服务类型
  • TOS metric:和指定TOS值相关联的度量
  • 通告缺省路由时,Link State ID和Network Mask都设置为0.0.0.0。

报文示例:

AS-external-LSAType5

  • Link State ID:表示所通告的网络或子网的IP地址。

        通告给除stub,nssa区域的所有区域

  • Network Mask指所通告的网络的子网掩码。
  • E:用来指定这条路由使用的外部度量的类型。
    • 如果该E bit设置为1,那么度量类型就是E2;
    • 如果该E bit设置为0,那么度量类型就是E1
  • Metric:指路由的代价。由ASBR设定。
  • Forwarding Address:是指到达所通告的目的地的数据包应该被转发到的地址。如果转发地址是0.0.0.0,那么数据包将被转发到始发ASBR上。

 FA是Forwarding Address的简写。FA是ASBR通告的TYPE 5 LSA中的字段,它的作用是告诉OSPF域内的路由器如何能够更快捷地到达LSA 5所通告路由的下一跳地址。以免OSPF内部路由器在广播网络上以ASBR为下一跳,再由ASBR自己转发到正确的下一跳,而产生额外的路由。

5类LSA FA字段可以为全0或者非0两种选择,有以下几个规则:

1、当与引入路由的下一跳关联(互连)的接口没有启动OSPF时,FA设置为0;

2、当下列所有条件均满足的情况下,TYPE 5 LSA中FA字段设置为非0:

1、在ASBR上,与引入外部路由下一跳关联的接口启动了OSPF,即位于Network

命令范围内。

2、在ASBR上,与引入外部路由下一跳关联的接口不能配置被动接口;

//前两个规则是确保LSA能够被通告。

3、在ASBR上,与引入外部路由下一跳关联的接口配置的OSPF网络类型不能是P2P或P2MP。(确保网络类型是Broadcast或NBMA的共享网络。)

在满足以上条件后,5类LSA的转发地址为连接外部路由下一跳的接口IP

FA是如何影响OSPF的路由选择的?

1、计算外部路由时,首先检查通告TYPE 5 LSA的ASBR是否存在,否则忽略该LSA;OSPF路由器收到外部路由时候,先看这条五类LSA是否携带FA,如果FA地址位非0则会根据FA地址进行迭代查询,如果可达则该五类LSA携带的路由可以加表,如果不可达则不加路由表。

2、检查TYPE 5 LSA的FA地址是否为0。如为0,说明路由必须经过ASBR转发,那么优选到ASBR metric最短的路径。当有多个最短路径时,优选从较大area ID学习到的。

3、如果FA非0,那么优选到FA地址 metric最短的路径。

  • External Route Tag:标记外部路由。

示例:

 

 NSSA LSAType7

NSSA(no so stubby area)是一类特殊区域,可以在其中部署ASBR,引入外部路由同时不会学习来自OSPF网络其他区域的外部路由

NSSA区域连接着骨干区域,其区域边界路由器ABR,同时也是ASBR.

NSSA区域边界路由器ABR的特性:

传递区域间路由;ABR执行7/5翻译NSSA区域通告LSA7的默认路由如果区域是Totally NSSAABR也可以向NSSA产生LSA3默认路由

LSA7的作用:

用于通告外部引入的路由信息;由ASBR产生,扩散范围仅限于NSSA区域

 NSSA的区域边界路由器ABR,执行7/5操作;LSA4/LSA5不会流入NSSA区域

LSA7的FA一定要是非0,用于区域间选路

 

FA地址使用场景

LSA7中的FA地址:

1.与LSA5的FA内容上的区别

LSA5的FA可以是0和非0两种情况

FA=0的七类LSA的外部路由不会被通告到骨干区域

FA!=0,并且满足五类中FA的四条规则,FA是ASBR上外部路由的下一跳地址

FA!=0,不满足某条规则,FAASBR上某个接口的IP地址优选环回接口地址,如果没有环回接口,则使用物理接口地址

LSA5LSA7对比:

两者具有相同的格式,包括外部路由及掩码、Forwarding-Address Tag、Cost-Type及Cost

不同:

LSA7仅在NSSA区域里泛洪;

LSA7的FA为非0;如果为0,则不会被ABR翻译成LSA5

外部路由在NSSA区域里以LSA7传递,在其他区域以LSA5传递,ABR负责做7/5翻译

LSA7选项位P-bit用于通告翻译路由器该条Type7 LSA是否需要翻译

缺省情况下NSSA区域内Router ID最大的区域边界路由器作为转换路由

只有P-bit置位并且FA!=0的LSA7 才能被转换成LSA5

ABR上引入外部路由,产生的Type7LSA不会P-bit置位,所以不会通告到区域0

 

SPF算法举例

结果验证

OSPF区域间路由的计算过程:

主要通过3LSA进行计算,三类LSA内容如下:

Network-Summary-LSA(三类LSA)中主要包括以下内容:

Ls id:目的网段地址。

Adv rtr:ABR的Router ID。

Net mask:目的网段的网络掩码。

Metric:ABR到达目的网段的开销值。

实验,如下图所示:

R2在区域1中,R1作为ABR。当R2收到了三类LSA,查具体的内容:

当R2得到了R1发送的3类LSA,可以看一下里面有什么:有与R1相连的192.168.3.0网段和来自区域2的192.168.4.0网段。

由于三类LSA本来就是路由信息,可以作为叶子信息直接挂在ABR(R1)上,具体的cost值等于ABR上三类LSA携带的cost值加上R1R2使用一类和二类LSA计算的COST值。

同时,3LSA路由的最初下一跳为ABRR1),通过区域内路由计算如何到达ABR

所以在OSPF在区域中是链路状态计算,区域间其实更像距离矢量的路由协议。因此,区域间的路由可能会出现环路,所以三类LSA的计算是需要遵循一点的规则的,也被称为水平分割原理(四类LSA同样遵守)。

OSPF防环

处于区域边界路由器可能有多种情形:

处于多个非骨干区域之间,比如处于Area 1和Area 2之间,比如下图中的R5,并不是ABR。

处于骨干区域和非骨干区域之间,但在骨干区域里没有邻居,比如ABR在Area0有接口,但没有邻居,如图中的AR3,并不是真正的ABR。

处于骨干区域和非骨干区域之间,且在骨干区域里有邻居,这才是真正意义上的ABR,比如图中的AR4

OSPF区域外路由的计算过程与FA值实验 

OSPF区域路由的计算主要是通过5类和4类LSA完成的。其中5LSA提供了目的网络地址,而4LSA则提供了下一跳地址。5类LSA可以在整个区域中泛洪,不遵循ABR的泛洪规则(水平分割),同时不需要进入Vlink,具体如何保证没有环路,则是通过1类、2类、3类和4类LSA完成。如果设备与ASBR不在同一区域,依靠4LSA定位ASBR位置;如果有FA地址,在一些情况下通过三类LSA找到ASBR地址(在NSSA区域路由计算中说明);如果与设备与ASBR在同一个区域,则通过1类、2LSA而非4LSA辅助找到ASBR的具体位置。

区域外路由计算实验:

实验思路:

在R5上将静态路由引入到ospf中。

具体步骤:

在R1上查看5类LSA:

从5类LSA中我们可以得到的信息:LS id为外部的网络地址6.6.6.6,并且还带有相应的子网掩码,metric值始终为1,因为我们可以看出这是type2类型的路由条目(不在内部累加,外部metric值可以进行修改);如果是type1类LSA,metric值会在内部叠加。FA值我们之后进行相应的讨论,并且还有相应的tag字段。同时可以发现,5类LSA只知道发布者的RID,不知道如何到达此路由器。

补充:

Type 1外部路由:当外部路由的开销与自治系统内部的路由开销相当,并且和OSPF自身路由的开销具有可比性时,可以认为这类路由的可信程度较高,将其配置成Type1 External。

Type 2外部路由:当ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销时,可以认为这类路由的可信程度较低,将其配置成Type2 External。

这时候就需要四类LSA进行辅助了,在R1上查看4类LSA:

可以看到两条4类LSA,分别是R1和R4两台ABR产生的。LS ID就是5.5.5.5,说明ASBR就是5.5.5.5,adv rtrR1R4,含义就是如果想去外部路由,那么将信息发给R1(R2R3通过R1到达外部路由)R4即可,通过1类,2LSA就知道如何到达R1R4,这样就可以计算出相应的路由条目了。

这里我们需要注意,一个路由器只知道本区域中的其他设备的RID,并不知道其他区域中的RID,因为无论是3类还是5类都没有带有RID信息,只带有目的的网段信息。所以需要四类LSA进行相应的辅助。

5LSAFA地址:

五类LSA的FA地址在大部分情况下都是0.0.0.0,当满足下面三个条件时候则会出现非零的情况:

重分发条目下一跳的接口在OSPF路由域中(也就是对应接口开启了OSPF

连接外部路由的接口不是被动接口(不接收也不发送ospf报文)。

连接外部路由的接口必须是MA环境(NBMABrocast

将R5的e0/0/0口宣告进ospf中:

可见,FA地址变为192.168.5.2,5类LSA的转发地址为连接外部路由下一跳的接口IP。

OSPF路由器收到外部路由时候,先看这条五类LSA是否携带FA,如果FA地址位非0则会根据FA地址进行迭代查询,如果可达则该五类LSA携带的路由可以加表,如果不可达则不加路由表。以七类LSA FA地址的情况为例。

5类LSA的FA值实验:

实验背景:

在R10上将RIP重分发进入OSPF,并在R10上查看相应的现象。

实验分析:

正常情况下,如果没有FA位的话,R8上回环口的路由条目只能通过RIP重分发进入OSPF,OSPF中五类LSA的下一跳为R10g0/0/0接口(ASBR),那么就会产生次优路径,没有直接选择同一网段的R8

将R8的G0/0/0接口既通告进入了OSPF也通告进入了RIP,并且没有开启为被动接口,为broadcast环境,在满足以上条件后,5类LSA的转发地址为连接外部路由下一跳的接口IP。这时,FA位就变为了R8g0/0/0接口的IP地址(R2上学习到RIP路由的下一跳)。在R1收到R2发送的外部条目的时候,发现FA值不为0,为R8g0/0/0接口的IP地址,和自己同一网段,避免了次优路径。

OSPF NSSA区域路由的计算过程与FA值实验

概述:

NSSA区域中不存在5类LSA,但是为了描述区域外的路由条目,则用7类LSA代替5类LSA。

7类LSA仅在NSSA区域中存在,当7类LSA离开NSSA区域进入普通区域时,可以转化为5类LSA。

NSSA-LSA报文格式和5类LSA相同:

其中,option字段中,P位,只用在NSSA LSA。该位将告诉NSSA区域的ABR路由器将7类LSA转换为5类LSA。如图:

例如10.1.1.0/24的条目在R4重分发入NSSA区域,P为1,当R2和R3中RID大的ABR会进行7转5。重点是不带有P字段的情况,如果在R3上有一个环回口,重分发进入ospf,那么P位就为0,因为他可以通过R3直接向区域0里面进行5LSA的透传,当然同时也会向NSSA区域中透传,只是没有必要再进行75再次发区域0中了。可以理解为自己为ABR再重分发路由条目就不会进行7转5。

实验:NSSA-LSA转化过程

实验思路:

将将静态路由引入OSPF的区域2(NSSA区域)。

注意:先配置nssa,再引入静态路由。如果先引入静态路由,就会产生五类LSA,泛洪到整个区域,此时就算配置了nssa,由于LSA还未老化,故LSDB中就会有两条外部路由。

实验步骤:

区域2为完全NSSA区域,R5的g0/0/1没有开启OSPF。在R5上查看相应的LSA信息:

可以看到有两条由R4发送的默认路由,一条为7类,1条为3类,因为区域间路由优于区域外的路由。实际上使用的是三类区域间的路由,可以查看路由表进行验证:

现在主要看7类LSA怎么转换为5类LSA进入骨干区域中,在R4上查看相应的LSA信息:

 可以发现R4这个ABR将7类LSA转换为了5类的LSA,并且将advRouter修改为了自己的RID。继续在R4上查看详细的7类LSA信息:

再查看详细的5类LSA进行相应的比较:

 除了type字段其他都相同,在这里我们会发现FA值为192.168.4.2,但是在非nssa引入外部路由的5类LSA中在目前的情况下是没有的FA值的,这里就引出了FA值在5类LSA和7类LSA中存在的差别:

相同点在于:

七类LSA中的FA地址,当满足五类LSA的三条规则的时候:

重分发条目下一跳的接口在OSPF路由域中(也就是对应接口开启了OSPF)。

连接外部路由的接口不是被动接口(不接收也不发送ospf报文)。

连接外部路由的接口必须是MA环境(NBMA、Brocast)。

FA就是ASBR路由表中该路由的下一跳地址(对于这一点和五类LSA完全相同)。

不同的地方在于:

7类LSA是一定要带FA的,可以通过命令强制使其不带,但会出现次优和环路的问题

当不满足5类LSA中生成FA的三条规则的时候,则FA地址设置为该ASBR上某个OSPF路由域内的网段(例如loopback0接口)的接口IP地址(注意这些网段是必须被通告进入ospf的),有多个网段时选IP地址最大者,并且回环口优先于物理接口。

如果在R4上有一个环回口,重分发进入ospf,那么P位就为0,因为他可以通过R4直接向区域0里面进行5LSA的透传,当然同时也会向NSSA区域中透传,只是没有必要再进行75再次发区域0中了。可以理解为自己为ABR再重分发路由条目就不会进行7转5。如下图,4.4.4.4仍为七类LSA,但p没有置位。

实验:NSSA负载分担解决次优路径问题

分析次优路径产生的原因:

次优路径是由于7转5只有在一个设备上进行,如果没有FA值就会导致其他区域的流量始终会通过7转5这个路由器转发进入NSSA区域,这样可能就会错过更好的ABR进行转发。而普通5类转发则是每个ABR都会转发,所以自然而然会有最优的路径供选择,所以FA值可以为0。

但是我们将FA值设置为ASBR上的接口IP地址,并且是OSPF区域中的(保证可达)。当其他区域的设备收到了对应的外部路由,那么就用ASBR上的可达接口作为下一跳进行迭代累加cost值,这样保证迭代出来的就是最优的路径了。

总的来说FA也就是起了一个重定向的作用,重新定义下一跳,然后避免次优路径的产生。否则下一跳就是7转5的路由器的对应接口地址,自然可能产生次优路径。

注意:

OSPF区域去往外部AS的的时候,一条路由的时候,内部选路永远是看内部的cost,也就是到最初的下一跳的cost值。而外部cost值的用处是比较两条7类或者5类LSA的tpye2类的路由条目时有作用。

具体步骤:

将R3到达5.5.5.5的静态路由引入OSPF环境中,R3的g0/0/0不需要通过进入OSPF,然后我们在R4上查看:

 发现FA只有R3上回环口的IP地址,这样去往外部路由的下一跳就是通过3.3.3.3进行迭代,因为没有修改链路的cost值,所以会出现负载均衡的场景:

当我们将R2上e0/0/1接口的cost值修改为10时,再观察R4产生的路由条目:

 现在的路径只有一条了,就是通过R1去往外部网络,这就是FA值避免次优路径的解决方案。

为了进行对比,如果没有FA地址的话会发送什么错误,可以在7转5的时候可以将FA地址去掉,在本题目上是在R2上进行的7转5,所以们在R2上开启抑制7转5 的功能:

[R2-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address //在相应nssa区域中配置

然后我们继续在R3上查看OSPF的5类LSA:FA值为0了

  既然FA值为0,所以R4以为ASBR就是R2,通向外网的时候直接发送R2,我们查看相应的条目:

 这个时候,可以发现产生了次优路径。

实验:FA解决NSSA区域环路的问题

拓扑描述:

区域1为NSSA区域,各链路的cost如图所示

 在R1上把1.1.1.1引入OSPF,此时R1会产生关于1.1.1.1网段的7类LSA。

R2与R3作为Area1的ABR,都有责任进行7转5的动作,但OSPF规定默认情况下只有R-ID大的才能进行7转5,即R3会进行7转5的动作,由R3产生关于1.1.1.1的5类lsa,并在Area0中泛洪。R4从Area 0中收到此5lsa,并泛洪给R2。

我们来分析R4如何去往1.1.1.1,此时会有两种情况:

情况一:R4收到的这条5类LSA中FA地址为0.0.0.0。根据OSPF外部路由的选路规则,当5类LSA中FA地址为0时,则计算去往ASBR的路径。

此时产生此条5类LSA的是R3,所以R3为ASBR,R4可直接通过Area 0到达ASBR(R3)。

R3是通过Area 1学习到的1.1.1.1网段,所以R3可通过Area1去往1.1.1.1,即把数据包发送给R2。

此时R2可通过两条LSA学习到1.1.1.1的路由,

第一条:R1产生的7类LSA。类型为Type2,外部Cost为1(外部cost默认都为1),内部cost为10(内部cost,本路由器到ASBR的cost)

第二条:R3产生的5类LSA,由R4泛洪给R2(参考上面第二步),类型为Type 2,外部Cost为1,内部Cost为2(R2-R4-R3的cost)

R2执行选路规则,两条LSA同为Type2类型,先对比外部cost值,都为1,然后对比内部cost值,第一条为10,第二条为2,所以R2会优选第二条(R3产生的5类lsa),即会把数据包转发给R4。

环路形成:R4-R3-R2-R4

当FA地址不为0时,此时FA地址为192.168.1.1。R4是通过3类LSA学习到的(192.168.1.1位于Area 1中,R2与R3都为ABR,都会产生关于192.168.1.1网段的3类lsa),R4此时其实可以收到两条192.168.1.1的3类LSA,一条R2产生,一条R3产生,通过计算cost后发现,选择R2去往10.1.12.1更近,所以R4会把数据包转发给R2。

R2同样执行选路计算,计算去往FA地址192.168.1.1的路径,此地址是R2的一个直连路由,所以R2会把数据包转发。此时全程的路径为:R4-R2-R1,解决了环路问题。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值