基本概念
- OSPF是链路状态型协议,是目前业内使用最广泛的IGP协议;是由IETF组织提出的公有协议。
- OSPF使用的算法是SPF****算法。
- OSPF版本:OSPFv2/OSPFv3
- OSPF是跨层封装协议,没有传输层封装;OSPF自带可靠性机制。所以OSPF没有周期更新,仅有触发更新机制;但是,OSPF存在30min****的周期链路刷新机制。
OSPFv2和RIPv2版本对比
相同点:
1、两者都是无类别路由协议
2、两者都是采用组播形式发送报文
RIPv2--->224.0.0.9
OSPFv2-->224.0.0.5/224.0.0.6
3、两者都支持等开销负载均衡(等价路由)
不同点:
RIPv2应用在小型网络,OSPF应用在中大型网络
结构化部署**---**区域划分
- 目的:减少拓扑信息的传递,减少设备资源消耗。
- 区域内部传递拓扑信息,而区域之间传递路由信息。
- 区域ID---Area ID;区域标识符,32bit,使用IP地址格式表示。
- Area 0**,被称为骨干区域**。
区域划分规则:
- OSPF****要求域中所有的非骨干区域,都必须与骨干区域直接相连。
- 骨干区域不能被分割。--- 区域0有且只有一个。
OSPF定义了**ABR(区域边界路由器)**来确保工程师遵守第一条规则;ABR功能:将一个区域的路由传递给另一个区域。
哪些设备会成为ABR设备
1、至少连接在2个区域
2、连接的区域中,至少有一个区域是骨干区域
3、在骨干区域内部,存在一个活跃的邻居
结论:非骨干区域之间,不能直接传递路由信息。
规则二的引申的限定:OSPF****规定,从非骨干区域收到的路由信息 ,ABR设备可以接收,但不会使用这条路由信息,也就不会传递该路由信息。---- OSPF****的区域水平分割规则。
引申:即从一个区域学习到****的路由信息,不能在传递回该区域。
ASBR ---自治系统边界路由器;职责:将域外的路由信息引入到域内。
**ABR自动执行路由的传递行为,而ASBR**则需要管理员手工执行路由的引入操作。
OSPF****工作过程
OSPF****数据包

- hello包
- 作用:发现、建立、周期性保活OSPF邻居关系;通过组播224.0.0.5发送报文。
- 使用Router-ID来作为路由器标识符使用。
- 全域唯一的参数,使用IP地址格式表示。
- 配置方式:1.手工配置;2.自动配置(选择最大环回IP地址>选择最大物理接口IP地址)
- OSPF每10秒钟发送一次hello报文,进行保活;hello-time。
- 存在hold-time(死亡时间),为hello-time的四倍。
- DD报文 --- 数据库描述报文
- 携带的是路径信息的摘要;
- 目的:减少信息的更新量;不会给邻居直接发送拓扑,而是发送一个拓扑的目录,由邻居挑选感兴趣的拓扑。
- LSR报文 --- 链路状态请求报文
- 根据获取到的DD报文中的摘要信息,来向邻居申请完整的LSA信息。
- LSU报文 --- 链路状态更新报文
- 携带真正的**LSA(链路状态通告,内部携带的是路由或者拓扑)**信息。
- LSAck报文 --- 链路状态确认报文
OSPF****状态机
- down --- 关闭状态
- 一旦启动了OSPF协议,则进入下一个状
- init --- 初始化
- 本地一旦接收到hello报文,且该报文中存在自己的****Router-ID,则进入下一个状态。
- 2-way --- 双向通讯
- 邻居关系建立的标志,是一个稳定态;
判别过程 --- 条件匹配:匹配成功,则进入下一个状态,匹配失败则停留在邻居关系,仅使用hello报文保活。
- exstart --- 预启动
- 邻居关系双方使用未携带数据的DD报文****(空的报文),来进行主从关系选举。
- 选举规则:选择Router-ID大的设备为主设备。
- 主从的目的:决定后续交互DD报文时,使用哪一端的DD序列号。
- exchange --- 准交换
- 邻居关系双方使用携带数据的DD报文;来传递本地的LSA摘要信息。
- loading --- 加载
- 使用LSR/LSU/LSAck报文,来获取未知完整的LSA信息。
- 获取到的报文信息,会被设备存在链路状态数据库中。
- full --- 转发
- 当LSA全部获取到后,进入full状态,标志着邻接关系的建立,也是一个稳定态。
- 需要进行SPF算法的计算,计算出有向图,生成无环路径树,然后计算到达每一个节点的路由信息,将这些路由信息加入到OSPF****路由表中。
- 设备对比自身路由信息,如果OSPF的路由更优,则加入到全局路由表。
第八种状态机,被称为Attempt****状态;该状态处于down和init之间,代表OSPF已启动,但是hello报文没有发送。该状态只有在NBMA网络中才会存在。等待管理员告知本地自己的邻居IP地址。
条件匹配
目的:选举一个负责人;消除重复的LSA更新。
接口角色:
- DR --- 指定路由器
- BDR --- 备份指定路由器
- DRother --- 其他路由器
选举范围:是一个广播域中;DR必须存在一个,BDR可以不存在。
选举规则:1.比较接口优先级,默认为1,优先级越大越优,0代表放弃选举;2.比较RID,越大越
优。
两台设备之间,如果接口角色都是DRother,则为邻居关系;如果任意一台是DR/BDR,则成为邻
接关系。
引申:P2P网络,不需要进行条件匹配;而MA网络需要。
条件匹配是通过hello报文进行选举的,先选举DR,在选举BDR。每一次选举最大时间40秒。DR角色是非抢占性。
OSPF****报文格式
OSPF****报文头部
每一个OSPF报文,都具备的公共参数部分;24****字节。

影响邻居关系建立的参数:区域ID、验证类型、认证数据、网络掩码、hello时间、死亡时 间、可选****项字段。
OSPF****发送的每一个报文,都需要进行认证。
Hello****包
发现、建立、周期保活OSPF邻居关系;选举DR/BDR角色。

如果两台OSPF路由器构成MA网络,此时设备会检查网络掩码信息,如果不同,则无法建立邻居关系。华为;
可选项**---每个bit都代表不同的含义,部分bit****在建立邻居时,需要被检查**。
DD****包

在华为AR系列路由器中,DD报文中的MTU参数,默认为0;因为华为默认不进行MTU参数数值的检查,如果开启OSPF的MTU检测机制,则两端MTU数值不同时,双方状态会停留在exstart****状态。--- 影响OSPF邻接关系建立的因素。
ospf mtu-enable --- 开启OSPF的MTU检测机制
I位 --- 代表主从关系选举
M位 --- 代表后续还存在更多的DD报文
MS位 --- 代表主身份
DD序列号用于确保DD报文传输的有序性和可靠性;根据主设备进行,每发送一次DD报文,数值加1。
隐式确认机制:从设备每次发送的DD报文中的序列号,必须是本地最新接收到主设备的DD报文的序列号。
DD报文存在三种:
1、空的报文,用于主从关系选举
2、携带LSA摘要的报文,用于摘要共享
3、空的报文,用于隐式确认机制
LSR****包

链路状态类型、链路状态ID、通告路由器;---被称为LSA三元组信息,三个参数可以唯一的标识一条LSA。
LSU****包
包含两个参数
- LSA的个数
- LSA(长度可变)
LSAck****包

OSPF****的接口网络类型
- OSPF网络类型他不是数据链路层哪个网络类型。
- OSPF接口网络类型,理解为OSPF****接口在某种网络类型下的工作方式。
- OSPF****邻居的网路类型必须保持一致。
