OSPF路由协议详解
OSPF(Open Shortest Pass First 开放最短路径优先),一个链路状态协议。
区别于距离矢量路由协议,OSPF每个路由器都掌握所在区域上所有路由器的链路状态信息,了解整个网络的拓扑情况,因此可以独立的计算出到达任意目的地的路由。
另外介绍一下RIP的缺点:RIP是一步一步和邻居问路,走一步看一步,并且RIP以跳数为计算方式,不科学。
OSPF特点
OSPF是无类路由协议,支持VLSM。(可变长度子网掩码)
组播地址224.0.0.5代表所有OSPF路由器的组,224.0.0.6代表DR(指定路由器 DesignatedRouter) /BDR(备份指定路由器 BackupDesignatedRouter)
可以把组播地址看成一个微信群号,任何成员(组播源)往微信群(组播IP)里发送消息(组播数据),这个群里的成员(组播接收者)都会接收到此消息。
SPF(最短路径优先算法)
SPF算法也被称为Dijkstra算法,这是因为最短路径优先算法SPF是由荷兰计算机科学家狄克斯特拉于1959年提出的。 SPF算法将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。
OSPF支持认证。
OSPF支持报文验证功能,只有通过验证的报文才能接收,否则将不能正常建立邻居关系。 OSPF协议支持两种认证方式——区域认证和链路认证。 使用区域认证时,一个区域中所有的路由器在该区域下的认证模式和口令必须一致; OSPF链路认证相比于区域认证更加灵活,可专门针对某个邻居设置单独的认证模式和密码。 如果同时配置了接口认证和区域认证时,优先使用接口建立OSPF邻居。 每种认证方式又分为简单验证方式、MD5验证模式和Key chain验证模式。 简单验证模式在数据传递过程中,认证密钥和密钥ID都是明文传输,很容易被截获; MD5验证模式下的密钥是经过MD5加密传输,相当于简单验证模式更为安全; Key chain验证模式可以同时配置多个密钥,不同密钥可单独设置生效周期等。 # 原文链接:https://blog.csdn.net/weixin_57636278/article/details/121036855
OSPF区域及其作用
OSPF协议中的区域(Area)概念用于优化大型网络的路由管理。通过将网络划分为多个区域,OSPF减少了路由器的负载,提高了网络的扩展性和稳定性。每个区域内的路由器只维护本区域的链路状态信息(LSDB),避免链路状态数据库过大,有助于OSPF在大型网络中的高效应用,并通过骨干区域(Area 0)与其他区域交换路由信息。
一、OSPF区域的两大分类:
骨干区域(Area 0):
必须有且唯一:每个OSPF网络中必须有一个骨干区域,且只能有一个。
连接其他非骨干区域:骨干区域必须连接所有非骨干区域,负责区域间的路由信息传递。
一般无终端用户:骨干区域通常不包含终端用户。
非骨干区域:
根据实际需求划分:这些区域根据网络拓扑和终端用户分布进行划分。
必须连接Area 0:所有非骨干区域必须直接或间接与Area 0相连,用来连接终端用户和资源。
二、OSPF区域的详细分类(基于外部路由关系):
标准区域(Standard Area):
可以接收完整的链路状态更新和路由汇总信息,具备基本的区域特性。
骨干区域(Area 0):
除了承担标准区域的功能外,还负责在不同区域间传递路由信息。
存根区域(Stub Area):
不接收来自自治系统(AS)外部的路由信息,仅依赖默认路由访问外部网络,减少路由表大小。
完全存根区域(Totally Stub Area, TStub):
不接收外部AS路由信息及其他区域的路由信息,仅依赖默认路由,这进一步减少了路由表中的信息量。
不完全存根区域(Not-So-Stubby Area, NSSA):
类似于存根区域,但允许接收通过LSA Type 7发送的外部路由信息,并将其转换为LSA Type 5,以便在其他区域中传播。
路由器身份
一、从整体网络视角
ABR(区域边界路由器):
作用:连接不同OSPF区域,通常在骨干区域(Area 0)与其他区域间传播路由信息。
职责:将本区域路由摘要发送至Area 0,Area 0的ABR再将其传播至其他区域,确保区域间的路由可达性。ASBR(自治系统边界路由器):
作用:连接OSPF网络与非OSPF网络。
职责:将非OSPF网络的路由信息引入OSPF网络,通过生成Type 5或Type 7 LSA来传播外部路由。
二、从单一区域的视角
内部路由器:
定义:所有接口位于同一区域内的路由器。
职责:维护所在区域的链路状态数据库(LSDB),参与路由计算与信息传播。主干路由器:
定义:连接骨干区域(Area 0)的路由器。
职责:在Area 0内传递和处理路由信息,确保非骨干区域互通。
三、从单个网段的视角
DR(指定路由器):
定义:在多访问网络中负责收集与传播LSA的路由器。
职责:集中处理LSA交换,减少泛洪流量,维护网段内路由信息。BDR(备份指定路由器):
定义:DR的备份,DR失效时接替其工作。
职责:在DR不可用时接替其职责。DRothers:
定义:非DR和BDR的路由器。
职责:通过DR和BDR间接交换LSA,不直接参与路由转发。
DR/BDR的选举
选举DR/BDR的目的与作用
在一个区域中,只需要DR作为区域中心与区域外路由器建立邻居关系,并收集所有链路状态信息,这样可以减少大量开销,节省带宽,降低路由器压力。
(这里的区域指同一网段的路由器,区分area几区域)
在广播网络上,DR和BDR都使用组播地址224.0.0.6来接收链路状态更新报文。
在下面这个图中,RTA与RTB只需要与DR/BDR建立邻接关系,而RTA与RTB之间只是邻居关系即可,可以发现,DR可以减少广播型网络中邻接关系的数量。
选举DR/BDR的规则与过程
选举环境
OSPF在多访问网络(如广播和NBMA网络)中进行DR/BDR的选举,而在点对点网络中不需要选举。
几种OSPF网络类型
1.广播多路访问型(如以太网)
2.非广播多路访问型NBMA(如Frame Relay帧中继,X.25广域网,ATM)
3.点到点型(如PPP,HDLC)
4.点到多点型
每个多访问网络中的路由器都会参与选举,以确定一个DR和一个BDR。
选举规则
每个路由器都有一个OSPF接口的优先级值(默认是1,范围是0到255),可以通过配置更改。如果优先级为0,该路由器不参与DR/BDR选举。
在选举过程中,优先级最高的路由器被选为DR,第二高的被选为BDR。如果有多个路由器的优先级相同,则比较路由器的Router ID(RID),RID较高的被选为DR/BDR。
选举过程
DR的选举:所有参与选举的路由器根据优先级比较,优先级最高的成为DR。如果有多个优先级相同,则Router ID较高者当选。
BDR的选举:在选出DR后,优先级次高(或Router ID次高)的路由器会被选为BDR。
没有重新选举的条件:
当DR或BDR已经选举完成后,即使有新的路由器加入,它们不会自动抢占现有的DR和BDR,除非现有的DR或BDR失效或者被移除。
DR/BDR的职责:
DR负责在网络中作为路由更新的转发者,减少网络中的LSA(链路状态通告)泛洪。
BDR在DR失效时立即接管DR的职责,避免选举的延迟。
选举示例
假设有三个路由器R1、R2和R3,配置如下:
R1:优先级2,Router ID为192.168.1.1
R2:优先级1,Router ID为192.168.1.2
R3:优先级1,Router ID为192.168.1.3
在这种情况下:
R1 的优先级最高,因此它会被选为DR。
R3 和 R2 优先级相同,比较Router ID,R3的Router ID较高,因此它会被选为BDR。
最后是DR/BDR选举的几个小注意点:
1.只要是多路访问型网络(广播和NBMA),就会选举DR,BDR。
2.不同网段间选DR,BDR,而不是每个OSPF区域为单位选举。
3.DR,BDR,DRothers 说的都是接口,不是设备。
4.设备优先级设置为0不参与选举;DR,BDR不可以抢占;DR down掉后,BDR直升DR,重新选举BDR。
5.OSPF系统启动后,若40s内没有新设备接入就会开始选举,所以为保证DR与BDR的选举不发生意外,建议优先配置想成为DR与BDR的设备。
OSPF工作过程概述
邻居关系的建立:OSPF使用组播地址在所有启用OSPF协议的接口上发送Hello包,建立邻居关系并形成邻居表。
交换链路状态信息(LSA):建立邻居关系后,路由器互相发送LSA(链路状态信息),共享路由信息。
形成链路状态数据库(LSDB):每台路由器通过接收并存储LSA,形成其所在区域的LSDB。
SPF算法计算最佳路径:路由器通过无环的SPF算法计算从源到目的的最佳路径,将结果放入路由表中。
这与EIGRP类似,不同的是OSPF不是直接交换路由表,而是交换LSA来逐步建立完整的拓扑信息。
一、OSPF邻居关系的建立过程
OSPF的邻居关系有两个层次:
邻居(Neighbor):路由器之间交换了Hello包,但尚未交换LSA。
邻接(Adjacency):在邻居基础上,路由器间交换了LSA并同步了LSDB。
邻居关系的状态变化:
Down:邻居的初始状态,表示路由器未收到任何Hello包。
Attempt(NBMA网络特有):表示没有收到Hello包,但路由器在周期性发送Hello包。如果在RouterDeadInterval内没有收到Hello包,状态回到Down。
Init:路由器已收到来自邻居的Hello包,但自己尚未被邻居识别,还未建立双向通信。
2-Way:双向通信已经建立,路由器彼此在对方的Hello包中。到达2-Way状态意味着成功建立了邻居关系,但尚未建立邻接关系。
ExStart:邻接关系建立的第一步,路由器开始互相发送DD(Database Description)报文以商定主从关系,确认初始DD序列号。
Exchange:路由器通过DD报文互相交换LSDB的摘要信息。
Loading:路由器通过LSR(链路状态请求)请求缺失的LSA,并通过LSU(链路状态更新)报文发送LSA。
Full:LSDB完全同步,邻接关系正式建立。
二、OSPF的路由更新过程
触发更新:OSPF支持拓扑变化时的触发更新,一旦检测到链路变化或新增链路,立即发送更新报文。
周期性更新:即使没有拓扑变化,OSPF每30分钟会进行一次更新,确保路由信息的一致性。
LSA处理过程:
当路由器收到新的LSA时,首先检查该LSA是否已存在于本地LSDB中。
如果该LSA是新的,路由器会将其加入LSDB,回复LSAck确认,并继续将该LSA泛洪至其他邻居。同时通过SPF算法重新计算路由并更新路由表。
如果收到的LSA已存在,则根据序列号判断是否较新。序列号较大的LSA为较新版本:
如果本地LSA较旧,则更新本地LSDB并继续泛洪该LSA,同时通过SPF算法重新计算最佳路径。
如果本地LSA较新,则将本地较新的LSA泛洪给邻居。
泛洪机制
泛洪是OSPF更新LSA的重要机制。路由器收到LSA后会将其从除接收接口外的所有接口发送出去,确保LSA在网络中快速传播并保持同步。
这一过程确保了网络中的所有路由器可以通过互相交换信息,快速获得最新的路由信息并更新其路由表。
报文封装和5种报文类型
OSPF报文封装
OSPF报文封装在IP报文中,协议号为89。
OSPF报文类型
Hello报文:
作用:最常用的OSPF报文,用于发现并维护邻居关系。在广播网络(如以太网)和NBMA网络中,还用于选举DR(指定路由器)和BDR(备份指定路由器)。
主要内容:Router ID、邻居列表、Hello间隔、RouterDeadInterval等参数。
DD报文(Database Description,数据库描述报文):
作用:在两台OSPF路由器进行LSDB(链路状态数据库)同步时,使用DD报文描述各自的LSDB内容。DD报文类似一个目录清单,包含LSA(链路状态广告)条目的头部信息。
主要内容:LSA头部信息,如LSA类型、链路状态ID、序列号等,用于快速比较LSA的新旧。
LSR报文(Link State Request,链路状态请求报文):
作用:当两台路由器交换完DD报文后,如果一台路由器发现对方的LSDB中有自己缺少的LSA,会发送LSR报文,明确请求对方发送这些缺失的LSA。
主要内容:请求的LSA ID、LSA类型等,用于指定需要的LSA。
LSU报文(Link State Update,链路状态更新报文):
作用:回应LSR报文,发送所请求的LSA给邻居,以便对方更新其LSDB。LSU报文也可用来主动通告网络拓扑变化。
主要内容:具体的LSA数据,包含链路状态信息、序列号、老化时间等。
LSAck报文(Link State Acknowledgment,链路状态确认报文):
作用:当路由器收到LSU报文后,必须发送LSAck报文来确认接收到的LSA。这确保LSA更新过程中的可靠性,防止信息丢失。
主要内容:确认的LSA头部信息,用于确保对方收到更新。
这五种报文通过相互协作,完成OSPF的邻居发现、链路状态同步和路由信息传播,确保网络中的路由器能持续更新并同步最新的网络拓扑信息。
OSPF的6种常用OSPF LSA类型
LSA Type 1:Router LSA:
由谁产生:每台路由器为所属区域生成。
作用:描述该区域内路由器链路的状态和代价信息。一个边界路由器(ABR)可能为每个连接的区域生成多个Type 1 LSA。
传播范围:仅限于其所在的OSPF区域,不跨区域传播。
LSA Type 2:Network LSA:
由谁产生:由指定路由器(DR)生成。
作用:包含该网络中所有连接路由器的链路状态和代价信息。只有DR能够监测和生成此类信息。
适用范围:广播网络或NBMA网络中,表示连接在同一网段的所有路由器。
LSA Type 3:Summary LSA:
由谁产生:由区域边界路由器(ABR)生成。
作用:汇总并通告从ABR到其他区域(尤其是主干区域area 0)的路由信息。它通常会汇总区域内的路由信息并通告给其他区域,而不是传递详细的路由信息。
适用范围:跨区域传播,主要用于连接区域到area 0的链路信息。
LSA Type 4:ASBR Summary LSA:
由谁产生:由ABR生成。
作用:通告ASBR(自治系统边界路由器)的路由信息。与LSA Type 3不同,Type 4 LSA用于描述从区域到ASBR的路由,而不是区域内部的路由。
适用范围:用于其他区域了解如何到达ASBR。
LSA Type 5:External LSA:
由谁产生:由ASBR生成。
作用:通告自治系统外部的路由信息。Type 5 LSA会在整个OSPF域中传播(除了Stub和完全Stub区域)。
适用范围:用于通告从OSPF域外引入的外部路由(如BGP引入的路由)。
LSA Type 7:NSSA LSA:
由谁产生:由ASBR在NSSA(不完全存根区域)生成。
作用:通告NSSA区域内的外部路由信息。Type 7 LSA在NSSA区域内部生成,但可通过ABR转换为Type 5 LSA,以便传播到其他区域。
适用范围:仅用于NSSA区域,允许外部路由信息的有限传播。
这些LSA类型通过不同的路由器和区域之间的协作,确保OSPF网络中路由信息的精确传播和同步,优化整个网络的路由选择。
如果有小伙伴想详细了解下OSPF中不同类型LSA的内容,可以点击这里看这个博主写的文章
配置命令
1. OSPF基础配置
配置OSPF并启用区域
# 进入OSPF配置模式
[Huawei] ospf 1 router-id 1.1.1.1
# 在指定接口上启用OSPF(假设接口为GigabitEthernet0/0/0)
[Huawei-ospf-1] area 0
[Huawei-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
# 退出到全局模式
[Huawei-ospf-1] quit
2. 配置OSPF的认证
配置简单认证
# 进入接口模式(假设接口为GigabitEthernet0/0/0)
[Huawei] interface GigabitEthernet0/0/0
# 启用OSPF的简单密码认证
[Huawei-GigabitEthernet0/0/0] ospf authentication-mode simple huawei123
配置MD5认证
# 进入接口模式
[Huawei] interface GigabitEthernet0/0/0
# 启用OSPF的MD5认证
[Huawei-GigabitEthernet0/0/0] ospf authentication-mode md5 1 huawei123
3. 查看OSPF状态
查看OSPF基本信息
# 查看OSPF进程、Router ID、区域等信息
[Huawei] display ospf
查看邻居状态
# 查看与OSPF邻居的邻接关系状态
[Huawei] display ospf peer
查看LSA信息
# 查看OSPF的LSA信息
[Huawei] display ospf lsdb
4. 配置OSPF的DR/BDR优先级
配置接口优先级来影响DR/BDR选举
# 进入接口模式(假设接口为GigabitEthernet0/0/0)
[Huawei] interface GigabitEthernet0/0/0
# 设置OSPF接口优先级
[Huawei-GigabitEthernet0/0/0] ospf dr-priority 100
5. 配置OSPF的区域类型
配置OSPF存根区域(Stub Area)
# 进入OSPF进程配置模式
[Huawei] ospf 1
# 将area 1配置为存根区域
[Huawei-ospf-1] area 1
[Huawei-ospf-1-area-0.0.0.1] stub
配置OSPF完全存根区域(Totally Stub Area)
# 配置完全存根区域
[Huawei-ospf-1-area-0.0.0.1] stub no-summary
6. 配置OSPF静态路由重分发
在OSPF中重分发静态路由
# 进入OSPF进程配置模式
[Huawei] ospf 1
# 重分发静态路由到OSPF
[Huawei-ospf-1] import-route static
完。