OSPF
(open shaortest path first)
open是指IETF发明的一种针对IP的路由协议。
SPF算法,围绕该算法计算路由信息的协议,迪特格拉斯算法。
RIP面临的问题
-
逐条收敛:主要的挑战是RIP为了防环引入了抑制计时器180的等待时间这大大增加了RIP的收敛时间。
-
传闻的路由更新机制:一个路由器计算出问题会导致下游路由器跟着出问题
-
最多的有效跳数为15:限制了RIP协议组网的规模,无法实现大于15跳路由的组网
-
以跳数为度量的:跳数不科学,带宽才是通用的度量方式
-
更新方式:周期似的全路由表更新,这种更新会浪费带宽
OSPF的工作过程
建邻居->传数据->做计算
STEP1:建邻居
发现并建立邻居关系有两种方式:HELLO报文和手动建立
HELLO报文
Hello报文的作用:
- 邻居发现:自动发现邻居路由器。
- 邻居建立:完成Hello报文中的参数协商,建立邻居关系。
- 邻居保持:通过Keepalive机制,检测邻居运行状态。
OSPF邻居建立过程
手动建立
- OSPF支持通过单播方式建立邻居关系。
- 对于不支持组播的网络可以通过手动配置实现邻居的发现与维护。
STEP2:传输链路状态信息
链路信息主要包括:
- 链路的类型;
- 接口IP地址及掩码;
- 链路上所连接的邻居路由器;
- 链路的带宽(开销)。
链路类型:
stubnet、transnet、p2p、虚链路
OSPF的度量方式:
- 某接口cost=参考带宽/实际带宽。
- 更改cost的两种方式:
- 直接在接口下配置;
- 修改参考带宽(所有路由器都需要修改,确保选路一致性)。
STEP3:计算最优路由
OSPF的LSDB同步(1)
OSPF的LSDB同步(2)
OSPF的八种状态机
-
down
刚启动OSPF进程,还未收到邻居的任何信息。 -
attemp
只发生NBMA网络中,使用单播更新,发送HELLO分组,但从邻居没有收到任何信息。 -
init
只有一方收到的另一方的HELLO数据包,并且在邻居字段中收到对方的route-id. -
2-way
本路由器收到对方的HELLO数据包,并且在邻居字段中看到自己的route-id. -
exstart
在交换DBD之前阶段选出主/从路由器。
exchange
完成协商交换DBD. -
loading
向对方发送LSA请求分组确定自己少哪些LSA,发送LSU告诉对方自己详细的LSA信息。并用LSA ACK确认。 -
full
数据同步,完成邻接关系。
虚链路:
- 虚链路是区域0的延伸
- 虚链路只能穿过一个区域—在一个SPF上构建
- 构建虚链路的俩个路由器都是ABR
- 虚链路通信用的俩个路由器在SFP中距离最近的俩个接口单播通信
用法
- 连接远离骨干域的普通区域
- 缝合断裂的骨干域