ospf 协议是网络层协议

此篇文章适合有一定网络基础的人

ospf 协议最多应用在企业网络中,针对于运营商网络并不是特别的适用,端口号为 89 通过 IP 进行数据的转发

ospf 基础知识

  • ospf 的路由更新通过组播地址:224.0.0.5 / 224.0.0.6 进行更新

  • spf 算法是 ospf 路由协议的基础,spf 算法有时也被称为 Dijkstra (迪杰斯特拉)算法

  • ospf 协议的普及率要比 is-is 协议的普及率高

  • ospf 协议的内部路由优先级为 10 ,外部路由优先级为 150 ,开销值为 1

  • ospf 中修改带宽的参考值命令:

    ospf 的度量值计算:参考带宽除以实际带宽

  • Stub 网络没有邻居(末节网络),Transnet 网络有邻居(记录出去的开销)

  • ospf 协议在域内是链路状态协议,在域间是距离矢量协议

    因为 ABR 会把一类和二类的 LSA 一同转换为三类的 LSA 传递出去

  • ospf 的进程号只具有本地意义,如果只有一个区域,那么任何区域都可以作为骨干区域

路由协议通用小知识

  • ospf 可以直接配置负载均衡

    配置通过多种路径进行转发报文

  • 不配置等价路由的情况下影响路由选路

ospf 中的网络类型

在 ospf 协议中一共有四种网络类型:

  • 广播网络(broadcast)

  • 点到点网络(P2P)

  • 点到多点网络类型(P2MP)

  • NBMA 网络

ospf 的工作流程

1、邻居建立

  • DOWN 状态习互相发送 Hello 报文,双方在接收到报文之后会进入 Init 状态

  • Init 状态习会发送带有邻居 ID 的 hello 报文,对方会进入 2-way 状态,之后邻居也会向本设备发送同样的带有邻居 ID 的 hello 报文----此状态经历完成之后,标志着邻居建立完成

  • 对于不支持组播网络的网络需要进行手动指定邻居

  • ospf 支持手动指定邻居,通过单播的方式

  • 帧中继网络建立邻居会进入 Attempt 状态尝试唤醒状态

2、同步链路状态数据库

Exstart 状态,发送 DD 报文,确认主从

Exstart 状态里面有一些序列号:

  • x 为序列号
  • I 表示为第一个数据包
  • MS 确认是否为 Master (主从关系)
  • M 表示后面还有其他的数据包

主从关系的选举是根据谁的 RID 大的为主,选举主从是为了隐式确认(主从序列号)

当 ospf 开启了 MTU 检测之后,当 MTU 超过 1500 之后邻居的状态会卡在 Exstart 状态

Exchange 状态

Exchange 状态,第一次发送的 DD 里面携带各自的序列号,选举主从之后会响应主设备的序列号,之后开始对比 LSDB 数据库进行摘要信息的交互,此状态可以直接进入 Full 状态

Loading 状态

经过 exchange 状态的对比,双方都会知道自己缺少什么信息,在 Loading 状态就会向对方请求回复以及进行确认消息

LSR -- 请求

LSU -- 回复--最重要的 LSA 就存在于 LSU 报文中

LSACK -- 确认--当对方之后收到路由信息之后会发送一个确认收到的信息

3、计算最优路由

执行 spf 算法进行计算最短路径树

ospf 邻居状态机

  • Down:在此状态下的路由器不会从邻居收到任何的信息。
  • Init:发送 hello 报文,此状态发送的 hello 报文是单向的 hello 报文。
  • Attempt:此状态只存在于 NBMA 环境中手动配置邻居的情况(一般情况下见不到此状态)。
  • 2-way:发送 hello 报文,此状态下邻居双发都发送过彼此的 hello 报文,此状态标志着邻居状态建立成功。
  • Exstart:此状态发送的 DD 报文是一个假的 DD 报文,主要是用来选举主从关系的报文。
  • Exchange:真的 DD 报文,发送 DD 报文用于告诉对方自己简要的 LSDB 摘要信息。
  • Loading状态:里面包含 LSR、LSU、LSACK LSU(里面包含的LSA),通过请求、发送信息和确认最后进入 Full 状态进行计算最短路径树。
  • Full:开始计算到各个节点的路由--标志着邻接关系的建立成功。

作者:Joker

OSPF 路由协议详解(一)的更多相关文章

  1. OSPF路由协议详解

    OSPF:开放式最短路径优先协议无类别链路状态路由协议,组播更新224.0.0.5/6:跨层封装到三层,协议号89:基于拓扑工作,故更新量大-----需要结构化部署–区域划分.地址规划触发更新.每30 ...

  2. 动态选路、RIP协议&&OSPF协议详解

    动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...

  3. OSPF协议详解

    CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...

  4. BGP路由协议详解(完整篇)

    原文链接:http://xuanbo.blog.51cto.com/499334/465596/ 2010-12-27 12:02:45 上个月我写一篇关于BGP协议的博文,曾许诺过要完善这个文档,但 ...

  5. OSPF基本详解

  6. BGP路由协议详解(完整版)

    (免责声明:来源于网络,版权原作者所有,转载仅为了传播.学习交流使用,如需删除请私信联系,严禁其他用途.) END 关注「开源Linux」加星标,提升IT技能 好文章,分享.点赞.在看三连哦️↓↓↓

  7. 《OSPF和IS-IS详解》

    <OSPF和IS-IS详解> 基本信息 作者: (美)Jeff Doyle 译者: 孙余强 出版社:人民邮电出版社 ISBN:9787115347886 上架时间:2014-4-25 出版 ...

  8. OSPF详解

    OSPF 详解 (1) [此博文包含图片] (2013-02-04 18:02:33) 转载 ▼ 标签: 端的 第二 以太 第一个 正在 目录 序言 初学乍练 循序渐进学习OSPF 朱皓 入门之前 了 ...

  9. 《OSPF和IS-IS详解》一1.5 ARPANET内的路由选择

    本节书摘来异步社区<OSPF和IS-IS详解>一书中的第1章,第1.5节,作者: [美]Jeff Doyle 译者: 孙余强 责编: 傅道坤,更多章节内容可以访问云栖社区"异步社 ...

随机推荐

  1. git 回滚方式

    git push 命用于从将本地的分支版本上传到远程并合并. 命令格式如下: git push <远程主机名> <本地分支名>:<远程分支名> 如果本地分支名与远程 ...

  2. spring事务详解(基于注解和声明的两种实现方式)

    Spring事务( Transaction ) 事务的概念 事务是一些sql语句的集合,作为一个整体执行,一起成功或者一起失败. 使用事务的时机 一个操作需要多天sql语句一起完成才能成功 程序中事务 ...

  3. python3判断一个数是否为素数

    while True: num = int(input('请输入一个数:')) for i in range(2,num):#判断在num之前的数能不能把num整除 if(num%i == 0): p ...

  4. 域渗透 | kerberos认证及过程中产生的攻击

    ​文章首发于公众号<Z2O安全攻防>​ 直接公众号文章复制过来的,排版可能有点乱, 可以去公众号看. https://mp.weixin.qq.com/s/WMGkQoMnQdyG8UmS ...

  5. C#中的类型转换-自定义隐式转换和显式转换

    目录 前言 基础知识 示例代码 实际应用 问题 答案 报错 用户定义的转换必须是转换成封闭类型,或者从封闭类型转换 参考 其他 应用和设计 读音 参考 前言 有时我们会遇到这么一种情况:在json数据 ...

  6. SpringMVC 和SpringBoot中的注解是如何起作用的,如何实现的

    SpringMVC源码解读 - HandlerMapping - RequestMappingHandlerMapping初始化   https://www.cnblogs.com/leftthen/ ...

  7. 怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?

    清屏:clear 退出当前命令:ctrl+c 彻底退出 执行睡眠 :ctrl+z 挂起当前进程 fg 恢复后台 查看当前用户 id:"id":查看显示目前登陆账户的 uid 和 g ...

  8. 关于table表格中点击一个按钮获取该行的某一列的值并将其传到模态框的问题解决

    <tbody> {% for item in all_dataset %} <tr> <td>{{ item.nid }}</td> <td> ...

  9. 什么是基于 Java 的 Spring 注解配置? 给一些注解的例子?

    基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分 Spring 配置而非通过 XML 文件. 以@Configuration 注解为例,它用来标记类可以当做一个 bean ...

  10. resion 学习笔记

    resin是一个非常流行的web引用服务器,对servlet和jsp提供了良好的支持,自身采用java开发,支持集群,还支持PHP. resin分为普通版和专业版,主要区别是专业版支持缓存和负载均衡. ...