目录
1.OSPF接口状态
2.OSPF邻居状态
2.1 OSPF邻居状态类型
2.2 广播网络OSPF邻接关系建立
3.Router ID(路由器ID)选举
4.DR和BDR选举
4.1 为什么引入DR和BDR?
4.2 DR和BDR的作用
4.3 DR和BDR选举过程
4.4 DR和BDR选举原则
5.OSPF路由计算原理
1.OSPF接口状态
OSPF接口总共有7种状态:
Down(接口关闭):接口被管理员关闭或者检测到故障。
Loopback(环回):接口配置为环回接口,用于本地测试或管理目的。
Waiting(等待):接口正在等待与邻居建立邻居关系。
Point-to-Point(点对点):接口与单个邻居之间建立了邻居关系。
DR(Designated Router):接口被选举为DR,用于在多点连接上减少链路状态广播的数量。
Backup(备份):接口被选举为备份DR,作为DR故障时的替代。
DR Other(DR其他):接口不是DR或备份DR,但在多点连接中仍然具有邻居关系。
DR Waiting(DR等待):接口正在等待与DR建立邻居关系。
2.OSPF邻居状态
2.1 OSPF邻居状态类型
Down(关断):表示邻居关系处于关闭状态,没有建立连接。
Attempt(尝试):表示路由器正在尝试与邻居建立连接。
Init(初始化):表示邻居关系正在初始化过程中,还未完成。
2-Way(双向):表示邻居路由器已经收到了对方的Hello报文,表明双方的邻居关系已经建立。
Exstart(启动):表示邻居路由器正在进行Master/Slave角色的选举过程。
Exchange(交换):表示邻居路由器正在交换链路状态数据库(LSDB)信息。
Loading(加载):表示邻居路由器正在加载链路状态信息,并更新自己的路由表。
Full(完全):表示邻接关系已经完全建立,路由器之间的信息同步完成。
邻居关系和邻接关系有什么区别?
邻居关系指的是2-Way状态,处于邻居关系的OSPF接口不能进行LSA信息交换,DR Other接口之间只能形成邻居关系。
邻接关系指的是Full状态,完成了LSA交换的OSPF路由器将建立邻接关系,DR,BDR和其他OSPF接口形成的是邻接关系。
2.2 广播网络OSPF邻接关系建立
在讨论邻居关系的时候,我们一定得分场景(OSPF网络类型)去讨论,不同的场景邻接状态会有一定的差异,我们以广播网络来进行分析和讨论。
图 2-1 广播网络OSPF邻接关系建立
3.Router ID(路由器ID)选举
当一个路由器运行OSPF协议时,它需要选择一个唯一的路由器ID(Router ID)来标识自己。
路由器ID在OSPF网络中非常重要,它用于识别路由器、区分LSA(链路状态广告)和确定OSPF路由的计算。
OSPF路由器ID选举的过程如下:
- 手动配置:管理员可以手动配置路由器ID,手动配置的路由器ID优先级最高,如果手动配置了ID,则将使用该ID。
- Loopback接口IP:如果没有手动配置的路由器ID,那么路由器将从其所有接口的IP地址中选择一个最高的IP地址作为路由器ID。通常情况下,Loopback接口的IP地址具有最高优先级,因为它们是稳定且通常不会更改的。
- 物理接口IP:如果没有Loopback接口或没有可用的Loopback接口,那么将选择具有最高优先级的物理接口的IP地址作为路由器ID。接口优先级可以通过配置进行调整。
- 最高MAC地址:如果以上选项都不可用,则将使用具有最高MAC地址的物理接口作为路由器ID。
需要注意的是,一旦路由器ID被选定,它将在OSPF进程的整个生命周期内保持不变,除非手动更改或重新启动OSPF进程。
图 3-1 Router ID选举优先级
4.DR和BDR选举
4.1 为什么引入DR和BDR?
OSPF引入了DR(Designated Router)和BDR(Backup Designated Router)的概念,为了减少链路状态广告(LSA)的洪泛以及减轻网络负载。
如图 4-1,未选举DR和BDR的广播网络,路由器之间的邻接关系数量为n*(n-1)/2,图种6个OSPF路由器的邻接关系数量为6*(6-1)/2 = 15,路由器越多邻接关系越复杂。
选举DR和BDR的广播网络,路由器只需和DR和BDR建立邻接关系即可,这样邻接关系数量会大大的减少。
图 4-1 引入DR和BDR的好处
4.2 DR和BDR的作用
DR是网络中被选举为主要路由器的路由器,它负责收集并分发LSA,其他路由器只需将LSA发送给DR即可。
BDR是备份的DR,它接收LSA并保存备份数据,以便在DR失效时接替其角色。
4.3 DR和BDR选举过程
DR和BDR选举是在OSPF邻居关系建立阶段进行的。当一个路由器与其他路由器建立邻居关系时,它们会交换Hello报文。 在Hello报文中,路由器会宣告自己的优先级(Priority)。默认情况下,所有路由器的优先级都是1。
当一个路由器收到Hello报文时,它会比较对方的优先级和自己的优先级。如果对方的优先级大于自己的优先级,那么它会接受对方作为DR,并将自己作为BDR。 如果对方的优先级与自己的优先级相同,那么会比较对方的路由器ID(Router ID)。路由器ID是由路由器在OSPF进程中唯一标识自己的32位数字。 如果对方的路由器ID较大,那么它会接受对方作为DR,并将自己作为BDR。
如果路由器没有被选举为DR或BDR,则它将是普通的OSPF路由器,只需要将LSA发送给DR和BDR。
需要注意的是,DR和BDR选举是相对于一个OSPF区域(OSPF Area)而言的。在不同的区域中,会进行独立的DR和BDR选举。
通过DR和BDR的选举,OSPF能够减少LSA洪泛,提高网络效率,并减轻网络负载。同时,如果DR失效,BDR将接替其角色,保证网络的稳定性和可靠性。
图 4-2 广播网络DR和BDR选举过程
4.4 DR和BDR选举原则
(1)选举制
DR和BDR不能通过人工配置,只能通过选举产生。
(2)终生制
DR和BDR一旦被选举出来将不会改变,路由器无法抢占成为DR或者BDR。
(3)继承制
如果DR发生故障,BDR将被选举位DR,其他路由器竞选BDR。
5.OSPF路由计算原理
OSPF使用SPF(Shortest Path First)算法来计算最短路径,并选择最佳的路由。
SPF算法的原理如下:
-
构建拓扑图:每个OSPF路由器根据收到的链路状态信息(LSA)构建一个拓扑图,其中包含网络、链路和路由器节点。
-
计算最短路径树:每个OSPF路由器使用Dijkstra算法计算从自己到其他所有节点的最短路径。该算法通过比较各个路径的总代价(通常是链路成本之和)来确定最短路径。
-
构建转发表:每个OSPF路由器根据最短路径树构建转发表,将每个目标网络映射到下一跳路由器。
-
更新链路状态数据库:当网络中发生链路状态变化时,每个OSPF路由器将更新自己的链路状态数据库,并重新计算最短路径树。
通过这样的方式,OSPF能够动态地适应网络中的变化,并选择最佳的路径来转发数据包。这种基于SPF算法的计算方式使得OSPF成为了一种高效可靠的路由协议。