本文是OSPF协议详解系列的第二部分,深入探讨了链路状态通告(LSA)的各种类型及其在OSPF网络中的作用。文章详细阐述了OSPF路由器如何利用LSA构建链路状态数据库,并逐一介绍了Type 1到Type 5以及Type 7等核心LSA的特点、传播范围和生成机制。此外,本文还详细解析了OSPF邻居关系的建立过程,包括影响邻接的属性、邻居状态的转换流程,以及多路访问网络中指定路由器(DR)和备份指定路由器(BDR)的选举机制与行为。
LSA是Link-State Advertisements的缩写。在第一部分中,我们介绍了路由器之间进行LSA的传递和交换。而LSA包括路由器接口信息,邻居信息,链路开销等数据。路由器则靠着这些LSA来构建链路状态数据库并生成路由表。它一共有如下的11种LSA。
LSA Type | Name | |
---|---|---|
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) | |
LSA Type 9 | OSPF Link Scope Opaque (OSPFv2) / Intra Area Prefix LSA (OSPFv3) | |
LSA Type 10 | OSPF Area Scope Opaque LSA | |
LSA Type 11 | OSPF AS (Autonomous System) Scope Opaque LSA |
通过查看LSDB来分析下面的输出。
在链路的信息部分,根据连接到的网络类型不同,Link ID的值也是不同的。
Link Type | Description | Link ID |
---|---|---|
1 | 点到点连接到另一台路由器 | 邻居的RID |
2 | 连接到多路访问网络 | 指定路由器的IP地址 |
3 | 连接到末节网络 | 网段的网络地址 |
4 | 虚链路 | 邻居的RID |
通过查看LSDB来分析下面的输出。
通过查看LSDB可以看出在这个Area 1的网络中宣告3类LSA的路由器的RID是10.23.23.2。
OSPF路由器每30分钟会更新其产生的LSA。LSA的序列号会增加,通过序列号来比较谁是最新的条目。每条LSA都有一个老化的计时器,设置为60分钟。如果60分钟内,LSA没有被更新,则会被从LSDB移除。如果收到了更新,则计时器重置。
在不连续的区域之间会用到虚连接,通过虚连接学到的LSA会被打上DNA(DoNotAge)的标识。这是因为虚链路被认为是demand circuit。这时,通过虚链路学到的LSA不会老化。
当路由器收到一条新的LSA,首先检查是否在LSDB中,LSA的序列号是否相同,新旧的LSA的序列号谁的更大一些。如果需要更新LSA,则添加到LSDB,发送收到LSA的回执,泛洪新的LSA,重新运行SPF并计算新的路由表。
路由器通过交换Hello包来发现邻居关系。在检查Hello包中的特定参数或是选项后,路由器才可以宣布邻居起来了。
Hello包里携带的邻接属性直接影响链路两端的路由器能否建立起邻居关系。
当邻接属性不一致的情况下,大概略邻居关系不会起来,列举一些案例。
*Oct 1 14:54:57.432: OSPF-1 HELLO Gi1: Rcv hello from 1.1.1.1 area 0 10.0.13.1
*Oct 1 14:54:57.432: OSPF-1 HELLO Gi1: Mismatched hello parameters from 10.0.13.1
*Oct 1 14:54:57.432: OSPF-1 HELLO Gi1: Dead R 40 C 40, Hello R 10 C 10 Mask R 255.255.255.252 C 255.255.255.0
*Oct 1 15:12:19.019: OSPF-1 ADJ Gi1: Route adjust notification: UP/UP
*Oct 1 15:12:19.019: OSPF-1 ADJ Gi1: Interface going Up
*Oct 1 15:12:19.020: OSPF-1 ADJ Gi1: Interface state change to UP, new ospf state P2P
*Oct 1 15:12:47.692: OSPF-1 ADJ Gi1: 2 Way Communication to 1.1.1.3, state 2WAY
*Oct 1 15:12:47.692: OSPF-1 ADJ Gi1: Nbr 1.1.1.3: Prepare dbase exchange
*Oct 1 15:12:47.692: OSPF-1 ADJ Gi1: Send DBD to 1.1.1.3 seq 0x1120 opt 0x52 flag 0x7 len 32
*Oct 1 15:12:47.693: OSPF-1 ADJ Gi1: Rcv DBD from 1.1.1.3 seq 0x18E0 opt 0x52 flag 0x7 len 32 mtu 3000 state EXSTART
*Oct 1 15:12:47.693: OSPF-1 ADJ Gi1: Nbr 1.1.1.3 has larger interface MTU
首先双方都要意识到对方的存在,也就是要达到一个2-Way的邻居。其次,双方同步LSDB信息完成后形成Full的邻居。
以直连的R1和R2为例,两个阶段的详细步骤如下:
对于多路访问网络,譬如以太网的广播网络,网络内的所有路由器会先选择DR(指定路由器)和BDR(备份指定路由器)。DR/BDR的选择机制是基于Hello包内携带的优先级参数(0-255),其规则如下:
DR/BDR的行为:
DR的选举过程:
R1# sh ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1 2WAY/DROTHER 00:00:38 10.1.1.2 Ethernet0/0
3.3.3.3 1 2WAY/DROTHER 00:00:39 10.1.1.3 Ethernet0/0
4.4.4.4 1 2WAY/DROTHER 00:00:38 10.1.1.4 Ethernet0/0
R1# sh ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1 2WAY/DROTHER 00:00:39 10.1.1.2 Ethernet0/0
3.3.3.3 1 FULL/BDR 00:00:32 10.1.1.3 Ethernet0/0
4.4.4.4 1 FULL/DR 00:00:31 10.1.1.4 Ethernet0/0
📚 延伸阅读
更多内容持续更新于我的博客:https://www.zenseek.site
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。