OSPF 开放最短优先
简介
- 是IETF组织开发的一个基于链路状态的内部网关协议
OSPF协议特点
- 没有路由跳数的限制(15)
- 使用组播更新变化的路由和网络信息(224.0.0.5、224.0.0.6)
- 路由收敛速度较快(触发更新)
- 以开销(cost)作为度量值
- 采用的SPF算法可以有效的避免环路
- 在互联网上大量使用,是运用最广泛的路由协议
OSPF表项
- 邻居表记录了建立邻居关系的路由器
- LSDB中包含了所有的链路状态信息,并需要实时同步
- 经过SPF算法计算出的路由存放在OSPF路由表中
生成OSPF路由
- 网络的拓扑结构
- 每台路由器的LSDB
- 由LSDB得到的带权有向图
- 每台路由器分别以自己为根节点计算最小生成树
分层结构
- 骨干区域
- 非骨干区域
- 骨干区域负责转发非骨干区域之间的路由
划分区域的优势
- 减少了区域内的LSDB中链路状态信息的数量,降低了运行OSPF协议对路由器性能的要求
- 可以将相同功能性或者地理位置的路由器划分在一个区域内,以便于管理
- 隔离拓扑变化,减少路由震荡对整个自治系统的影响
OSPF路由器类型
- 区域内路由器 (Internal Router)
- 区域边界路由器 (ABR,Area Border Router)
- 骨干路由器(Backbone Router)
- 自治系统边界路由器(ASBR,Autonomous System Border Router)
Router ID
- 一台路由器如果要运行OSPF协议,则必须存在Router ID。RID是一个32比特无符号整数,可以在一个自治系统中唯一标识一台路由器
- RID可以手工配置,也可以自动生成
- 如果没有通过命令指定RID,将按照如下顺序自动生成一个RID
- 如果存在配置IP地址的Loopback接口,则选择Loopback接口地址中最大的作为Router ID
- 如果没有配置IP地址的Loopback接口,则从其他接口的IP地址中选择最大的作为Router ID(不考虑接口的UP/DOWN状态)
OSPF网络类型
- Broadcast(广播)默认以太网协议,生成时间,死亡时间10s、40s
- P2P (点到点)默认PPP协议,生成时间,死亡时间10s、40s
- NBMA (非广播多点可达网络) 默认FR协议,生成时间,死亡时间30s、120s
- P2MP(点到多点)只能由其他类型更改而来,生成时间,死亡时间30s、120s
NBMA与P2MP
- NBMA网络是指那些全连通的、非广播、多点可达网络。
- 而P2MP网络,则并不需要一定是全连通的
- NBMA是一种缺省的网络类型
- P2MP网络必须是由其它的网络强制更改的
- NBMA网络采用单播发送报文,需要手工配置邻居。
- P2MP网络采用组播方式发送报文。
OSPF报文类型与封装
OSPF报文类型 | 作用 |
---|---|
Hello | 建立邻居关系、周期性维护邻居关系 |
Database Description(DD) | 协商主从、发送摘要 |
Link State Request(LSR) | 请求不具备的LSA |
Link State Update(LSU) | 发送详细的LSA信息 |
Link State Acknowledge(LSAck) | 确认收到LSA |
OSPF报文格式
| 链路层帧头 | IP Header | OSPF Packet | 链路层帧尾 |
- OSPF报文直接封装在IP报文中,协议号为89
邻居关系
- 建立邻居关系
- 维持邻居关系
- 邻居之间通过交换Hello报文,确认邻居是否工作正常
- 如果在一定的时间间隔内,收不到邻居发来的Hello报文,就认为邻居已经失效,从邻居表中删除
- DR/BDR的选举
- 采用DR/BDR建立邻接关系,可以降低需要维护的邻接关系数量
- 邻接关系建立
- 在广播和NBMA网络中,链路状态发生变化时,主要是通过DR路由器发送更新报文
DR/BDR的选举原则
- 首先比较Hello报文中携带的优先级(优先级最高的选举为DR,优先级次高的被选举为BDR,优先级为0的不参与选举)
- 优先级一致的情况下,比较Router ID(越大越优先)
- 保持稳定原则(选举完毕,一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选举的DR/BDR)
OSPF的状态机
- down 接口没有启用ospf
- init hello报文中的参数没有协商成功
- att NBMA,只发了Hello还没接受
- 2-way Hello报文中的参数协商成功(route-id、接口地址和掩码、生成时间死亡时间、区域、特殊区域、验证)
- exstart 发送第一个DD报文,协商主从关系
- exchange 发送第二个DD报文,携带摘要信息
- loading 互相学习LSA,发送LSR、LSU、LSAck报文
- full 区域内LSA同步
LSDB更新
- 收到一条LSA更新报文,在LSDB中查找,没找到就加入LSDB
- 查找到比谁的LSA序列号大,序列号大的加入LSDB
- 在广播和NBMA网络中,链路状态发生变化时,主要是通过DR路由器发送更新报文
区域划分时存在的问题
- 骨干区域被分割
- 非骨干区域无法和骨干区域保持连通
虚连接
- 解决骨干区域被分割的问题
- 解决非骨干区域无法和骨干区域保持连通的问题