ospf 开放式最短路径优先
简介:ospf是一个动态路由协 在华为设备上优先级为60 在思科设备上优先级为10 在一个大型网络上 手动配置静态路由的工作量非常大且复杂 这时可以使用动态路由协议让设备自动生成协商生成路由。
router-id
router-id是在一个区域内标识一台唯一的设备的 相当于我们的身份证号 他的格式和ip地址一样
- router-id 可以手工配置(建议采用手工)
- 当没有配置router-id时 他会在你的looback口上选择一个ip地址小的作为router-id
- 当没配置looback时 他会选择一个物理接口ip地址小的作为router-id
度量值
ospf使用开销来作为度量值 开销越小路径越优先
PC1要去网AR8他会走上面的路径 因为上面的路径开销小 为2 而下面的路径开销为10
就相当于一个人要去北京 可以用两块的就能到 也可以用10块钱就能到 当让选择两块钱的了
度量值=参考带宽/接口带宽
DR/BDR
作用是收集LSA 再广播给网络中的所有邻接关系的设备 相当于一个小组长 负责收集信息 然后在通告给所有组员 DR的存在 有效减少了广播LSA时的所使用的带宽
- BDR是DR的备份
- 选举 优先级大的优先—>router-id大的优先
- 优先级为0的不参与选举
- 不能抢占
- 优先级默认为1
如图
AR1的接口为DR 因为优先级都相同就选举router-id小的为DR
AR2的接口为BDR 因为选择次优的为BDR当AR1出现问题后 AR2自动变为DR 然后再选举过新的BDR
三个表
- 邻居列表
邻居列表就是 启动了ospf协议的路由器 连接了本路由器生成的邻居表
上图 AR1的邻居列表有 2.2.2.2 3.3.3.3 4.4.4.4 因为这三个都是他的邻居 其他同理 - 链路状态数据库LSDB
通过互相交互LSA生成的链路状态数据库 - OSPF路由表
使用SPF算法 运算出来的路由形成的路由表
四个网络类型
-
广播型
hello时间为10秒一次 40秒超时 会选举DR BDR -
P2P
hello时间为10秒一次 40秒超时 不会选举DR BDR -
非广播型
helo时间为30秒一次 会进行DR BDR的选举 -
P2MP
hello时间30秒一次 会进行DR BDR的选举 无需选举DR BDR
五种报文
Hello | 用于发现 建立 维护 邻居关系 |
---|---|
DD | 用于同步链路状态数据库 |
LSR | 用于请求自己没有的LSA |
LSU | 用于对LSR回复他需要的LSA 和用于链路更新 |
LSACK | 用于对LSU的确认 |
六个常用LSA
- LSA-1
每个ospf路由器都会发出 通过组播地址 224.0.0.5发送
描述本地接口的开销和接口状态
只在本区域内泛洪 - LSA-2
由DR产生 描述俺妈长度 和网络中存在哪些router-id
通过组播地址 224.0.0.6发送
只在本区域内泛洪 - LSA-3
由ABR产生 向去干区域描述本区域内的网络情况 - LSA-4
由ASBR所在区域内的ABR产生 向其他区域描述ASBR的位置 - LSA-5
由ASBR产生 向ospf网络描述外部网络 - LSA-7
由NSSA区域内的ASBR产生 描述外部网络
七个状态
-
down(失效)
设备关机 或者端口关闭 -
init(初始)
对方在我邻居列表里 但我不在对方的邻居列表里
AR40通过hello报文发送出去 41收到这个hello报文会将对方存在自己的邻居列表里
然后他就知道了对方的存在 但是对方不知道自己的存在 所以状态为init -
attempt(尝试)
在非广播网络中才有这个状态 -
2-way(双向通道)
-相互都存在对方的邻居列表 也就是大家都知道对方的存在
-41回复一个hello报文 40看到自己在对方的邻居列表里就会变为2-way状态 将对方放在自己的邻居列表里
-然后40会回复一个hello包 41收到后看到自己在对方的邻居列表里 也会将状态从init进入2-way
-在此 邻居状态建立完成 在广播型网路中开始选举DR和BDR -
exstart(交换初始)
发送DD报文 选取主从关系
此状态下交互的DD报文是没有LSA的 只用于选举主从关系 -
exchange(交换)
发送DD报文 进行链路状态数据库同步
由主发出 dd报文 从做回复 M=1则表示还有LSA没发完 =0则表示此条为最后一条 -
loading(加载)
经过上个状态的dd报文交互 就知道自己没有那些LSA
发送LSR LSU LSACK 进行链路状态数据库同步
到目前为止 所有交互的LSA都是摘要信息 并不是一条完整详细的
只有LSU有完整详细的LSA 这样在交互过程中可以节省资源 没必要吧整条都发过去 对方能识别就可以了
你没有的LSA 我再把他的详细信息发给你 -
full(全毗邻)
到此 大家的LSDB都相同了 你有的我也有 我有的你也有
链路状态数据库完全同步
进入邻接状态
ospf路由类型和优先级
区域内路由–>区域间路由—>type1外部路由—>type2外部路由
type1=外部开销+内部开销
type2=外部开销(默认为ytpe2)
过程
理解了ospf的建立到生成路由的整个过程 可以更好的掌握ospf
第一步:通过组播地址224.0.0.5发送hello报文
第二步:发现邻居的存在建立邻居列表 建立起了邻居关系 进入 2-way状态
第三步:开始选举DR BDR 上图优先级默认为1 都相同 所以比较router-id 小的为DR 所以 40选为DR 41 为BDR
第四步:进入Exstart状态 开始发送DD报文 此状态下 DD报文是不包含LSA的 只用来选出 主/从关系
第五步:选出主从关系后进入exchange状态 开始由主设备发起DD报文 从设备做回复的方式交互LSA
注意:所有设备和DR交互LSA 再由DR组播发送出去 通告给网络上的设备 作用相当于村长 将村民的信息收集起来再通过大喇叭告诉所有村民 而不是每个村民到处的去传播 这样有利于节省带宽 所以 其他设备只需要和DR和BDR建立邻接关系即可 BDR作为DR的备份也需要和其他设别建立邻接关系 但不会干DR的工作 只要DR出现故障了他就立刻变成DR
第六步:LSA交互完后 开始向对方请求自己没有的LSA 使用LSR报文请求 对方使用LSU报文回复 我在回复LSACK作为确认收到回复
第七步:LSDB同步完成 进入邻接关系
注意:上图中 其他设备只和DR BDR建立邻接关系 非DR BDR之间建立的是邻居关系 DR和BDR建立的是邻接关系
分清楚邻居和邻接非常重要
第八步:到此大家的LSA已经同步完成了 设备会进行一定的运算 计算出路由来
区域和路由器角色
骨干区域
区域0 为骨干区域 其他为标准区域
注意:ospf中区域是以路由器上的接口划分的
AR50 和AR54为ASBR ABR是标准区域链接骨干区域的路由器叫ABR 他用来向其他区域泛洪LSA3 用来告诉其他区域 本区域的网络情况
如图 AR56为 ASBR 在和外部网络系统连接的路由器叫ASBR 他负责泛洪LSA5 来告诉OSPF网络 外部网络的情况
而路由器54 他的角色为ABR 他会泛洪LSA4 来告诉网络中的所有人 如何能到达ASBR
特殊区域
特殊区域的存在可以减少LSA数目 因为在一个大型网络里面会存在很多LSA 有LSA就会建立链路状态数据库 LSA越多 数据库就越大 所以占用的内存也就越多 消耗的资源也就越多 特殊区域有效减少一些不必要的LSA 节省内存和资源
如上图 标准区域中会存在很多的LSA1 LSA2 LSA3 LSA4 LSA5 但是区域内只需要LSA1 LSA2 就足够了
-
末梢区域(stub)
设置为末梢区域
只有LSA-1 LSA-2 LSA-3
还能进一步减少 LSA-3 -
非完全末梢区域(NSSA)
设置在有ASBR存在的区域
只有LSA-1 LSA-2 LSA-3 LSA-7
能进一步减少LSA-3
ospf的知识不止这一点点 还有虚链路等很多有待深入研究的知识小白菜 做笔记 如果问题多多指教
来源:CSDN
作者:AlanJF
链接:https://blog.csdn.net/weixin_44162045/article/details/104221762