OSPF基本简述
1、动态路由协议
在路由器间启动一种协议,之后路由器间进行数据沟通,相互学习计算来获取之前未知的目标网段的路径;
RIP、OSPF、EIGRP、BGP、ISIS
2、动态路由协议分类
1)基于AS进行分类
AS-自治系统:标准16位二进制(0-65535):1-64511(公有)、64512-65535(私有)
扩展32位二进制
AS内运行——IGP协议(内部网关路由协议):RIP/OSPF/ISIS/EIGRP
AS间运行——EGP协议(外部网关路由协议):EGP/BGP
2)IGP协议分类
【1】基于更新时是否携带子网掩码
- 有类别(不带掩码)
- 无类别(携带掩码)
【2】基于工作特点进行分类
- 距离矢量(DV):RIP / EIGRP【共享路由表——直接学习路由条目(更新量小)】
- 链路状态(LS):OSPF / ISIS【共享拓扑信息——本地计算路由条目(更新量大)】
4、OSPF简介
- 开放式最短路径优先协议
- 无类别链路状态型路由协议
- 公有协议;
- 跨层封装到三层(IP报头),协议号89;
- 组播更新:224.0.0.5 224.0.0.6;
- 触发更新、周期更新(30min);
- 需要结构化的部署:区域划分、地址规划
5、OSPF组播
当OSPF路由器要发报文给所有路由器时,目的IP地址填入224.0.0.5;
当OSPF路由器(Drother)要发送报文给DR、BDR的时候,目的IP地址填入224.0.0.6;
224.0.0.5的组播地址为OSPF所有设备的预留IP组播地址;
224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。
6、OSPF协议的数据包:
1)数据包结构
2)数据包种类
1: hello:
组播周期发送,用于邻居、邻接关系的发现、建立、周期保活;
在hello包中存在本地已知邻居的RID,用于保活这些邻居;
hello time 10s或者30s;
dead time为hello time的4倍
2: DBD(数据库描述包)
3: LSR(链路状态请求)
4: LSU(链路状态更新包):携带具体的LSA信息
5: LSack(链路状态确认)
7、OSPF协议的状态机
Down:双方不认识,一旦本地发出hello包进入下一个状态
Init初始化:接收到的hello包中若存在本地的RID,进入下一个状态
2way双向通讯:邻居关系建立的标志
进行条件匹配:点到点网络将直接进入下一个状态; MA网络类型将进行DR/BDR选举,非DR/BDR间将无法进入下一状态;
Exstart预启动:使用不携带信息的DBD包进行主从关系的选举,RID数值大为主,优选进入下一状态;主从关系可以避免后面exchange状态时出现重复更新量,减少更新量
Exchange准交换:使用真正的DBD包进行数据库目录的共享,需要使用LSack确认
Loading加载:基于对端的数据库目录,对照本地,然后使用LSR来获取未知的LSA信息,对端使用LSU共享LSA,需要LSack确认;
Full转发:邻接关系建立的标志
LSA:链路状态通告,在不同的网络条件下将产生不同类别的LSA信息来代表拓扑或者路由条目;
LSDB:链路状态数据库 装载和存储所有各种类别的LSA;
8、OSPF的工作过程
OSPF协议启动后,A向本地所有启动了OSPF协议的直连接口组播224.0.0.5发送hello包;本地hello包中携带本地全网唯一的router-id;
之后对端B运行OSPF协议的设备将回复hello包,该hello包中若携带了A的routerid,那么A/B建立为邻居关系;生成邻居表;
邻居关系建立后,邻居间进行条件匹配,匹配失败就停留于邻居关系,仅hello包周期保活;
条件匹配成功可以开始建立邻接关系:
邻接间共享DBD包,将本地和邻接的DBD包进行对比,查找到本地没有的LSA信息目录;
之后使用LSR来询问,对端使用LSU应答具体的LSA信息,之后本地再使用ack确认,可靠;
该过程完成后,生成数据库表;
再之后本地基于数据库表,启用SPF选路规则,计算到达所有未知网段的最短路径,然后加其加载到本地的路由表中;收敛完成,hello包周期保活,每30min再周期收发一次DBD来判断和邻接间数据库是否一致;
结构突变:
- 新增网段 直连新增网段的设备,将直接使用LSU包来告知本地所有邻接,之后邻接传邻接扩散到全网,需要ACK确认
- 断开网段 直连断开网段的设备,将直接使用LSU包来告知本地所有邻接,之后邻接传邻接扩散到全网,需要ACK确认
- 无法沟通 dead time 为hello time 的4倍;当dead time到时时,断开邻居关系,删除通过该邻接生成的路由协议;
9、OSPF的基础配置
[R1]ospf 1 router