OSPF
Open Shortest Path First,开放式的最短路径优先协议
基本概念
组播发送:224.0.0.5/6
标准的链路状态型路由协议—路由器之间传递拓扑
版本:OSPFv2–IPv4 OSPFv3–IPv6
更新方式:触发更新 存在周期更新30min
OSPF网络需要结构化部署:1、区域划分 2、IP地址规划
链路状态型路由协议的距离矢量特征–区域之内传递拓扑,区域之间传递路由表
优先级 10 COST值=参考带宽÷接口带宽
OSPF数据包
hello包:用于发现、建立并保活(10s)邻居关系。存在全网唯一的Router-ID,用于路由器
的身份标识,使用的IP地址的方式表示
DD包:Database Description,数据库描述包
LSR:链路状态请求
LSU:链路状态更新
LSAck:链路状态确认
OSPF状态机:
down:未启动协议。一旦启动协议并发出hello包之后,立即进入下一状态
init:等待邻居回复的状态。若收到的hello包中携带了自己的RID,则和对方一起进入下一状态
2-way:表示邻居关系建立
条件匹配:若成功,则进入下一状态;若失败,仅hello包保活
exstart:预启动,使用假的DD报文比较RID,大者优先进入下一状态。
exchange:双方交换DD报文
loading:使用LSR/LSU/LSAck获取未知的路径拓扑或者路由
full:邻接关系建立,收敛完成。
OSPF工作过程
启动协议后,设备本地基于224.0.0.5组播发出hello包,发现并建立邻居关系,生成邻居表;
之后进行条件匹配,若成功,则进入下一状态;若失败,则仅hello包10s进行邻居关系保活。
RID大者优先进入下一状态,先交换DD,然后再使用LSR/LSU/LSACK收集未知的LSA,生成LSDB–数据库表
设备基于此LSDB,使用SPF算法计算出去往目标的最佳路径,生成路由表,收敛完成。
之后10s周期保活,30min周期性比对DD
网络结构发生变化:
1、新增&断开:直连发生变化的设备通过DBD/LSR/LSU/LSACK完善即可
2、设备无法通信:hello 10s 保活 dead time 40s–计时结束后,删除邻居关系以及从邻居处学习到的所有路径
名词解释:
LSA:链路状态通告–OSPF中发送的拓扑信息或路由
LSDB:链路状态数据库,LSA的集合
之后10s周期保活,30min周期性比对DD
OSPF基本配置
[r1]ospf 1 router-id 1.1.1.1 //启动协议,并配置进程号。同时可以选择配置路由器的RID。
若不配置,路由器自己选择,环回接口最大>物理接口最大
宣告:1、激活接口 2、发布拓扑或路由 3、区域划分
[r1-ospf-1]area 0 //进入区域
[r1-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
反掩码
32位二进制,使用点分十进制的方式表示,由连续的0和连续的1构成。
若反掩码为0,表示IP对应位固定;若为1,表示可变。
172.16.1.00000000 172.16.1.0—172.16.1.3
0.0.0.00000011
区域划分规则:
1、必须拥有区域0(骨干区域),所有非骨干的区域必须直连骨干区域
2、必须拥有ABR–区域边界路由器
当设备启动OSPF之后,使用224.0.0.5发出hello包,发现并建立邻居关系,生成邻居表;
display ospf peer brief //查看邻居关系摘要
OSPF Process 1 with Router ID 2.2.2.2 //自己的信息
Peer Statistic Information
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
0.0.0.1 GigabitEthernet0/0/2 3.3.3.3 Full
邻居的区域ID 本地连接邻居的接口 邻居的RID 和邻居的状态
邻居的区域ID:area 0—>0.0.0.0
area 12345—>0.0.48.57
当设备使用DD/LSR/LSU/LSAck数据包收集完所有未知的LSA时,本地生成LSDB–链路状态数据库表(LSA的集合)
display ospf lsdb //查看本地的LSDB表
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 502 48 80000007 1
Router 1.1.1.1 1.1.1.1 863 48 80000006 1
Network 172.16.4.1 1.1.1.1 863 32 80000002 0
Sum-Net 172.16.3.0 2.2.2.2 796 28 80000001 2
Sum-Net 172.16.5.0 2.2.2.2 856 28 80000001 1
本地基于LSDB,使用SPF算法计算出到达目标网段的最佳路径,生成路由表
display ip routing-table protocol ospf //仅查看OSPF学习到的路由条目
Route Flags: R - relay, D - download to fib
Public routing table : OSPF
Destinations : 3 Routes : 3
OSPF routing table status :
Destinations : 3 Routes : 3
Destination/Mask Proto Pre Cost Flags NextHop Interface
172.16.2.0/24 OSPF 10 2 D 172.16.4.2 GigabitEthernet
0/0/1
172.16.3.0/24 OSPF 10 3 D 172.16.4.2 GigabitEthernet
0/0/1
172.16.5.0/24 OSPF 10 2 D 172.16.4.2 GigabitEthernet
0/0/1
OSPF routing table status :
Destinations : 0 Routes : 0
路由表中:
所有OSPF计算所得的路径使用OSPF表示
OSPF优先级为10
Cost=参考带宽÷入接口带宽 默认,参考带宽为100Mbits/s
OSPF选路规则:
若去往某一个目标拥有多条路径时,优先选择整条路经控制层面入接口Cost之和最小的
控制层面:路由来的方向
数据层面:数据去的方向
当接口带宽大于参考带宽时,COST取1,会导致选路不佳。
可以通过修改参考带宽来解决
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 10000 //修改参考带宽
注意:参考带宽的修改需要全网一致