OSPF协议原理详解

OSPF协议原理详解OSPF 协议原理详解基本概念 OSPF 网络类型 OSPF 报文类型 OSPF 邻居建立过程 DR 和 BDR 的选举 LSAOSPF 区域类型和结构 OSPF 路径选择 OSPF 虚链路一 链路状态路由协议 LinkStatusPr 基本概念 1 OSPF 的概念链路状态路由选择协议又被称为最短路径优先协议 它基 SPF shortestpath 算法 他比距离矢量协议复

一.链路状态路由协议 (Link Status Protocol)基本概念

OSPF的概念

链路状态路由选择协议又被称为最短路径优先协议,它基SPF(shortest path first )算法。他比距离矢量协议复杂的多。路由器的链路状态的信息称为链路状态,包括:接口的IP地址和子网掩码,网络类型,(如以太网链路或串行点对点链路),该链路的开销,该链路上的所有的相邻路由器。

OSPF特点

链路状态路由协议是层次式的,网络中的路由器并不向邻居传递“路由项”,而是通告给邻居一些链路状态。链路状态协议只是通告给邻居的一些链路状态。运行该路由协议的路由器不是简单地从相邻的路由器学习路由,而是把路由器分成区域,收集区域的所有的路由器的链路状态信息,根据状态信息生产网络拓扑结构,每一个路由器再根据拓扑结构计算出路由。

OSPF工作过程

(1)了解直连网络
(2)向邻居发送hello包(邻居指启用了相同链路状态路由协议的其他任何路由器)
(3)建立链路状态数据包
(4)将链路状态数据包泛洪给邻居 路由器将其链路状态信息泛洪到路由区域内的其他所有链路状态路由器,他一旦收到来自邻居的LSP,不经过中间计算,立即将这个LSP从除接收该LSP口以外的所有接口发出,此过程在整个路由区域内的所有路由器上形成LSP的泛洪效应。LSP在路由器初始启动期间,或路由协议启动过程期间,或在每次拓扑发生更改(包括链路接通和断开)时,或是邻接关系建立,破裂时发送,并不需要定期发送。


PS:距离矢量路由协议则不同,她必须首先运行贝尔曼-福特算法来处理路由更新,然后才将他们发送至其他路由器,而链路状态协议则是再泛洪完成后在计算SPF算法,因此到达收敛的速度比距离矢量路由协议速度要快。

(5)每台路由器使用数据库建立一个完整的拓扑图并计算通向每个目的网络的最佳路径。

OSPF的网络类型

点到点连接

将一对路由器连接起来的网络,使用的是PPP HDLC协议
使用组播224.0.0.5来发送各种数据包
没有DR/BDR的选举,直接形成full邻接关系,不用手动指邻居
在这里插入图片描述


广播

多路访问网络,如以太网,需要DR和BDR的选举,不用手动指邻居
通常以组播发送HELLO报文,LSU报文,和LSACK报文,以单播形式发送DD和LSR报文
DR和BDR给非指定路由器发送消息使用的是组播224.0.0.5
非指定路由器给DR和BDR发送消息使用的是组播224.0.0.6

在这里插入图片描述


非广播多路访问(NBMA, Non-Broadcast Multiple Access)

点到多点

OSPF报文

OSPF报头格式

OSPF直接封装在IP数据包中

OSPF数据包

Hello包
DBD包(Datebase Description)
LSR包(Link-State Request)
LSU(Link-State Update)
LSAck

OSPF邻居建立过程(重!)

首先对邻居关系,和邻接关系要区分开,两台路由器互相之间的状态是2-way则表明邻居关系建立,当邻居关系为FULL是表明邻接关系建立

关系变化过程

down->init->2-way->exstart->exchange->loading->full
down:表示还没有建立起邻接关系,没有检测到活动邻居
init:表示从对端收到的HELLO包中,没有自己的路由器ID信息
2-way:表示从对端收到的HELLO包中,已经有自己的路由器ID信息了,已建立邻居关系可以共享链路状态数据
exstart:表示正在确定主从关系,即谁先发送DBD
exchange:在主的带领下开始交换DBD
loading:请求更详细的信息
full:已建立完全邻接关系 完成更新过程 其数据库与邻居完全相同






过程详解

邻居建立过程(down->init->2-way)

希望建立完全OSPF邻居邻接关系的路由器之间交换OSPF HELLO包(组播224.0.0.5),双方的邻居此时都处于down状态,这是邻居会话的初始状态,当路由器从邻居收到了一个Hello包,但是没有在邻居Hello包中看到自己的路由器ID时,他将转化为INIT状态,当路由器从邻居收到Hello包中看到自己的路由器ID时,他将转为2-Way状态。表示邻居之间已经建立了双向通信

交换LSDB过程(exstart->exchange)
同步链路状态数据库过程(Loading->Full)

OSPF 邻居关系不能正常建立的原因和解决方法

  1. 接口上没有激活 ospf
  2. 物理层或者是数据链路层协议 down.
  3. 建立邻居的接口被 passive掉
  4. OSPF的 hello 组播地址被 ACL Block
  5. 在 broadcast链路上的子网掩码不匹配
  6. Hello/dead 间隔不匹配
  7. 认证方式或者是认证密码不匹配
    使用 debug ip ospf adj 来查看,可以自己使用不同的情况来验证
  8. 两台路由器处于不同的 AREA
  9. Stub/transit/NSSA 区域类型不匹配

DR和BDR的选举

DR,BDR存在意义

DR BDR存在于多路访问网络中,作用是减少区域内的同步次数,降低路由器的内存消耗,减少了路由流量更新,确保同一区域内的路由器拥有相同的LSDB

选举过程

LSA(重!!)

LSA基本概念

最新LSA的判定

·更高的序列号:每30(1800S)分钟扩散一次
·校验和:每隔五分钟重新校验 除Age字段之外 进行校验, 越大越新
·老化时间:默认60分钟 时间计数,每经过一台路由器时间+1

LSA类型

类型1:路由器LSA Router Link States

链路状态ID(LSID):源路由器ID
通告范围:只在特定区域内泛洪
通告内容:
1.路由器在区域内的接口和接口所连接的邻居(包含链路的开销)路由器链路状态。直连链路信息
2.网络连接类型
点到点的连接,描述的是邻居路由器ID
中转网络的连接,描述的是DR接口的地址
末节网络的连接,描述的是IP网络的子网
虚链路,描述的是邻居路由器ID
3.链路开销
4.是否为ABR









类型2LSA:网络LSA Net Link States
类型3LSA:汇总LSA Summary Net Link States(O IA)
与3类LSA有关的计算
类型4LSA:ASBR汇总LSA
与4类LSA有关的计算
类型5LSA:自治系统LSA
类型7LSA:NSSA外部LSA

其他有关LSA的特性及操作

OSPF区域类型和结构(重!)

区域类型

(1)骨干区域:所有区域必须连接骨干区域
(2)标准区域:接收所有内部和外部的路由信息
(3)末节区域:不接受自治系统外部的路由信息(不接受4类和5类LSA),通过一条默认的全0三类LSA前往自治系统外部
(4)完全末节区域:只接收区域内部路由信息 ,通过默认路由和别的区域相连(不接受3,4,5类LSA,通过默认路由与外部网络通信)
(5)NSSA:接收区域路由和有限的外部路由信息 限制自治系统外信息,NSSA区域中可以有ASBR,存在1/2/3/7类LSA(3类还有一条全0的特殊3类)
(6)完全NSSA:只接收区域内的路由信息和有限的外部路由信息,存在1/2/7类LSA,一条全0的特殊3类。
配置 NSSA Area后要在区域内手工配置一条默认路由(以便访问OSPF中其他区域的网络)





OSPF末节区域的默认路由

OSPF路径选择

OSPF路由类型

选路规则

区域内和区域间路由的选取(同一区域内多台ABR时)

为了避免区域边界单点故障的情况,多数网络中会至少会使用两台ABR,以防止ABR出现故障而造成的网络瘫痪。ABR可以同时从区域内路由器和另一台ABR学到某个特定子网的信息。ABR可以学到一条区域内的路由(来自所连接区域),和一条区域间路由(来自另一台ABR,不是直接到达网络所在区域而是先到ABR1再通过ABR1到另一个区域,通过了两个区域所以算作区域间路由)。即使区域间路由的开销值要比区域内路由的开销值小,也会优选选取区域内的路由

OSPF虚链路

定义

指一条通过一个非骨干区域连接到骨干区域的链路

目的

特点及规则

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224816.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:04
下一篇 2026年3月17日 上午11:05


相关推荐

  • 情感词典构建_文本情感分析的意义

    情感词典构建_文本情感分析的意义这是4个月前做的。受当时的知识水平的限制,还没有接触到机器学习和相关理论,记录一下作为以后备查。当然,如果你想看源码和资料,点击我。从结项到现在,博主一直在使用机器学习并结合相关论文进行情感极性分析(源码点我),效果远远好于本篇代码的效果。但是,本篇的数据处理和特征选择还是很有意义的,特此记录。摘要        当今社会媒体的发展导致了金融舆论数据的爆炸式增长。因此,针对金融舆论数据的情

    2022年8月23日
    12
  • Linux Hook技术实践

    Linux Hook技术实践LInuxHook技术实践什么是hook简单的说就是别人本来是执行libA.so里面的函数的,结果现在被偷偷换成了执行你的libB.so里面的代码,是一种替换。为什么hook恶意代码注入调用常用库函数时打log改变常用库函数的行为,个性化怎么hook这个东西在win里面有现成的api,但是在linux里面却要主动修改ELF文件,或者修改动态库链接路径。我看网上写的好多挺麻烦的,而且还要调用

    2022年5月25日
    34
  • 什么是Web Service(SOAP)?

    什么是Web Service(SOAP)?SOAP请求(SimpleObjectAccessProtocol,简单对象访问协议)是HTTPPOST的一个专用版本,遵循一种特殊的XML消息格式,Content-type设置为:text/xml,任何数据都可以XML化。SOAP:简单对象访问协议。SOAP是一种轻量的,简单的,基于XML的协议,它被设计成在web上交换结构化的和固化的信息。SOAP可以和现存的许多因特网协议和格式结合…

    2022年7月24日
    13
  • Error:Execution failed for task toolchains\mips64el-linux-android-4.9\prebuilt\windows-x86_64.异常处理

    Error:Execution failed for task toolchains\mips64el-linux-android-4.9\prebuilt\windows-x86_64.异常处理

    2021年3月12日
    143
  • “养虾热”带火Mac mini:华强北一机难求,普遍加价几百元

    “养虾热”带火Mac mini:华强北一机难求,普遍加价几百元

    2026年3月13日
    2
  • Php公众号40029,网页授权获取微信用户信息错误40029:不合法的oauth_code

    Php公众号40029,网页授权获取微信用户信息错误40029:不合法的oauth_code这几天测试刚完成的网页授权获取微信用户信息功能。在第一步:用户同意授权获取code,通过code获取access_token时,有时会出现40029错误。经过调试,发现问题出现在redirect_uri=REDIRECT_URI当跳转到授权链接后,微信会发出两次转向至redirect_uri的相同请求(两次带进来的code是相同的)。第一次的code后已经成功换取得openid以及access_t…

    2022年5月1日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号