个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,只有了解交互信息才能真正理解协议。
虽然路由器自身可以对协议做一些独特的配置,但是报文仍然是协议的核心。例如,OSPF的完全末节区域不在报文中体现,只需在边界路由器ABR上配置即可。这是因为完全末节区域的ABR是区域向外(区域外和AS外)通信的核心节点,只需在ABR上进行限制而无需报文协商。而末节区域则是要求末节区域内部不得引入AS外部路由,因此要全区域协商。同理Nssa和Total Nssa也类似。
因此本文将在OSPFv2协议报文的基础上进行介绍。
自动换行
OSPFv2:
- 关于 OSPFv2 协议的数字签名,可参考RFC2154-OSPF with Digital Signatures。
- 关于 OSPFv2 协议基本原理,可参考RFC2328-OSPF Version 2。
- 关于 OSPFv2 协议的多拓扑,可参考RFC4915-Multi-Topology (MT) Routing in OSPF。
其他相关资料可参考:
- 《博客-OSPF RFC历史版本集合》。
- 《博客-OSPFv2协议状态切换基本原理》。
- 《博客-OSPFv2 RFC2328文档翻译1》 。
- 《博客-OSPFv2 RFC2328文档翻译2》。
- 《IANA-OSPF协议相关参数》。
- 《IANA-OSPF认证算法码》。
- 《IANA-IEEE 802 Numbers以太网类型》。
- 《IANA-Protocol Numbers IPvX协议类型》。
个人能力有限,有问题可私信交流。
目录
OSPFv2详解-基于RFC2328
1.OSPFv2报文介绍
接下来将从报文底层一次向上对OSPFv2报文进行介绍。如无特殊说明,将以以太网广播类型为主介绍。
数据链路层:通常 OSPFv2 运行于 Ethernet II。(另一种以太帧为IEEEE 802.3 Ethernet,使用802.3的协议有ISIS、生成树等。)
SMac:使用接口 MAC;
DMac:使用组播 MAC,该 MAC 由组播 IP 转化而来。由于 OSPFv2 有固定的组播 IP,因此 IPv4 网络的 DMAC 固定为01:00:5e:00:00:05。
网络层:之后向上承载IPv4(类型0x0800)。
SIP:使用接口IP;
DIP:使用组播IP。OSPFv2 固定使用两种组播IP:AllSPFRouters 和 AllDRouters。
AllSPFRouters = 224.0.0.5:所有运行OSPF的路由器都监听并接收发送到此地址的数据包。
AllDRouters = 224.0.0.6:DR和BDR路由器监听并接收发送到此地址的数据包。
自动换行
但是 OSPF DDB 报文使用单播进行发送。并且 PPP 网络下也将使用单播进行发送。此外还有 virtual-link 的 OSPF 报文使用单播进行发送。
DS字段/TOS字段:使用高优先级 CS6,在网络拥塞场景下优于普通流量优先传递。相似的处理方式,可见于 BGP 等协议。关于 QOS 内容,可查阅相关文档。
TTL字段:设定为1,以限制 OSPFv2 协议包的传递范围为1跳。这里了1跳可以理解为1个局域网,也即只能在单个局域网内传输。
IP协议号:固定为89。相关定义可在 《RFC1700- ASSIGNED NUMBERS》中查询。
1.1.OSPFv2 Header
OSPFv2协议具有公共头部,并在头部标识携带的协议包类型。现对相应字段进行介绍。
version:1字节。2标识目前版本为 OSPFv2 版本。
Message Type:1字节。1标识为 Hello 包,2标识为 Database Description 包,3标识为 Link State Request 包,4标识为 Link State Update 包,5标识为 Link State Ack 包。
Packet Length:2字节。标识包括了 OSPFv2 Header 的整个 OSPF 包长度。而 IP 包中的 Total Length(也为2字节) 标识的是 IP Header+IP poyload 的数据长度,可在上图看到为 64(=20+44,IP Header固定长部分为20)。
Source OSPF Router:4字节。标识 OSPF 包发送者的身份,使用Router ID填充。
Area ID:4字节。标识路由器(接口)所处区域。用于层次化网络架构划分。
area 用于指定接口加入的区域。
CheckSum:2字节。用于校验数据包的准确性。校验从OSPF Header开始除 Auth Data 以外的字段。
Auth Type:2字节。用于路由器之间加密协商。
Auth Data:8字节。与 Auth Type 协调一致的字段。与Auth Type共同进行加密协商。
1.2.类型1-Hello包
OSPFv2的Hello包用于建立和维护邻居关系。
1.2.1初始情况下的Hello包
Network Mask:4字节。启用OSPFv2接口的掩码。
Hello Interval:2字节。发送Hello包的间隔。广播网默认10s。
OSPF timer hello用于更改ospf helo 包间隔。
Options:1字节。选项字段,这里只介绍常用字段。
DN-bit:Down bit,《RFC4576-LSA Options Bit to Prevent Looping in BGP/MPLS IP VPN》中定义。MPLS VPN场景下避免环路。在PE向CE发送Summary-LSA、AS-External-LSA和Nssa-LSA时置1位。CE接收到DN=1的LSA不进行处理。
O:Opaque-LSA bit,《RFC5250-The OSPF Opaque LSA Option》中定义的(类型9,10,11)支持能力。置0表示不支持处理Opaque-LSA。
DC:Demand-circuit bit,《RFC1793-Extending OSPF to Support Demand Circuits》中定义的按需链路能力。只在需要情况下建立OSPF邻居关系防止流量计费。置0表示不支持。
L:Link-Local-signaling bit,《RFC5613-OSPF Link-Local Signaling》中定义用以允许在同一链路上的路由器之间交换其他信息。置位时表示可处理LLS TLVs。
N/P:NSSA bit (Not-So-Stubby bit),《RFC3101-The OSPF NSSA Option》中定义。非完全末节功能。用于支持非完全末节区域,与E-bit位不可同时设置。默认置0表示不支持。
Propagate bit只用在NSSA LSA中(即在NSSA LSA中代表P位)。P=1时,NSSA 区域的ABR可将该type-7 NSSA LSA转换为type-5 AS-external-LSA。
MC:Mulicast-OSPF-bit,《RFC1584-Multicast Extensions to OSPF》/《RFC5110-Overview of the Internet Multicast Routing Architecture》中定义的组播OSPF功能。
E:External-bit,《RFC2328-OSPF Version 2》中定义的外部路由功能。用于支持引入外部路由,默认置1表示支持。
MT:Multi-topology-bit,《RFC4915-Multi-Topology Routing in OSPF》中定义的多拓扑功能。默认置0表示不支持。
Router Priority:1字节。进行 DR 选举时的比较依据。取值0-255,默认取1。DR 优先级越大越优先成为 DR,相同优先级时取最大 Router ID 的路由器。关于 DR 选举并不仅仅取决于优先级和 Router-id,详细原理将在后文介绍。
ospf dr-priority 用于设置接口上的dr优先级。设置为0时,表示不参与DR选举。
Router Dead Interval:4字节。未收到邻居 Hello 包而将邻居/邻接关系 dead 的最长时间。默认为 Hello Interval*4。
ospf time dead用于设置ospf dead间隔。
Designated Router:4字节。广播网和NBMA网络上的选举出的DR路由器。首次启动置为0.0.0.0。
Backup Designated Router:4字节。广播网和NBMA网络上选举出的的BDR路由器。首次启动置为0.0.0.0。
1.2.2.交互信息完成的Hello包
Active Neighbor:链路上存在的活动邻居路由器(邻居的Router ID表示)。
通过邻居间的Hello包交互,可以确认链路上所存在的DR和BDR路由器,以及存在的活动邻居。
《RFC2328-附录A.3.2 The Hello packet》中定义 OSPF Hello 包的 Designated Router 和 Backup Designated Router 字段应由所连接网络的接口 IP 地址来填充。
1.3.类型2-DBD包
Database Description(DBD) 包也称为 DD 包,用于互相传递链路状态数据库摘要信息。这里的链路状态数据库摘要主要指的是 LSA 的头部信息。DBD 包主要有两种作用:一种是主从选举,一种是传递数据库摘要。接下来对其进行介绍。
1.3.1.主从选举时的DBD
Interface MTU:2 字节。在不分片情况下,可以发送到相关接口的最大 IP 包的字节数大小。华为默认设置为 0。
ospf mtu-enable 用于使能接口在发送DD报文时以接口MTU填充该字段,同时还会检查邻居DD报文所携带的MTU是否超过本端的MTU值。默认去使能,且将OSPF的MTU字段置0。
检查时如果邻居发送的MTU不大于自身则可正常建立邻接关系。
自动换行
在IPv6网络的OSPFv3中,同样需要考虑MTU的相关设置。但是华为将OSPFv3的DD报文的MTU默认设置为接口IPv6 MTU=1500。
ospfv3 mtu-ignore用于设置不对DD报文中MTU字段进行检查。填充值仍以接口IPv6 MTU进行填充。
Options:1 字节。选项字段,这里只介绍常用字段。
DN-bit:Down bit,《RFC4576-LSA Options Bit to Prevent Looping in BGP/MPLS IP VPN》中定义。MPLS VPN场景下避免环路。在PE向CE发送Summary-LSA、AS-External-LSA和Nssa-LSA时置1位。CE接收到DN=1的LSA不进行处理。
O:Opaque-LSA bit,《RFC5250-The OSPF Opaque LSA Option》中定义的(类型9,10,11)支持能力。置0表示不支持处理Opaque-LSA。
DC:Demand-circuit bit,《RFC1793-Extending OSPF to Support Demand Circuits》中定义的按需链路能力。只在需要情况下建立OSPF邻居关系防止流量计费。置0表示不支持。
L:Link-Local-signaling bit,《RFC5613-OSPF Link-Local Signaling》中定义用以允许在同一链路上的路由器之间交换其他信息。置位时表示可处理LLS TLVs。
N/P:NSSA bit (Not-So-Stubby bit),《RFC3101-The OSPF NSSA Option》中定义。非完全末节功能。用于支持非完全末节区域,与E-bit位不可同时设置。默认置0表示不支持。
Propagate bit只用在NSSA LSA中(即在NSSA LSA中代表P位)。P=1时,NSSA 区域的ABR可将该type-7 NSSA LSA转换为type-5 AS-external-LSA。
MC:Mulicast-OSPF-bit,《RFC1584-Multicast Extensions to OSPF》/《RFC5110-Overview of the Internet Multicast Routing Architecture》中定义的组播OSPF功能。
E:External-bit,《RFC2328-OSPF Version 2》中定义的外部路由功能。用于支持引入外部路由,默认置1表示支持。
MT:Multi-topology-bit,《RFC4915-Multi-Topology Routing in OSPF》中定义的多拓扑功能。默认置0表示不支持。
DB Description:2 字节。用于指导 DBD 报文的有序传递。
I-bit:置 1 用于表明这是第一次发送 DBD 包。
M-bit:置 1 用于表明此后还会发送 DBD 包。
M/S-bit:用于表明主从位。置 1 表示为主,置 0 表示为从。
DD Sequence:2 字节。表明传递 DBD 的序列。
DD的主从选举:
其依据是 OSPFv2 Header 中携带的 Source OSPF Router 字段也即 Router ID值。Router ID大的路由器成为主。注意由于 OSPF 的 DR 默认不支持抢占,因此 Router ID 大的不一定是主。
在相邻(同一链路)的路由器正常建立邻居关系 (2-way) 后,首先发送一个空的 DBD 包进行主从选举。该 DBD 携带 Options 字段用于表明自己设备的所支持 OSPFv2 功能,携带 DB Description 字段进行主从选举。初始时都将 I、M 和 M/S bit 设置为 1,携带 DD Sequence 值 (DD Sequence 为随机产生)。
此后,主从选举完成后根据设备自身情况设置 I、M 和 M/S 位。
Note:DBD的DD Sequence为随机产生,LSA中的Sequence Number从0x80000001开始计数。两者不同。
ExStart 状态下进行的主从选举应当持续将 I-bit、M-bit 和 M/S-bit 置位,并且每 RxmtInterval = 5s 进行重传直到主从选举完成。
1.3.2.数据库摘要的传递
传递数据库摘要的 DBD 包,相比于用于主从选举的 DBD 包添加了 LSA Header 摘要信息。每种 LSA 都具有相同的 Header 字段。
1@:在主从选举完成后,首先由主设备主动发起一个 DBD 包将 DB Description 的 M/S-bit 置 1,并携带自身 LSA 摘要信息。如果自身还有未发送的 LSA 摘要,则将该 DBD 包中的 DB Description 的 M-bit 置1,无则置0。
2@:随后从设备回应 DBD 包,将 DB Description 的 M/S-bit 置 0,并携带自身 LSA 摘要信息。如果自身还有未发送的 LSA 摘要,则将该 DBD 包中的 DB Description 的 M-bit 置 1,无则置 0。且此 DBD 包中的 DD Sequence 字段与主设备的 DBD 包一致。
3@:之后主设备将 DD Sequence+1 发送给从设备,循环上述过程直到主从设备都完成了 LSA 摘要的传递。
Note:在主设备传递LSA摘要完成而从设备未传递完成的情况下,主设备在从设备发送的DB Description字段中获悉从设备未传递完成DBD摘要。此后,主设备需发送空的DBD包直到主从都完成DBD传递。
主从选举完成后进入Exchange状态,开始正式进行链路数据库的传递。依照DBD报文DB Description字段的 I-bit、M-bit 和 M/S-bit 位进行链路数据的传递。
两台路由器的 OSPF DBD 传输示意如上图所示。仅作示例参考。
自动换行
传输时也可能遇到如下情况:
1、主设备的数据库传递完成M-bit置为0,但是从设备的数据库未完成M-bit=1。
A:此时主设备会从上一个从设备发送的DBD报文中查看到该信息,因此会发送空的DBD,直到两端都完成DBD的传递。
2、当一段发送的DBD没有进行回应时,在RxmtInterval=5s间隔下进行一次重传保证信息可靠传递。
1.4.类型3-LSR包
链路状态请求 LSR(Link State Request) 包用于向特定邻居请求自己没有的 LSA。
LSR只包含可唯一确定一条LSA的三要素:
LS 类型:4字节。LS类型主要有Type-1 Router-LSA,Type-2 Network-LSA,Type-3 Summary-LSA,Type-4 ASBR-LSA(RFC2338也称为Type-4 Summary-LSA),Type-5 AS-External-LSA和Type-7 Nssa-LSA。
此外还有Type-8 LSA External-Attributes-LSA,Type-9/10/11 Opaque LSA(提供用于OSPF的扩展的通用机制)等。
链路状态ID:4字节。与LS 类型相关的LSA信息。
通告路由器:4字节。产生该LSA路由器的Router ID。
Note:LSA之间存在差别,LSA自身也存在差别(具有时效性,有新旧差别)。LSR只包含LSA头部不涉及差别。
不同的LSA将在链路状态通告LSA章节进行介绍。
1.5.类型4-LSU包
链路状态更新(Link State Update)包传递了完整了LSA信息。不仅包含LSA头部,还包含LSA所携带的拓扑信息和路由信息。
Number of LSAs:4字节。LSU报文所传递的LSA数目。
红框区域即为LSA的Header信息。
此外需要注意的是,DR/BDR发送LSU通告时目的地址为AllSPFRouters =224.0.0.5,而DROthers发送LSU通告时目的地址为AllDRouters =224.0.0.6
1.6.类型5-LSAck包
通过封装 LSA 的 Header 摘要信息完成 LSA 传递的确认。
2.链路状态通告LSA
RFC2328描述了5种LSA:Router-LSA,Network-LSA,Summary-LSA,ASBR-LSA(RFC2328将其表述为Type-3 Summary-LSA)和AS-External-LSA。而实际上有如下
LSA Type 1: OSPF Router LSA
LSA Type 2: OSPF Network LSA
LSA Type 3: OSPF Summary LSA
LSA Type 4: OSPF ASBR Summary LSA
LSA Type 5: OSPF ASBR External LSA
LSA Type 6: OSPF Group Membership LSA
LSA Type 7: OSPF Not So Stubby Area (NSSA) External LSA
LSA Type 8: OSPF External Attributes LSA (OSPFv2) / Link Local LSA (OSPFv3)。
在IPv4网络中用于为BGP传递属性。
LSA Type 9: OSPF Link Scope Opaque (OSPFv2) / Intra Area Prefix LSA (OSPFv3)。
MPLS TE场景下的Opaque LSAs传递OSPF信息
LSA Type 10: OSPF Area Scope Opaque LSA
扩展功能,MPLS TE场景下通告MPLS和其他协议
LSA Type 11:OSPF AS (Autonomous System) Scope Opaque LSA
扩展功能,与LSA Type 10具有相同功能但是不能在特殊区域泛洪。
,这里仅对Type 1-5和Type-7 LSA进行介绍。
LSA Type | Link State ID | ADV Router |
---|---|---|
Type-1 Router-LSA | 自己Router ID | 自己Router ID |
Type-2 Network-LSA | 伪节点IP/DR接口IP | DR的Router ID |
Type-3 Summary-LSA | IP网络号 | ABR的Router ID |
Type-4 ASBR Summary-LSA | ASBR的Router ID | ABR的Router ID |
Type-5 AS External-LSA | IP网络号 | ASBR的Router ID |
Type-7 Nssa-LSA | IP网络号 | ASBR的Router ID |
2.1.Router-LSA和Network-LSA
Type-1 LSA 称为 Router-LSA 路由器LSA,描述了所连接区域的链路信息和路由信息(开销):
LS Age:7bit。LSA的老化时间。从0开始增长。最大3600s时老化。
Do not Age:1bit。老化bit位,置1时从不老化。
Options:1字节。
DN-bit:Down bit,《RFC4576-LSA Options Bit to Prevent Looping in BGP/MPLS IP VPN》中定义。MPLS VPN场景下避免环路。在PE向CE发送Summary-LSA、AS-External-LSA和Nssa-LSA时置1位。CE接收到DN=1的LSA不进行处理。
O:Opaque-LSA bit,《RFC5250-The OSPF Opaque LSA Option》中定义的(类型9,10,11)支持能力。置0表示不支持处理Opaque-LSA。
DC:Demand-circuit bit,《RFC1793-Extending OSPF to Support Demand Circuits》中定义的按需链路能力。只在需要情况下建立OSPF邻居关系防止流量计费。置0表示不支持。
L:Link-Local-signaling bit,《RFC5613-OSPF Link-Local Signaling》中定义用以允许在同一链路上的路由器之间交换其他信息。置位时表示可处理LLS TLVs。
N/P:NSSA bit (Not-So-Stubby bit),《RFC3101-The OSPF NSSA Option》中定义。非完全末节功能。用于支持非完全末节区域,与E-bit位不可同时设置。默认置0表示不支持。
Propagate bit只用在NSSA LSA中(即在NSSA LSA中代表P位)。P=1时,NSSA 区域的ABR可将该type-7 NSSA LSA转换为type-5 AS-external-LSA。
MC:Mulicast-OSPF-bit,《RFC1584-Multicast Extensions to OSPF》/《RFC5110-Overview of the Internet Multicast Routing Architecture》中定义的组播OSPF功能。
E:External-bit,《RFC2328-OSPF Version 2》中定义的外部路由功能。用于支持引入外部路由,默认置1表示支持。
MT:Multi-topology-bit,《RFC4915-Multi-Topology Routing in OSPF》中定义的多拓扑功能。默认置0表示不支持。
LS 类型:4字节。LS类型常用有 Type-1 Router-LSA,Type-2 Network-LSA,Type-3 Summary-LSA,Type-4 ASBR-LSA(RFC2338也称为Type-4 Summary-LSA),Type-5 AS-External-LSA 和 Type-7 Nssa-LSA。
链路状态ID:4字节。与 LS 类型相关的LSA信息。
通告路由器:4字节。产生该 LSA 的路由器 Router ID。
LSA 相比于 Header 增加了如下字段:
Flags:1字节。
Flags字段由高bit开始依次为:
H-bit:Host-bit,定义于RFC8770。置1表示自己为非传输路由器,此时在OSPFv2 路由域中传输流量的路径计算中将排除主机路由器,但可以将流量发送到其本地目的地。
空余2bits。
Nt-bit:NSSA translation-bit,定义于RFC3101。置1表示路由器为NSSA的ABR,将无条件地进行 Type-7 NSSA-LSA 转换为 Type-5 AS-external-LSA。并且,此类路由器的 NSSATranslatorRole 区域配置参数设置为 Always。
W-bit:wild-card multicast receiver-bit,定义于RFC1584/RFC5110。MOSPF场景下置1表示路由器为通配符组播接收器。此时路由器将包含在所有数据报最短路径树中而不管组播组如何,以便希望接收所有组播数据。
V-bit:Virtual link endpoint-bit,定义于《RFC2328-A.4.2 Router-LSAs》。置1表示路由器为虚链路的端节点。
E-bit:External-bit,定义于《RFC2328-A.4.2 Router-LSAs》。置1表示路由器为ASBR。
B-bit:Border-bit,定义于《RFC2328-A.4.2 Router-LSAs》。置1表示路由器为ABR。
Number of Links:2字节。本条LSA中所包含的link数量。
不同类型的Router-LSA:12字节。
Router-LSA可分为4种,每种Router-LSA之间的区别如下:
Link Type(1字节) Link ID(4字节) Link Data(4字节) Type-1 PTP 邻居Router ID 自己接口IP Type-2 Transit 伪节点IP/DR接口IP 自己接口IP Type-3 StubNet IP网络号 IP网络掩码 Type-4 Virtual 邻居Router ID 自己接口IP Number of Metrics/TOS:1字节,RFC1583中定义的Type of Service。
Metric:2字节,路由器连接的开销。
自动换行其他Router-LSA类型示例。
自动换行
注意与LSA类型的区分。这里是Type-1 Route-LSA中携带信息的分类。
@并且从Router-LSA的类型可以发现,只有StubNet用于描述路由而其他类型Router-LSA用于拓扑的生成。
@并且一条Router-LSA中可以包含多个网络信息(StubNet、Transit等)
Type-2 LSA 称为 Network-LSA网络LSA,描述了所连接广播型链路上所连接的拓扑信息:
总的来说Network-LSA相比于LSA Header只增加了2部分:
Netmask:4字节。描述了链路上伪节点所连接的OSPFv2路由器网段信息。
Attached Router:4*N字节。N为链路上连接的路由器数目。
2.1.1.最短路径树的产生(域内)
单链路上拓扑形成–邻居表:
在不考虑区域的情况下(无Summary-LSA和其他路由LSA),仅有Router-LSA和Network-LSA足以对区域内的路径树进行描述。
拓扑信息:Type-1 Router-LSA 中的 PtoP 和 Virtual 网络和 Network-LSA 描述了区域内拓扑信息。
路由信息:StubNet 网络描述了链路的路由信息。
广播网/NBMA使用Transit网络进行描述,PtP和PtMP使用PtP网络进行描述。这里以Transit为主进行描述。
@:Transit 的 Link Data 描述了自己的接口IP(同时OSPFv2的Hello中包含接口掩码)用于向伪节点(DR) (也即,Transit的Link ID) 通告。
@:同时伪节点(DR接口IP)发送 Network-LSA,描述了该网络上所连接的路由器。通过这两个LSA确认自己所在链路上的拓扑状态。
多链路上拓扑形成:LSDB表:
@:路由器检查其他路由器的Router-LSA(先检查同区域同链路)的 Transit 网络,观察其是否有其他链路网络信息。通过Transit网络的 Link ID,确认伪节点网络地址(Link ID)。
@:查找伪节点(该Transit网络的Link ID)产生的 Network-LSA,确认链路上所连接的路由器。
@:不断循环上述过程,可以遍历区域中的所有网络连接。
并且 Transit 类型的 Type-1 Route-LSA 中的 Link Data 包含了接口 IP,可作为生成树/路由表的下一跳。
自动换行
多链路上生成树形成(挂载叶子节点):路由表:
挂载叶子节点也即生成树形成的过程,主要通过开销来判断。
@:路由器的直连网络(Transit网络)其 Metric = 1,P2P链路其 Metric=48。
@:伪节点到网络中路由器的开销为0,因此具有该Transit网络到其他路由器的开销=0+1。P2P=0+48。
@空格行
@:路由器此时具有全网拓扑和全网开销,通过Dijkstra算法计算到达区域内网络的最短生成树。这里的最短通过到达节点的开销最小来确认。
@空格行
@:挂载StubNet网络。StubNet网络实际上是节点/路由器所直连的路由。StubNet直连路由开销为0,也即到达该网络的开销为到达该节点的开销。
2.1.2.接口开销
OSPF的开销使用的是参考值。接口开销=带宽参考值(100M)/接口带宽,取计算结果的整数部分作为接口开销值(当结果小于1时取1)。
@可以在接口上直接更改开销
ospf cost 用于设置接口开销。
@也可在进程中直接修改参考带宽值。
bandwidth-refaerence 用于设置参考带宽。
此外 RFC2328 还定义了开销最大值不超过 LSInfinity = 224-1 = 16777215。
2.2.Summary-LSA
Type-3 Summary-LSA 的概念是和区域的概念紧密相连的。
相比于LSA Header仅增加了三部分:
Netmask:4字节。描述路由掩码。
TOS:1字节。服务类型
Metric:3字节。描述路由开销。
由于 Type-3 Summary-LSA 的 Link state ID 描述了路由前缀/路由子网的网络位,将其与 Netmask 结合便是路由。因此每条 Type-3 Summary-LSA就是一条路由。
OSPF区域的作用主要在于:
1@:支持路由过滤和路由选择,丰富了路由的可操作性。
2@:缩小了OSPFv2的整个自治系统生成树大小。缩小了生成树的改动对全局的影响。注意:总的来说LSDB大小是增大的。
实际上在单个区域内OSPFv2建立了一张SPF最短路径树,而区域边界路由ABR实际上将其他区域的信息改变成了路由信息挂载到ABR上。其他区域的拓扑状态实际上对本区域的设备是不可见的。这样的效果导致了区域内到达区域间的信息,只能通过ABR来操作。有多个ABR时,通过开销Metric来选择。到Summary-LSA的目的网段开销=自己SPF内开销+ABR到目的网段的开销
实际上整个 OSPF 域是由ABR连接起来的多个SPF树。
3@:特殊区域的存在为减轻设备压力提供了可能。末节区域拒绝AS外路由。
2.2.1.区域边界路由ABR
ABR通常有如下特点:
1@:连接多个区域,但必须连接 Area0。且在 Area0 中必须有活动接口。
2@:在区域内产生 Router-LSA 的 Flags 字段的 B-bit 置位进行标识。
3@:当设备为虚链路的端接口时,可认为自己为ABR。
注意的是实际上ABR承担了整个区域向外通信的功能,并将其他区域的信息转化为区域自己的路由信息。因此对设备性能要求较高。
2.2.2.区域间路由选路和防环
区域内通过 Dijkstra 算法产生的 SPF 可以保证区域内通信无环路,而区域间通信主要通过各自ABR上挂载叶子路由 (Type-3 Summary-LSA) 来产生。此时有可能出现环路。为了防止区域间环路进行如下定义。
1@:《RFC2328-3.1.The backbone of the Autonomous System》中定义 Area0 必须物理/逻辑连续,并且始终包含所有区域的边界路由器。
这一描述也可以表述为Area0有且只有一个,并且其他区域只能通过 Area0 进行通信。由于每个区域都是无环的,只要保证区域可以只通过一个区域到达时此时就可消除环路。
然而当一个区域存在多个 ABR(多个出口时),情况发生改变:
AR1 和 AR2 都成为 ABR。AR2 可以接收到 Area0 内 AR1 产生的 Type-3 Summary-LSA (描述其他非Area0的路由),也可以接收到 Area10 内 AR1 产生的 Type-3 Summary-LSA (AR1产生描述其他非Area0的路由)。如果此时通过开销来计算到其他 None-Area0 最短路径,可能引发次优路径和环路风险。
因此进行如下规定
2@:《RFC2328-16.2.Calculating the inter-area routes》中定义如果路由器有多个区域的活动连接,则只检查骨干区域summary-LSAs。
这一描述也可以表述 ABR 为 None-Area0 产生描述其他 None-Area0 区域的 Type-3 Summary-LSA 不会传回 Area0。可以理解为 Area0的type-3 > None-Area0 的type-3。这一行为也称为水平分割。
例如,AR1为Area10产生描述 Area0(也包括非Area0且非Area10) 的 Type-3 Summary-LSA不会传回Area0。(指不会通过改变Adv Router的方式重新产生泛洪)。
而相反可以允许ABR为Area0产生描述非Area0的Type-3 Summary-LSA传回原来的非Area0。但同时进行如下规定防止次优和环路。
3@:《RFC2328-16.2.Calculating the inter-area routes》中定义同一个区域的 Type-1 Router-LSA 优于 Type-3 Summary-LSA。
例如,AR1 作为 Area10 的 ABR 为 Area0 产生描述 Area10 的 Type-3 Summary-LSA 可以由传回 Area10。
这样的规定使得OSPF可以允许非Area0的分裂(不推荐),也即可以将其他不连接的非Area0区域设置相同的Area ID。
2.2.3.区域间路由汇总
区域的一个重要作用就是可以进行路由汇总。OSPFv2有如下汇总原则:
1@:ABR对区域间路由做汇总,只能对直连区域做汇总。
2@:当明细路由全部失效,汇总路由才会失效
3@:汇总路由的开销=明细路由中最大的一个(cisco继承的是最小的)
4@:多个ABR汇总同一个汇总路由,则不处理其他汇总路由。
Note:对于多个ABR汇聚了相同的聚合路由,此时ABR只处理自己产生的汇总路由而忽略其他ABR产生的汇总路由。需要注意的是如果不同区域汇总了相同的路由,这样有可能导致区域间无法通信。
为了降低复杂性5@:当一个非骨干区域(非Area0)存在多个ABR时且需要对非area0进行路由汇总时,建议对ABR上配置相同的路由汇总。因为此时ABR会将汇总路由回馈到非骨干区域(非Area0)。导致环路。
abr-summary用于在ABR上进行路由聚合,并产生对应的 Type-3 Summary-LSA。
2.3.ASBR Summary-LSA和AS-External-LSA
OSPFv2 允许通过 Type-5 AS-EXternal-LSA 引入外部路由,并同时为了正常通信额外定义了 Type-4 ASBR Summary-LSA。Type-4 ASBR Summary-LSA 由 ABR 产生用于描述到达 ASBR 的拓扑信息。
除去LSA Header,Type-5 AS-External-LSA增加了如下字段:
Netmask:4字节。描述路由掩码。
External Type:1比特。服务类型。
OSPFv2的外部路由类型有两种Type1和Type2。默认Type2,此时计算到该外部路由的开销时,忽略AS内开销。Type1则需叠加节点到该ASBR的开销。
TOS:7比特。服务类型
Metric:3字节。描述路由开销。
Forwarding Address:4字节。路径优化地址。
External Route Tag:4字节。为路由打标记。
Type-5 AS-External-LSA 传递了到达 AS 外部的路由信息在全网泛洪。但是泛洪到其他区域时产生如下问题:
路由器知道ASBR(Adv Router)产生了一条外部路由,但是既无到达ASBR的SPF树(Router-LSA)又无到达ASBR的路由,因此无法正常与外部信息通信。
这里需要重点说明的是:这里的无到达ASBR的路由,准确说是指的LSDB中无描述到达ASBR。
重点说明的原因在于:完全有可能ASBR Router ID=1.1.1.1。但是1.1.1.1的地址是其他设备通告的路由信息。重点是如何到达ASBR。
为了解决该问题,专门由ABR为ASBR描述了一条路由信息。Type-4 ASBR Summary-LSA:
Link State ID:以 ASBR Router-id 进行填充。
Advertising Router:Type-4 ASBR Summary-LSA 通常由 ABR 产生, 以 ABR Router-id 填充。
Netmask:4字节。描述路由掩码。《RFC2328的附录A.4.4 Summary-LSAs》中认为 Type 4 ASBR summary-LSAs 的该字段无意义,且必须被置为 0。
TOS:7-bits。服务类型。
Metric:3字节。描述路由开销。
此时可以通过 Type-4 ASBR Summary-LSA 获取到相关路由信息。
Note:Type-4 ASBR Summary-LSA性质与Type-3 Summary-LSA几乎相同。都遵循相似的基本处理原则。
如果只有一个区域,或者在ASBR就在该区域内。此时可以直接通过Router-LSA获取到相关信息,也就不在需要Type-4 LSA。
Type-4 ASBR Summary-LSA 的作用在于,ABR通过该LSA通知区域内的路由器可以通过自己到达ASBR。随后其他路由器通过区域内 Type-1 Router-LSA 和 Type-2 Network-LSA 进行计算路由下一跳。
2.3.1.外部路由开销和选路
OSPFv2 的 AS-External-LSA 在 External Route Tag 字段中携带了两种外部路由类型 external path-type,并且在《RFC2328的16.4.Calculating AS external routes》中定义:
Type-1 External路由:开销=到 ASBR/FA 的 link state metric + external metric。
Type-2 External路由:开销=external metric。
default cost用于设置ospf external metric。取值范围0-16777214,HW默认取1。
default tag用于设置ospf tag,可用于路由策略。取值范围0-4294967295,HW默认取1。
default type用于设置ospf external path-type,HW默认为Type-2 external paths。
自动换行OSPF AS-External-LSA相关信息示例。
同时 OSPF 域中可能存在与外部路由相同前缀的路由以及多个 ASBR 可能引入相同的外部路由,因此《RFC2328的16.4.Calculating AS external routes》中还定义了如下路由优选原则:
在此处忽略某些明显不符合要求的程序比较原则。例如忽略 LSA cost=LSInfinity,忽略 LS age=MaxAge,忽略自己产生的 AS-external-LSA。详细比较原则可查看相关资料。
1@:Intra-area 路由和 inter-area 路由总是优于 AS external 路由。
2@:Type 1 external 路由总是优于 Type 2 external 路由。都为 Type 2 external 路由优选开销小的路由。
3@:如果无法区分且不兼容 RFC1583 中的定义,则依照《RFC2328的16.4.1.External path preferences》中原则进行选择。
《RFC1583的16.4.Calculating AS external routes》中认为AS external路由的选路可通过比较AS external路由的开销来决定。如果开销一致,HW 取 area id 大的路径。
自动换行
《RFC2328的16.4.1.External path preferences》中的规则适用于不兼容RFC1583情况。此时,当可以通过多个area访问同一ASBR时,或者当试图决定应优选几个AS-external-LSAs中的哪一个时生效(访问不同ASBR)。其规则如下:
1@:使用非骨干域(非area 0)的Intra-area路径。
这里指的实际上是:也即两条路径都是Intra-area路径时,优选非骨干域(非area 0)。
2@:其他路径中,intra-area骨干域路径和inter-area路径具有相同优先级。
这里指的实际上是:也即两条路径不都是Intra-area路径时,比较开销。如果开销一致,HW 取 area id 大的路径。
自动换行
《RFC2328的附录C. Configurable Constants》认为默认应兼容RFC1583,并且OSPF域应当保证所有的路由器具有相同的RFC2328的兼容性以防止环路,即OSPF域所有的路由器应当全部兼容或全部不兼容RFC1583。
4@:如果仍然无法区分则根据最低 cost 原则选择首选路径。
第4条规则指:
对于 Type 1 external 路由,应选择到 ASBR/FA 的 link state metric + external metric 之和中较小者。
对于 Type 2 external 路由,应选择到 ASBR/FA 的 link state metric 中较小者。
《RFC2328的16.4.1.External path preferences》中提到 FA=0,则转发至ASBR本身。
这里给出Huawei针对不同场景下的选路原则示例(仅供参考不保证实际效果,且不考虑两个OSPF路由器有多个邻居的情况):
场景1:
AR1(ABR) 既可以通过 Area10 的 Type-1 Router-LSA(非骨干域的Intra-area路径),又可通过 Area0 的 Type-1 Router-LSA(骨干域的Intra-area路径) 可达 AR3(ASBR) 通告的外部路由时。
Note:或者AR1、AR3和AR4位于其他的非骨干区域(非Area0)时。
AR1(ABR)优选开销小的,开销相同优选非骨干区域(非Area0)的路径,有多个非骨干区域(非Area0)的路径优选Area ID大的路径。
场景2:
AR1(ABR) 既可以通过 Area10 的 Type-4 ASBR Summary-LSA(非骨干域的Inter-area路径),又可通过 Area0 的 Type-1 Router-LSA(骨干域的Intra-area路径) 可达 AR4(ASBR) 通告的外部路由时。
AR1(ABR)优选Area0(骨干区域)的路径。
场景3:
AR1(ABR) 既可以通过 Area10 的 Type-1 Router-LSA(非骨干域的Intra-area路径),又可通过 Area0 的 Type-4 ASBR Summary-LSA(骨干域的Inter-area路径) 可达 AR2(ASBR) 通告的外部路由时。
AR1(ABR)优选开销小的,开销相同优选非骨干区域(非Area0)的路径。
场景4:
AR1(ABR) 既可以通过 Area10 的 Type-4 ASBR Summary-LSA(非骨干域的Inter-area路径),又可通过 Area0 的 Type-4 ASBR Summary-LSA(骨干域的Inter-area路径) 可达 AR5(ASBR) 通告的外部路由时。
AR1(ABR)优选骨干区域(Area0)的路径。
Note:实际上Type-4 ASBR Summary-LSA就是一种独特的Type-3 Summary-LSA。单独为区域中的某台ASBR设备描述路由信息的LSA。区别在于Type-4的LS ID不是网络号,而是ASBR的Router ID。因此Type-4 ASBR Summary-LSA的选路和Type-3 Summary-LSA非常相同。
自动换行
2.3.2.转发地址Forwarding Address
转发地址 Forwarding Address 主要用于外部路径的优化,在有多个 ASBR 可达 FA 时有意义。
例如:
AR2和 AR3 连接在了同一个局域网,此时 AR2 作为 ASBR 引入通向该局域网的外部路由时,AR4 具有机会优化路径,通过 AR3(指向AR3的开销更小) 到达 AR1/AR2/AR3 所在局域网。
转发地址 Forwarding Address 非 0 条件如下:
1@:引入路由的下一跳被宣告进 OSPF 进程,用于开销计算。
2@:下一跳地址链路为广播网/NBMA。只有广播型链路才有优化的可能。
3@:外部接口不是 silent-interface。
2.4.NSSA-LSA-RFC3101
在《RFC3101-The OSPF Not-So-Stubby Area Option》中新定义了 Option 字段中的 N/P-bit 位,同时定义了 Type-7 Nssa-LSA 非完全末节区域 LSA。
Type-7 Nssa-LSA 与 Type-5 AS-External-LSA 几乎完全相同,只是为了非完全末节区域的引入外部路由的需要。
Netmask:4字节。描述路由掩码。
External Type:1-bit。服务类型。
TOS:7-bit。服务类型。
Metric:3字节。描述路由开销。
Forwarding Address:4字节。路径优化地址。
External Route Tag:4字节。为路由打标记。
2.4.1.NSSA区域中的转发地址
转发地址 Forwarding Address 主要用于外部路径的优化,而且在有多个 ASBR 可达FA时有意义。
NSSA 区域对 FA 地址的定义新增了如下两种情况:
1@:如果引入该路由器的环回口被宣告进OSPF时(可用),填充该环回口
2@:否则选择该路由器第一个up起来的OSPF进程接口
因此几乎7类Nssa-LSA的FA是必带的。一种不存在FA的情况是NSSA区域ABR产生的缺省路由 Type-7 Nssa-LSA。
在 Nssa 区域的 ABR 进行 Type-7 NSSA-LSA 转 Type-5 AS-External-LSA 时,对于非 Nssa 区域的设备来说认为该 ABR 也是一个 ASBR。有多个 ABR/ASBR 时,多台 ABR/ASBR 都将可以进行7转5。而且此时对 OSPF 的其他区域来说外部路由的信息被 Nssa 区域隐藏了起来,因此 FA 地址存在的必要性为路径优化提供可能。
nssa translator-always用于强制 NSSA 区域的ABR进行7转5。此时在NSSA区域的该设备进行Type-1 Route-LSA泛洪时会将 Nt-bit 置位进行标识。
Nt-bit 置位的 Type-1 Route-LSA。
手动指定多台设备进行7转5时,需要防止环路。这样就可能存在次优路径,因此额外条件携带的FA可以提供路径优化。也可通过命令对FA地址进行抑制。
nssa suppress-forwarding-address 用于将通过该NSSA ABR转换后生成的Type5 LSA的FA(Aaddress Forwarding)设置为0.0.0.0。
2.4.2.Nssa的其他命令特性
default-route-advertise:ABR上产生Type7 LSA缺省路由;ASBR上只有本地存在缺省路由时,才会产生Type7 LSA缺省路由。
flush-waiting-timer:及时清除其他交换机上已经没用的Type5 LSA。设置Type5 LSA的LS age=3600。
no-import-route:Nssa的ABR上使用,拒绝该ABR引入的外部路由通告到NSSA区域。(但可以正常传给非Nssa区域,此时相当于ASBR)
no-summary:Nssa的ABR上使用,不引入Type-3 LSA。相当于total Nssa。
set-n-bit:与邻居交换机同步时在DD报文中设置N-bit位的标志。用于是否进行7转5标识。
translator-interval:用于转换器切换过程,保障切换平滑进行。
zero-address-forwarding:Nssa的ABR上使用,ABR引入外部路由时(此时相当于ASBR),将生成的NSSA LSA的FA置为0.0.0.0。
2.5.虚链路virtual-link
通过指定对端的Router ID来将两台非 Area0 骨干域的路由器直接建立为具有 Area0 骨干域的邻居。这样建立的邻居链路称为虚链路virtual-link。
vlink-peer 用于指定所需建立虚链路关系的OSPF路由器Router-id。此时v-link的报文是单播发送的,报文的源目的IP是通过对端Router ID的LSDB来确认接口IP的。该接口IP是相互通信的出接口IP(可能有多个可通信接口的情况)。
自动换行
并且需要说明的是虚链路virtual-link的邻居关系无法直接查看
需要通过display ospf vlink来查看虚链路virtual-link的邻居关系。
虚链路的生成树:
在指定建立v-link时,OSPF将自己的Router-LSA的Flags位(V-bit)进行标识。在同一个区域接受到该V-bit置位的Router-LSA随后在LSDB中发现该Router-ID产生的LSA信息。随之建立生成树,加载叶子路由信息。
虚链路的特性:
1@:virtual Link属于骨干区域area0
2@:只能跨越一个非骨干区域。
因为Router-LSA只能在一个区域内传递,跨越了多个非骨干区域则无法进行生成树计算
3@:特殊区域无法建立虚链路。
这里的特殊区域指的是末节区域,nssa等。因此处于骨干区域的虚链路是要求传递路由信息的。
虚链路的防环:
1@:根据vlink传递type-1类和type-3类的LSA,不会再次传入vlink途径区域
2@:无法在vlink所在区域(途径区域)对骨干域进行路由汇总。防止路由聚合导致的黑洞/环路。
3@:vlink传递的type-3 LSA如果在所经过的区域不存在。则不能泛洪给其他区域。
vlink链路途径的区域如果不存在vlink传递的Type-3 LSA,则Vlink的ABR不会将该Type-3 LSA传递给其他区域。
3.LSA处理
区域的划分一个重要的优势是可以对区域的LSA进行相应的处理。
3.1.路由汇总实例
由于ABR是区域对外通信的关键节点(向区域外的通信节点)。因此可以在ABR上进行路由汇总。
abr-summary < IP/subIP >< mask >用于对区域间通信的路由进行汇总。但值得注意的是该命令实际是对区域的Type-1 Router-LSA和Type-2 Network-LSA进行汇总用于向其他区域通信。
例如:在AR2配置如上命令
ospf 10
area 10
abr-summary 10.0.0.0 255.0.0.0
#
时,实际是对AR1的叶子Router-LSA StubNet网络10.1.1.0/24进行汇总用于向其他区域(Area0和Area20)汇总。
3.1.1.abr-summary
1@:ABR对区域间路由做汇总,只能对直连区域做汇总。
这里的直连区域值得是需要作为ABR连接多个区域。因为需要收到区域的Type-1 Router-LSA和Type-2 Network-LSA。
2@:当明细路由全部失效,汇总路由才会失效。并且继承明细路由开销时,继承的是最大的(cisco继承的是最小的)
区域内可能有多条明细路由,当所有明细路由失效时汇总路由才失效
3@:多个区域的ABR汇总同一个汇总路由,则ABR不处理其他ABR的汇总路由。或者可以解释为ABR不处理自己产生的汇总Type-3 Summary-LSA,也不处理其他ABR产生的相同路由的Type-3 Summary-LSA。
4@:一个非Area0区域多个的ABR建议进行相同的汇总配置。由于OSPF的区域间防环机制,非Area0的Type-3可以传回非Area0而Area0的Type-3不可以传回Area0。如果不进行相同的汇总可能会导致环路。
abr-summary 10.0.0.0 255.0.0.0 not-advertise命令中的not-advertise参数可用于进行路由过滤,也即将区域内路由信息不向其他区域进行路由通告。
3.1.2.asbr-summary
OSPF也支持对外部路由的汇总。
与ABR上进行路由汇总参数类似。
ASBR新增了2个参数。
asbr-summary < IP/subIP > < mask > tag:给外部路由做标记。可用于进行路由策略,用于OSPF和BGP路由传递时的防环等。
asbr-summary < IP/subIP > < mask > distribute-delay:延迟发布聚合路由。用于进行使每次发布的聚合路由信息中包含更多的有效路由,避免网络振荡而出现路由信息不准确的现象。
3.2.路由过滤
filter过滤-过滤Type-3 Summary-LSA:在ABR上使用根据策略过滤路由。(路由策略)。
其中的export和import分别表示在出区域方向过滤和入区域方向过滤
import过滤-过滤Type-5 AS External-LSA和Type-7 Nssa-LSA:在引入外部路由时根据策略过滤路由。(路由策略)
根据定义的route-policy策略进行路由过滤。该动作为满足route-policy才可进行引入。
filter-policy过滤:根据定义的动作进行过滤。
需要注意的时filter-policy定义了引入时的方向:
import:表示用于ospf内部路由过滤,可收到LSA。
export:表示用于ASBR(只在ASBR上生效)上过滤AS External-LSA和NSSA-LSA。不可收到LSA。
自动换行
其他过滤:
针对P2MP邻居过滤LSA:filter-lsa-out peer。
针对接口邻居过滤LSA:ospf filter-lsa-out。
asbr-summary/abr-summary <> not-advertise:汇总路由而不通告路由。
LSA其他特性
不同LSA的三要素对比
LSA类型 | 作用 | 三要素 |
---|---|---|
Router-LSA | 描述设备所连接链路和开销,产生区域泛洪 | LS Type=1 Link State ID=自己Router ID Adv router=自己Router ID |
Network-LSA | DR描述本网段链路状态,产生区域泛洪 | LS Type=2 Link State ID=伪节点Router ID Adv router=DR Router ID |
Summary-LSA | ABR描述区域内网段路由,产生区域泛洪 | LS Type=3 Link State ID=网段号 Adv router=ABR Router ID |
ASBR Summary-LSA | ABR描述到ASBR的路由,产生区域泛洪 | LS Type=4 Link State ID=ASBR Router ID Adv router=ABR Router ID |
AS-External-LSA | ABR描述到AS外的路由,AS泛洪 | LS Type=5 Link State ID=网段号 Adv router=ASBR Router ID |
Nssa-LSA | ABR描述到AS外的路由,末节区域泛洪 | LS Type=7 Link State ID=网段号 Adv router=ASBR Router ID |
LSA的唯一性
通过LSA的三要素确认。
Link Stata Type=LS 类型,Link State ID=LS链路状态ID,Adv Router=通告路由器。
Note:通告路由器与传递LSA的路由器不一定一致。LSA只有产生/始发的路由器有权限进行删改,(仅仅只包含三要素,某些字段还是可以更改),在多个链路多个区域传递时会由其他DR/ABR进行转发。此时,DR/ABR将其LS age字段添加InfTransDelay间隔(考虑链路延时)后进行传递。
LSA新旧
同一条(由三要素确认一条)LSA依次通过以下字段判断LSA的新旧。
RFC2328对其描述可见OSPFv2 RFC2328文档的第13.1章节。
1@Sequence Number越大越新
2@CheckSum越大越新(LSA中的CheckSum字段而非OSPFv2 Header中的CheckSum)
3@LS Age=3600s时认为最新
4@LS Age差>MaxAgeDiff=15min时,认为LS Age更小的更新
5@LS Age差<MaxAgeDiff=15min时,认为两条LSA新旧一致
LSA的泛洪
1@当运行OSPFv2的路由器链路状态发生改变时,重新产生LSA泛洪。Sequence Number+1,LS age=0s。
2@每隔LSRefreshTime=30min间隔后,产生/始发LSA的路由器重新产生LSA泛洪。每隔MaxAge=60min后,将其老化删除(期间未收到更新的LSA)。
Note:OSPFv2通过将MAxAge设置为60min,将LSA在AS内进行删除。这一行为称为“提前老化(premature aging)”。此时LS sequence number不发生改变。
3@LSA的产生间隔最小为MinLSInterval=5s,在5s内无法重新产生。而接收新LSA实例时必须经过的最短时间为MinLSArrival=1s。
LSA在网络/接口上进行泛洪时,
1@首先检查邻居状态。邻居状态应不低于Exchange状态。且与此邻居相关的链路状态请求列表中LSA比将要泛洪的LSA新。
(Note:相应的LSA也必须满足要求,比如Type-5 AS-External-LSA不在末节区域泛洪)
2@如果接收到新的LSA是从DR或BDR发出的,则不进行泛洪
3@进行泛洪时LS Age字段添加InfTransDelay后发出。且如果自身为DR/BDR时发送给地址224.0.0.5,为DROthers时发送给DR/BDR的224.0.0.6即可。
LSA携带相同网络位路由
在工程上,很有可能存在多条网络位相同的路由。例如
10.0.0.0/24
10.0.0.0/16
10.0.0.0/8
而 LSA 的唯一性是通过 LSA 的三要素来实现的。(OSPF LSR报文中就只请求LSA的三要素)。此时就会遇到路由 LSA 无法区分的问题。
这里路由LSA包括了Summary-LSA,AS-External-LSA和Nssa-LSA。
为了避免这种情况《RFC2328的附录E.一种分配链路状态ID的算法》进行了定义:
10.0.0.0/24 使用 Link State ID = 10.0.0.255
10.0.0.0/16 使用 Link State ID = 10.0.255.255
10.0.0.0/8 使用 Link State ID = 10.0.0.0
也即使用路由的广播位作为Link State ID。
其他细节点
OSPFv2的认证
基于以上报文介绍,对OSPFv2的认证方式总的来说有2种:接口认证和区域认证。接下来对其进行简单介绍。
接口认证:
OSPFv2 是链路状态协议。所有协议包以接口为基础进行划分,每个接口只能具有一种状态。而路由器自身却可以有多种类型接口。在接口上进行认证,会对 OSPFv2 Header 的 Auth Type 和 Auth Data 字段进行相应处理。当接口接收到数据包对其检查时,会直接丢弃报文。因此两台路由器只能建立 1-way 连接。这一点不同于(integrate) ISIS,ISIS 的 TLV 方式会忽略无法识别的字段。在特定场景下会在一端形成 2-way 连接。
启用接口认证的邻居路由器必须相应字段协商一致才可建立邻居关系,此处对认证的算法不在进行详细介绍。
OSPF的接口认证。
区域认证:
相比于接口认证,区域认证要求整个区域都进行认证。具体来说,是在运行了区域认证的路由器上要求所有运行了OSPF的接口进行认证。因此,从这个角度严格来说并不一定所有设备都进行认证才能建立起邻居。
例如同一个区域的4台路由器AR1和AR2配置了区域认证,而AR3和AR4未进行配置,则AR1和AR2可以正常建立邻居,AR3和AR4可以正常建立邻居,而AR2和AR3无法建立邻居。
区域认证实例。
影响OSPFv2邻接/邻居建立的因素
从OSPFv2的协议报文中可以得到影响邻接邻居建立的因素如下
头部要求:
1、version一致
2、Router ID不冲突
3、Area ID一致
4、CheckSum一致(校验是否存在字节丢失)
5、认证及认证类型一致(用于数据加密)
Hello要求:
6、掩码一致(广播网和NBMA进行校验)。广播网和NBMA默认同网络同掩码。
7、Hello Interval一致,默认10s(必须一致)
8、Dead Interval一致,默认Hello Interval*4=40s(必须一致且比Hello Interval大)
9、Options一致(描述了路由器自身OSPFv2功能的支持能力,例如E-bit和N-bit)
10、Dr Priority,默认1(广播网和NBMA进行校验必须都不为0才能进行DR选举)
其他要求:
11、接口MTU1500(DBD报文要求,华为不检测并将该字段默认设置为0,思科进行检测。影响邻接建立)。实际上只要接受DBD的该字段不比自身大即可。
ospf mtu-enable 用于使能接口在发送DD报文时以接口MTU填充值,同时还会检查邻居DD报文所携带的MTU是否超过本端的MTU值。当邻居的MTU不超过本端的MTU值时,可建立邻接关系。
自动换行
在IPv6网络的OSPFv3中,同样需要考虑MTU的相关设置。但是华为将OSPFv3的DD报文的MTU默认设置为接口IPv6 MTU=1500。
ospfv3 mtu-ignore用于设置不对DD报文中MTU字段进行检查。填充值仍以接口IPv6 MTU进行填充。
其他细节
华为将 Loopback 宣告进 OSPF 进程中时,默认为 PtoP 网络类型开销为 0。尽管有时候 Loopback 的掩码不是 32 位的,此时会将接口地址以 32 位形式形式进行通告。
OSPF中Loopback接口参数示例。
OSPF network-type指定更改OSPF宣告网络类型。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/104791.html