3)可选字段

阅读该节时,请先阅读具体LSA类型

OSPF header

Hello、DBD、LSA中都出现了可选字段。可选字段允许路由器和其他路由器进行一些可选性能的通信。
DN:用于基于MPLS的第三层VPN,[RFC 2547]中规定的RFC 2547
VPN。当一条路由通过OSPF从某个客户网络学到后,它就会穿过使用M-BGP的RFC 2547
VPN被通告到网络对端,接着再通过OSPF被通告回客户网络。通告回的OSPF路由在BGP中会被重新分配到VPN运营商的网络,这样产生了一个环路。DN用来避免这个环路。当在3、5、7类LSA中设置DN后,接收路由器就不能在它的OSPF路由计算中使用该LSA

N/P

  • Hello数据包中出现N=1:指示该路由器处于NSSA和totally
    NSSA区域内,表明接收和发送7类LSA,如果邻居路由器错误配置N位,会导致无法形成邻接关系。在N=1时E位必须置0

  • 7类LSA中出现P=1:
    7类LSA首部可选字段中出现P=1表示NSSA区域的ABR能够将这条7类LSA转为5类LSA;只有NSSA区域的ABR重分布路由时,通告的7类LSA中的P=0,ABR不能7转5,因为重分布后,通知NSSA区域其他ABR不要对该LSA进行7转5,因为area
    0内的其他路由器已经从area
    0收到了该5类LSA,因此NSSA区域其他ABR执行7转5是没有意义的。只有当NSSA区域拥有双ABR时才会出现P置位

OSPF header
OSPF header

E:当始发路由器具有接受external-LSA的能力时,E=1

  在标准区域和area0中的路由器,发送的hello包的可选字段中E=1,表示该路由器接口可以接收和发送5类LSA

  在stub、totally stub、NSSA、totallyNSSA区域中的路由器,发送的hello包中可选字段中的E=0,表明不具有接收和发送5类LSA,也不需要知道5类LSA,因为这是stub区域的特性,减少LSA,从而精简路由表。E位配置错误的邻居路由器将不能形成邻接关系,这个限制可以确保一个区域的所有路由器都同样的具有支持末梢区域的能力。

OSPF header

2.LSA详解

1)LSA首部格式

  LSA首部在所有LSA,部分DBD、LSACK中都出现了,LSA首部中有3个字段唯一标识每个LSA:LSAtype、link state id、advertising router。另外3个字段唯一标识一个LSA的最新实例:老化时间、seq序列号、校验和。

以下LSA首部格式:

OSPF header

LS age:指自从发出LSA后所经历的时间
option:参见可选字段
LSA type:LSA的类型;
Link state id:该字段根据具体LSA类型的不同而不同;注意区分于具体LSA类型的link id
Advertising router:指始发LSA的router-id
Seq number:当LSA每次有新的实例产生时,该序列号就会增加。该更新可以帮助其他路由器识别最新的LSA实例
length:包含LSA首部在内的LSA的长度

具体LSA类型

  完整LSA信息只会在LSU数据包中出现,所谓的完整LSA信息,是LSA首部length字段之后的信息

OSPF header

router-LSA(1类LSA)

  所有路由器都会产生1类LSA,目的是通告自身直连接口的信息,1类LSA通过泛洪,会到达整个area,不会跨越ABR。在路由表中的标识是O

OSPF header

**Link state id:**指始发1类LSA的路由器router-id
**Advertising router:**始发1类LSA的路由器router-id
flags:指路由器的特殊角色

  • V:虚链路端点位,置1说明始发路由器是一条或多条具有完全邻接关系的虚链路的一个端点,这里被描述的区域是传送区域
  • E:外部位,置1说明始发路由器是一个ASBR
  • B:边界位,置1说明始发路由器是一个ABR

Number of link(链路数量):标明一个LSA所描述的路由器链路数量。对于LSA进行泛洪扩散的区域,router-LSA必须描述始发路由器的所有链路或接口。

  在router-LSA后续的字段里描述了每一条链路,并且出现的次数和前面的链路数量字段中的数量是一致的,虽然这个字段是出现在链路数据字段之后的,但是在这里将首先讲述链路类型字段。这是因为链路ID和链路data字段的描述会根据链路类型字段的值而有所变化。

Type: 指明链路类型、链路id、链路data

OSPF header

度量:指一条链路接口的代价

Tips:注意区分link state id 和link id

network-LSA(2类LSA)

  2类LSA仅出现在MA网络的区域中,在MA网络中会选举DR与BDR,所有的DRothers都只能和DR、BDR建立FULL关系。从某个方面来说,DR实际代表了这个MA网络,所以DR产生2类LSA,且只在本区域内泛洪2类LSA,不允许跨ABR。路由表中的标识是O

OSPF header

Link state id:2类LSA是指DR接口ip地址
Advertising router:DR的router-id

通告的内容:

  • netmask:是指MA网络的子网掩码
  • attached
    router:用来描述这个MA网络中的所有与DR或BDR形成full关系的路由器的router-id,包括DR和BDR本身的router-id

tips:2类LSA是不携带metric的,因为1类携带了

特点:1、2类LSA解决了一个区域内的路由传递,且1、2类LSA在路由表中被标记为O

network summary-LSA(3类LSA)

  区域之间解决路由传递靠3类LSA,3类LSA是网络汇总LSA,和路由汇总完全两个意思。3类LSA由ABR产生,通告范围是整个OSPF网络。ABR知道两个区域的所有1、2类LSA,它会将某个区域的1、2类LSA归纳生成3类LSA,然后给另外的区域泛洪3类LSA。

OSPF header

Link state id:所通告的网络或子网IP地址,也可以是0.0.0.0(即缺省路由)
通告路由器:ABR,每经过一个ABR,就会修改成所经过的ABR

通告的内容:

  • 网络掩码:指所通告的网络的子网掩码位;如果是缺省路由,那么链路ID和网络掩码都是0.0.0.0
  • 度量:指到达目的地的路由的代价,也就是累计接口cost

ASBR summary-LSA(4类LSA)

  4类LSA由ASBR所在区域的ABR产生,向整个OSPF网络泛洪,目的是通告ASBR的位置。ASBR作为域边路由器,将OSPF外部路由通过重分布的方式注入进OSPF域,这些外部路由会以5类LSA的形式在OSPF域中传递,所以其他区域的路由器想要前往OSPF外部,就需要知道两件事:

  1. 知道外部路由(由5类LSA完成)

  2. 知道完成这个重分布动作的ASBR位置

  所以需要通过ASBR所在区域的ABR产生4类LSA来通告ASBR的位置,因为1类LSA中的flags字段的E=1,表示这台路由器是ASBR,所以ABR通过1类LSA了解到了ASBR的位置。所以1类LSA是让本区域内部的所有路由器知道ASBR的位置,这样ASBR所在的区域的路由器去往外部网络就没有问题,4类LSA是让其他区域的所有路由器知道ASBR的位置,这样其他OSPF区域去往外部网络就没有问题了。

OSPF header

Link state id:所通告的ASBR的router-id
通告路由器:每经过一个ABR,就会修改成经过的ABR的router-id

通告内容:

  • 网络掩码:被置为0.0.0.0,无实际意义
  • 度量:指到达目的地的路由的累计接口cost

External-LSA(5类LSA)

  external-LSA是由ASBR路由器始发,5类LSA用来通告OSPF AS外的目的网络的,通告外部目的网络也包括缺省路由。5类LSA可以泛洪扩散到整个OSPF中所有标准区域和area0区域中去。5类LSA在路由表中被标记为O E

OSPF header

Link state id:外部路由的网络地址;如果通告缺省路由,则为0.0.0.0
通告路由器:ASBR的router-id

通告内容:

  • 网络掩码:外部路由的掩码;如果通告缺省路由,则为/0
  • E:外部度量位;用来指定这条路由使用的外部度量的类型

E=1,度量类型为E2
E=0,度量类型为E1

  • metric:指外部路由的度量,重分布时由ASBR路由器设置外部路由进入OSPF域的种子度量值
  • 转发地址(FA):是指到达所通告的外部网络路由的数据包应该被转发到的地址。FA=0.0.0.0时就是将所有去往外部的数据包根据外部路由全部转发到始发ASBR上
  • 外部路由标志:是一个应用于外部路由的任意标志。OSPF协议本身并不使用这个字段,而是由外部路由来管理和控制

5类LSA路由优选问题

  5类LSA由ASBR产生,告知OSPF域中的路由器通往外部AS的路由,且5类LSA不允许进入NSSA区域和stub区域

  OE1 metric = 外部metric + 内部累计cost
  OE2 metric = 外部metric = 20(默认)

OSPF header

E1路由之间比较:当本地接收到多条描述同一外部路由信息的OE1时,需要比较每条5类LSA中携带的metric与本地到达产生该LSA的ASBR的metric之和,并优选值小的OE1。如果metric相等,则产生路由的负载均衡

E2路由之间比较:当本地接收到多条描述同一外部路由信息的OE2时,按照以下顺序比较不同的metric值,从而实现优选:

  1. 首先比较5类LSA本身携带的metric(即外部metric),优选值小的5类LSA;如果metric相同则进入下一条比较

  2. 比较本地到达通告每条LSA的ASBR/FA地址的metric(即内部metric),优选值小的;如果相同,产生负载均衡

E1、E2路由的优选问题:E1永远优于E2路由,不比较metric。如果一台OSPF路由器,同时学习到去往同一个目的地的两条外部路由,一条为OE1,另一条为OE2,则OE1永远优选

ON2和OE2的选择问题:当metric不一样时,比较各自到ASBR/FA地址的内部metric,如果metric一样,cisco优选OE2

OSPF header

如图R2收到4.4.4.0的OE2和ON2,在两者metric相等时,cisco默认选择OE2,但是更改R2接口cost后,可以看到相应的变化

当上面的OE2和ON2两metric相等,各自到ASBR或FA地址的metric相当时,cisco默认优选OE2,当两metric相等,但各自到FA或ASBR的metric不等时,优选这个距离小的

NSSA external-LSA(7类LSA)

  NSSA external-LSA是由一个NSSA区域的ASBR路由器始发的。除了FA字段外,7类
LSA的所有字段和5类LSA的字段相同。7类LSA只能在NSSA区域中泛洪,从外部路由域重分布进NSSA区域的外部路由,到达ABR时,ABR会将7类LSA转换成5类LSA,5类LSA传递给整个OSPF路由域。7类LSA在路由表中标记是ON

  7类LSA是非常特殊的LSA,NSSA区域阻挡从骨干区域area 0
中过来的5类LSA进入,同时允许NSSA本地始发外部路由,这些外部路由以7类LSA的形式在本地NSSA中进行泛洪,当这些7类LSA到达NSSA的ABR时,由该ABR负责将7类LSA转换成5类LSA,方可注入骨干区域。

OSPF header

  通告内容:除FA字段外基本和5类LSA相同,外部路由通过ASBR重分布进NSSA区域,经过ABR将7类LSA转换成5类LSA,传递至整个OSPF域。

转发地址(FA):如果网络在一台NSSAASBR路由器和邻接的AS之间是作为一条内部路由通告的,那么这个FA就是这个网络的下一跳地址。如果网络不是作为一条内部路由通告,那么这个FA就是NSSA ASBR路由器的router-id


保持一个积极向上的良好心态,分享网络技术!