# OSPF 开放式最短路径优先,是一种基于链路状态的IGP协议 ## 路由协议 ### 静态路由 .................... ### 动态路由 #### IGP: - 内部网关路由协议,运行在AS(自治系统)内部的路由协议 #### EGP: - 外部网关路由协议,运行在AS外部的路由协议(网关边界路由协议) - (AS:自治系统,由同一个管理机构或组织使用同一种路由协议或策略进行管理的网络,如:一家企业,一所学校) ### 链路状态 - 接口信息:包含的信息有:IP地址,掩码,协议类型,开销以及对端设备(邻居) ## OSPF工作原理: - 1、运行了OSPF协议的设备互相建立邻居关系 > ①down状态:初始化状态,OSPF初始化运行 > > ②attempt状态:发送了hello报文(协商参数),但是没有收到对端的hello报文,若在120S内没有收到对端发送的hello报文则回到down状态 > > ③init状态:发送了hello报文(携带协商参数),且收到了hello报文,但是在收到的hello报文中邻居列表中并没有找到自身的RID > > ④2-way状态:发送了hello报文(携带协商参数),收到了对端的hello报文,并且在hello报文中的邻居列表中找到了自身的RID,则处于此状态,表示邻居关系建立完成,该状态为邻居关系的最高状态 - 2、交互LSA,同步LSDB,建立邻接关系 - LSA:链路状态通告,用来承载链路状态信息 - LSDB:链路状态信息数据库,用来存放LSA > ⑤ex-start状态:通过DD报文协商主从,确定DD报文的初始序列号(通过route-id来协商主从,route-id大的作为主) -PS:从设备接收主设备发送的DD报文,必须回应主设备DD报文,并且携带主设备发送的DD报文的序列号进行确认 -协商主从关系的作用:确保后续发送的DD报文的可靠性以及确定初始序列号 > ⑥exchange状态:通过DD报文描述本地的LSDB信息 > > ⑦loading状态:交互LSA,同步LSDB(涉及到的报文:LSR、LSU、LSACK) > > ⑧full状态:LSDB同步完成,则处于此状态,表示邻接关系建立完成 - 3、基于LSDB使用SPF算法,计算网络拓扑,构建最短路径树,将去往每个目的地的最优的路由加入到OSPF路由表中(使用路由优选原则) ## Route ID: - 路由器标识符,用于在OSPF网络中唯一标识一台运行了OSPF的设备 32bit 采用点分十进制表示,格式与IP地址相同,但是两者没有关系 ### 获取方式 - 手工配置: 1. 全局指定:在系统视图下配置 命令:[R1]route id x.x.x.x 2. 协议视图下指定:在OSPF协议视图下配置 命令:[R1]OSPF 1 route-id x.x.x.x - 自动获取: 1. 若存在逻辑接口(loopback口),则使用逻辑接口中IP地址最大的做为route-ID 2. 若不存在逻辑接口,则使用实际物理接口中IP地址最大的作为route-ID ## OSPF报文: - OSPF封装在IP协议之上,协议号为89 格式:帧头+IP头+OSPF+DATA+FCS ### OSPF报文头部 - 版本:8bit,标识OSPF的版本,V2工作在IPv4环境下,v3工作在IPv6环境下 - 类型:8bit,标识OSPF的不同报文 #### hello报文: - 周期性发送,用来发现建立与维护邻居关系 ##### 协商参数: - 掩码:发送该hello报文的接口的掩码 - options:可选项 - hello时间间隔:后期用于维护邻居关系周期性发送hello 报文的时间间隔(默认时间为40S) - 路由器优先级:用于选举DR和BDR - 路由器死亡间隔:若在死亡间隔内未收到邻居发送的hello报文则认为邻居死亡,将邻居从邻居列表中删除,时间为4倍的hello间隔时间。 - DR:指定路由器 - BDR:备份指定路由器 - DRother:非指定路由器 - 邻居列表:协商成功后,将对方的route-id加入到自身的邻居列表中。 #### DD报文: - 作用:描述本地LSDB的摘要信息(携带LSA的摘要信息),协商主从,确定初始序列号 ##### 参数: - interface MTU:16bit,在不分片的情况下,此接口最大可以发送的IP报文的长度 - options:可选项 - I:1bit:当发送连续多个DD报文时,如果这是第一个DD报文则置位为1,否则为0 - M:1bit:当发送连续多个DD报文时,如果这是最后一个DD报文则置位为0,若置位为1代表后面还有其他DD报文。 - M/S:1bit,当两台OSPF路由器交互了DD报文时,首先需要确定双方的主从关系,route-id大的一方成为主设备(master)当该字段置位为1时,标识该报文为主设备发送的报文。 - DD seq:32bit,DD报文序列号,主从双方利用序列号来保证DD报文传输的可靠性和完整性。 #### LSR报文 - 用于请求自身所缺失或所需求的LSA,携带LSA的摘要信息 #### LSU报文 - 用于发送LSA,回应对方的请求,携带LSA的完整信息 #### LSACK报文 - 用于对收到的LSA做确认,携带LSA的摘要信息 ### 长度 - 标识OSPF报文的长度 ### route-id - 标识发送该OSPF报文的网络设备的RID ### Area id - 标识OSPF的传播范围 ### 校验 - 用来对OSPF的报文进行校验 ### 认证类型 - 0:不认证 - 1:简单认证/明文认证 - 2:MD5认证/密文认证 - 认证数据:32bit ## OSPF的网络类型 支持丰富的二层协议 ### P2P - 点到点网络类型,默认支持的二层协议类型为PPP,HDLC ### P2MP - 点到多点网络类型,无默认的二层协议。只能通过其他其他网络类型修改而来(通过NBMA网络) ### broacast - 广播网络类型,默认的二层协议类型为以太网协议 ### NBMA 非广播多路式访问,默认支持的二层协议F | P2P | 不协商掩码 | 10S | 6种,无attempt,2-way | 不选举DR | | :-------: | :------------------: | :--: | :-------------------: | :------: | | P2MP | 需协商,可强制不协商 | 30S | 6种,无attempt,2-way | 不选举DR | | Broadcast | 必须协商 | 10S | 7种,无attempt | 选举DR | | NBMA | 必须协商 | 30S | 8种 | 选举DR | ## DR/BDR的选举 场景:只会在MA网络(广播、NBMA)中选举,自在同一网段内的所有路由器之间选举 背景:在MA网络中,如果每台OSPF路由器都与其他的所有路由器建立OSPF邻接关系,便会导致网络中存在过多的OSPF邻接关系,增加设备负担,也增加了网络中泛洪的OSPF报文数量。 ### 角色 - DR:置顶路由器 - BDR:备份指定路由器 - DR-other:既不是DR也不是BDR,非指定路由器 - DR和所有的路由器建立邻接关系 - BDR和所有的路由器建立邻接关系 - DRother和DR/BDR建立邻接关系 - DRother之间只需要建立邻居关系 ### 作用 1. 减少MA同网段内的邻接关系的数量 2. 减少OSPFS报文的交互数量 3. 减少重复LSA泛洪 4. 减少链路带宽及设备资源的浪费 ### DR/BDR选举场景 - 一、OSPF初始化运行场景 - 假如在40S内,收到对方发送的hello报文中的DR/BDR为0.0.0.0 - 通过hello报文中携带的路由器优先级进行选举,优先级越高越优先 - 路由器优先级范围0-255,默认为1,0为不参与选举(DRother) - 若优先级相同,则比较router-id,越大越优先 #### 选举过程 1. 先选举BDR 2. 将BRD变为DR 3. 重新选举BDR > ps:当DR失效,BDR变为DR,重新选举BDR,DR不允许抢占 - 二、OSPF稳定运行后新加入设备的场景(DR不允许被抢占) - 假如在40秒内,收到对方发送的hello报文中携带了DR/BDR - 若有新设备加入该网络中,则这个设备直接变成DR-other - (稳定优先,即使有一台优先级更高的设备加入到网络,也不会抢占原有的DR/BDR的地位) ## 多区域 ##### OSPF域 - 一系列使用相同策略的连续OSPF网络设备构成的网络 ##### OSPF区域划分 - 通过area id 进行划分区域,基于路由器接口划分区域 ##### area ID - 32bit,格式与IP地址一样,采用点分十进制的方式表示,通常采用十进制书写,范围为0-2^32次方 ##### 骨干区域 - area0 为骨干区域,有且只有一个 ##### 非骨干区域 - 除area 0 以外的其他区域都是非骨干区域 ##### 划分多区域作用 - 减少单区域的LSDB的规模来提高网络的可靠性和稳定性。 ##### 路由器角色 ###### IR - 区域内路由器,路由器的所有接口处于同一区域 ###### BR - 骨干路由器,路由器至少有一个接口处于骨干区域 ###### ABR - 区域边界路由器,路由器接口处于多个区域,但是至少有一个接口处于骨干。 ###### ASBR - 自治系统边界路由器,任何一台OSPF路由器引入其他路由协议(如rip,直连,静态,ospf不同进程(不同进程也属于不同协议),等)那这台路由器称为自治系统 ##### 区域的划分规则 - 非骨干区域必须和骨干区域相连,非骨干区域与非骨干区域之间无法直接相连 - 非骨干区域之间无法直接通信,想用通信必须经过骨干区域 > PS:通过上述规则保证了,区域与区域之间,构建了一个物理上无环路的拓扑结构,起到了一个区域与区域之间的防环路作用。 ### OSPF防环机制 ###### 域内 - 使用SPF算法,构建最短路径树, ###### 域间 - 通过区域划分规则,非骨干区域必须与骨干区域相连,非骨干区域之间必须经过骨干区域 ## OSPF的开销 - 接口开销=带宽参考值/实际带宽 - 计算结果取整,如0.1取为1>>>>>>1.9取为1 - 带宽参考默认为100M,可以修改,值越大,计算结果越精确 > (PS:一但修改,影响该区域的所有路由器接口,修改后建议该区域内的所有路由器都需要修改,以保证计算的统一性) ### 路径开销的计算方法(累加) - 路由角度 - 计算路由传递方向的入接口的开销总和 - 流量角度 - 计算流量传递方向的出接口的开销总和 ### 修改开销的方式 - 1、在接口上配置: - 直接修改接口开销值,只作用于该接口 - 命令:【接口视图】ospf cost 开销值 - 2、在协议进程视图下配置 - 修改带宽参考值 - 命令【ospf进程视图】bandwidth-reference 带宽参考值 > PS:若同时配置了两种修改开销的方式,则在接口上修改的生效 - PS:若同时配置了两种修改开销的方式,则在接口上修改的生效 ## OSPF的认证 ### 认证类型 - 不认证(默认) - simple:简单认证(明文传输) - MD5认证:密文认证,密码采用密文传输 ### 认证方式 - 1、接口认证 - 在接口视图下配置,一但配置,该接口的对端设备的接口也需要配置 - 命令:【接口视图】ospf authentication-mode MD5 1 cipher xxxxxxx - 2、区域认证 - 在区域视图下配置,一但配置,该区域的所有路由器都需要配置 - 命令:【区域视图】ospf authentication-mode > PS:若同时配置了两种认证方式,则接口上配置的认证生效 最后修改:2021 年 08 月 20 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏