OSPF:开放式最短路径优先协议
使用范围:IGP
协议算法特点:链路状态型路由协议,SPF算法
协议是否传递网络掩码:传递网络掩码
协议封装:基于ip协议封装,协议号为89
一,ospf特点
1.ospf是一种典型的链路状态型路由协议
2.传递信息称作LSA,LSA链路状态通告,包含路由信息和拓扑信息
路由LSA:描述本路由器上接口的路由信息
拓扑LSA:描述路由器之间的连接状态
3.更新方式:触发更新+30分钟的链路状态刷新
4.更新地址:组播和单播更新,组播地址:224.0.0.5(all spf router) 224.0.0.6(all dr router)
5.支持路由认证
6.支持手工汇总
7.支持区域划分
8.ospf比较消耗设备资源
二,ospf区域
区域划分的意义:
1.减少LSA的数量
2.减少LSA的传播范围
区域的划分是基于接口的(链路的)
区域的标记:使用32个二进制,类似于ip地址
区域的分类:
骨干区域:区域标记为0或0.0.0.0
非骨干区域:区域标记不等于0或0.0.0.0
区域设计原则:向日葵型网络结构
1.ospf网络中必须存在并唯一的骨干区域(单区域除外)
2.若存在非骨干区域,非骨干区域必须与骨干区域直接相连
3.非骨干区域之间不允许直接相连相互发布区域间路由
ospf中路由器的角色:
骨干路由器(BR)
非骨干路由器
区域边界路由器(ABR):骨干和非骨干之间的路由器
自治系统边界路由器(ASBR):能够产生5类或7类LSA的路由器,把非ospf路由引入ospf中
三,ospf消息数据包
1.hello数据包
周期性发送,周期时间10s或30s(根据不同的网络类型默认10s或30s)
目的:建立并维持ospf邻居关系
2.DBD:数据库描述数据包
主从选举DBD:比较双方的router-id,router-id大的一方为主(master),小的一方为从(slave);主用于控制LSA的交互
3**.LSR**:链路状态请求,按照DBD报文的未知LSA头部进行请求
4.LSU:链路状态更新,携带LSA信息
5**.LSACK**:链路状态确认
四,ospf邻居状态机制
- Down(失效)状态 :这是初始状态,表示尚未收到邻居的任何信息。
- **Attempt(过渡)状态:**特殊网络条件才有的状态,不支持广播网路
- Init(初始化)状态 :本路由器已经从邻居收到了 Hello 报文,但报文中未列出本路由器的 Router ID。
- 2-Way(双向通信)状态 :本路由器在收到的 Hello 报文中看到了自己的 Router ID,表明双方可以双向通信。如果是在广播型网络或 NBMA 网络中,此时还需要选举 DR(指定路由器)和 BDR(备份指定路由器)。
- ExStart(预启动)状态 :路由器开始协商主从关系,并确定用于交换数据库描述(DBD)报文的初始序列号。
- Exchange(交换)状态 :路由器使用 DBD 报文来描述自己的链路状态数据库,并向邻居请求缺失或更新的 LSA(链路状态通告)。
- Loading(加载)状态 :路由器根据收到的 LSR(链路状态请求)报文,向邻居发送 LSU(链路状态更新)报文来提供所需的 LSA 信息。
- Full(完全邻接)状态 :路由器的链路状态数据库已经与邻居同步,邻居关系建立完成,可以进行路由计算和数据转发。
邻居关系建立条件:
- router-id 必须不同 : 每台 OSPF 路由器都需要有唯一的 Router-ID 来标识自己。如果两台路由器的 Router-ID 相同,会导致 OSPF 协议无法正常区分它们,从而无法建立邻居关系。
- area ID 相同 : OSPF 网络被划分为不同的区域,路由器要成为邻居,必须处于相同的区域,这样它们才能共享相同的链路状态信息,以计算准确的路由。
- 认证:认证类型(不认证=0 明文认证=1 MD5=2)认证数据 :为了保证网络的安全性和数据的完整性,OSPF 支持不同的认证方式。邻居之间的认证类型和认证数据必须匹配,否则无法建立邻居关系。
- hello 时间,dead 时间必须一致 :Hello 报文用于发现和维护邻居关系,Dead 时间用于判断邻居是否失效。如果这两个时间参数不一致,可能会导致邻居状态的错误判断和不稳定。
- 特殊区域标识一致(E(外部路由位)=1 ;N(NSSA 外部路由位)=0 P=0) :特殊区域具有特定的属性和路由传播规则,邻居路由器在这些特殊区域标识上必须一致,以确保对路由信息的处理方式相同。
- MA 网络中,网络掩码必须一致 :在多路访问(MA)网络中,如以太网,网络掩码一致是确保网络地址规划和路由计算的准确性的重要条件。
- 必须同时使用单播或组播更新 :这确保了邻居之间的更新报文发送方式的一致性,避免因发送和接收方式不同而导致更新报文丢失或无法处理。
- 更新源检测(双方的 IP 地址必须在同一网段) :只有当更新源(发送更新报文的接口 IP 地址)在同一网段,才能保证它们在逻辑上处于同一网络,从而能够正常通信和建立邻居关系。
邻居状态下,MA的网络中会选举DR(指定路由器) BDR(备份指定路由器)
DR选举:
1.比较优先级(范围:0-255,默认优先级为1,越大越优)
2.比较各自的router-id,越大越优
注意:1.DR抢占是关闭的 2.DR是一个接口概念 3.优先级范围0-255,数字为0代表不参加选举 4.先选BDR,再升级为DR
主从选举:发生在exstart状态,通过双方router-id进行比较,router-id大的一方为主。发送的主从选举DBD,DBD总包含了MTU值(若双方的MTU值不同,则卡在exstart状态)
router-id选举规则:
1.手工指定最优先
2.选举所有逻辑中ip地址最大的
3.选举所有物理接口ip地址最大的
五,ospf基本配置
开启 OSPF 进程并配置 Router ID:
ospf 1 router-id 1.1.1.1
其中,"1"是进程号,缺省为 1;"1.1.1.1"是手动配置的 Router ID
配置区域:
area 0/0.0.0.0
network 192.168.0.0 0.0.0.255
上述命令将 192.168.0.0/24 网段宣告到区域 0 中,使用反掩码(255.255.255.255 - 掩码)来匹配网段。
常用的 OSPF 配置命令:
修改 Hello 包发送间隔:ospf timer hello 10 ,其中"10"为间隔时间(单位为秒)。
修改 Hello 包超时间隔:ospf timer dead 40 。
显示 OSPF 接口信息:display ospf interface g0/0/0 。
修改 OSPF 接口优先级:ospf dr-priority 100 。
修改开销(cost):ospf cost 10 ,取值范围为 1 至 65535,缺省为 1。
调整带宽参考值:bandwidth-reference 100 ,默认为 100Mbps,需在整个 OSPF 网络中统一调整。
重启 OSPF 进程:reset ospf process 。
ospf三张表:
-
邻居表(Neighbor Table):也称为邻居关系表。该表记录了与本地路由器建立了邻居关系的其他路由器的信息,包括邻居路由器的 Router ID、接口地址、状态、Hello 间隔、失效时间等。通过查看邻居表,可以了解到哪些路由器与本地路由器成功建立了邻居关系,以及它们的相关参数和状态。display ospf peer brief可查看
-
链路状态数据库(Link State Database,LSDB):存储了本区域内所有路由器的链路状态通告(LSA)。LSDB 中的 LSA 描述了网络的拓扑结构和链路状态信息。每个路由器通过与邻居交换 LSA 来同步 LSDB,确保所有路由器对网络拓扑有一致的认识。display ospf lsdb可查看
-
路由表(Routing Table):根据 LSDB 计算得出的最优路由信息表。OSPF 路由器使用 Dijkstra 算法根据 LSDB 中的链路状态信息计算出到达各个目标网络的最短路径,并将这些路由信息放入路由表中,用于数据的转发决策。display ip routing-table protocol ospf 可查看