全网最详解答OSPF基础

目录

此图片为思科的(有些地方不对)

总结状态机:

OSPF的工作过程:

结构突变

[1 突然新增一个网段--触发更新](#1 突然新增一个网段--触发更新)

[2 突然断开一个网段--触发更新](#2 突然断开一个网段--触发更新)

[3 无法通信---dead time](#3 无法通信---dead time)

OSPF的配置

​编辑条件匹配:

​编辑1,指定路由器---DR

2,备份指定路由器---BDR

3,DR/BDR的选举规则

4,总结

OSPF协议号---89

OSPF的头部:

[Hello包 :](#Hello包 :)


此图片为思科的(有些地方不对)

注意:在华为中 一般是组播,去发送hello包,不会unicast(单播)去发送

Two--Way状态---表示邻居关系的建立---就是在B给A发消息的过程之中,A看到了B的数据包中有A的数据包(就是Hello包里面有A的router-id),所以就进入了Two--way状态

然后,进入邻居关系后,这之间会有一个条件匹配的过程,如果能够完全匹配则进入到下一个状态,如果匹配不上,则一直保持着邻居状态,仅仅使用Hello包周期保活即可

匹配成功后:

这里可以看到他们进入了exstart状态,并且在争着进入到下一个状态---他们在比较routerid的大小,那为什么他们会争着进入下一个状态呢?哦,原来是下一个阶段他们要进入到exchange的状态,一个交换信息的过程,要开始真正的发送数据了,那为什么不他们一起进入下一个阶段?

---数据资源占用的问题,会占用大量的LSA资源---错峰发送--减少LSA信息,减少资源占用--、

Estart状态--这里会有一个主从关系选举的过程

1,通过RID进行主从关系的选举,RID大的为主,为主可以优先获得LSA的信息---华为设备

像我的图中可以看到B的RID更大,但是是他先向A发送LSDB,这里和华为是反着的--思科

2,DBD包是通过隐性确认---不是用ACK确认的,为主的可以主导隐性确认

什么叫隐性确认呢?

----他和显性的区别就是显性是通过ACK来发确认包的,隐性就是如果A(主)给B(从)发送数据包时,会携带seq(序列号),发送给B,然后B会回一个相同的seq给A(B不能主动给A发消息,就是如果B有什么变化了,B也不能主动给A发,只有等A发过来,B将信息带进去)

思考一下:为什么这里要用DBD而不用HELLO(因为都是带的RID)----主要就是标识了我们现在已经是邻居关系了,而不是之前什么都不认识的阶段----这里使用未携带数据的DBD包主要就是为了区分和之前的邻居关系

Exchage状态:交换摘要信息

Loading---注意这里没有ACK对于华为来说这是错误的,不会去进行显性应该是隐性

FULL状态---标志着邻接关系的建立--邻接关系的设定,是为了和之前的邻居关系区分,邻居是单纯用Hello保活,只有邻接才发LSA信息

总结状态机:

DOWN--启动OSPF,发送Hello包进入下一个状态

init状态(初始化):收到的Hello包中有本地的RID,则进入下一个状态

Two-way--双向通信状态---标志着邻居关系的建立

(条件匹配?)匹配成功则进入下一个阶段,匹配失败,则保留在邻居关系,仅使用Hello包进行周期保活

Exstart(预启动状态):使用未携带数据的DBD包进行主从关系的选举,为主的可以优先获取LSA的信息;

EXCHANGE状态(准交换的状态):使用携带数据的DBD包共享目录信息

LOADING---使用LSR,LSU,LSACK包获取未知的LSA信息

FULL--标志着邻居关系的建立

OSPF的工作过程:

启动配置完成后,0SPF向本地所有运行协议的接口以组播224.0.0.5的形式发送hello包,hello包中包含本地的RID以及自己已知的邻居的RID。之后,将收集到的邻居关系记录在一张表--- 邻居表。邻居表建立完成后,将进行条件匹配;如果失败,则停留在邻居关系,仅使用hello包进行周期保活。如果匹配成功,则开始建立邻接关系。首先使用未携带数据的DBD包进行主从关系选举,之后使用携带数据的DBD包共享目录信息。之后,本地使用LSR/LSU/LSAck包获取未知的LSA信息。完成本地数据库的建立---LSDB ---数据库表。

最后,基于本地的链路状态数据库,生成有向图及最短路径树,之后,计算出到达未知网段的路由信息。将生成的路由信息加载到本地的路由表中。

收敛完成之后,OSPF依然会每10秒发送一次数据包进行一次周期保活,每30MIN进行一次周期更新。

结构突变

1 突然新增一个网段--触发更新

会立即变更信息,会立即将变更信息通过LSU包传递出去,需要ACK确认

当我以下面的(ospf配置)为例:突然在R1上增加一个L1的换回地址

2 突然断开一个网段--触发更新

立即发了一个LSU包更新,然后发送ACK进行确认

就是将OSPF的宣告直接去掉就行

3 无法通信---dead time

OSPF的配置

1,启动OSPF进程:

R1\]ospf 1 router-id 1.1.1.1 2,创建区域: \[R1-ospf-1\]area 0 \[R1-ospf-1-area-0.0.0.0

3,宣告:

1,激活接口

2,发布路由

R1-ospf-1-area-0.0.0.0\]network 12.0.0.1 0.0.0.0--- 反掩码(由连续的0和1构x成,这里0代表不可变,1代表可变)---精准宣告 \[R1-ospf-1-area-0.0.0.0\]network 1.1.1.0 0.0.0.255---网段宣告 配置完成后,详细说一下内容: 查看邻居表:\[R1\]display ospf peer ![](https://i-blog.csdnimg.cn/direct/4b1e9a6812484f029624330414da27f1.png) ![](https://i-blog.csdnimg.cn/direct/87c4cfd9c0f7436cb13e2d8f9a6fafc5.png) :华为设备默认不开启MTU的检测值 看邻居表的摘要信息: [R1]display ospf peer brief ![](https://i-blog.csdnimg.cn/direct/67486ddd62054dada4f0be79e5bd1988.png) 查看数据库表: [R1]display ospf lsdb ![](https://i-blog.csdnimg.cn/direct/18607dd19f854a13a624037dae6fb312.png) 展开一条LSA信息 \[R1\]display ospf lsdb router 2.2.2.2 ![](https://i-blog.csdnimg.cn/direct/c7b0d4f1b65e4ad3958b39ccaa194367.png) 华为体系下OSPF的默认优先级为10 cost=参考带宽 / 真实带宽 ---华为体系下参考带宽默认是100Mbps ![](https://i-blog.csdnimg.cn/direct/36eb0704132a410abccb162e953b9ca5.png) 当我们的参考带宽为100时,按照上面的计算上面的速率快但是 算出来的结果却是上面为1(计算方式,小于1,取1,大于1,直接取整数部分),那么上面的cost=3 下面为2,但是明明上面的速率会更快,所以我们需要修改带宽 \[R1-ospf-1\]bandwidth-reference 1000 ![](https://i-blog.csdnimg.cn/direct/632d3cb9610d417b918856f1abdc8329.png) 如果一个改了,所有设备都得改参考带宽,都的修改为一样的,这是一个评判标准 ### ![](https://i-blog.csdnimg.cn/direct/e32c0b4201234a1f94d1413a196bc8bc.png)条件匹配: ![](https://i-blog.csdnimg.cn/direct/287e8c37756544378fedca6efafe1992.png) 首先看一下,如果在此图里面R1-R4都是处于一个邻接的状态,R5跟R2是邻接的状态,如果此时在R1的上行链路有一个设备断了,就会引发触发更新,这时,就会将LSU发给自己的邻接,如果都是像上图那样(蓝色线为邻接关系),R1就会告诉R2,R3,R4,R5,但是因为此时R2跟R3--R5也是邻接关系,那么他也将发送LSU,那么将会有大量的LSA信息发给链路上所有的邻接设备,导致资源更新多,而且我OSPF协议本来资源占用也多,这样,就会有更多更大的资源更新。所以我们就需要条件匹配来去掉一部分邻接关系 所以就砍掉R2,R3,R4之间的邻接关系 #### ![](https://i-blog.csdnimg.cn/direct/42e9de82da224a388fcf1f6ef37d51ad.png)1,指定路由器---DR #### 2,备份指定路由器---BDR #### 3,DR/BDR的选举规则 1,比较优先级--大的为DR,次大的为BDR,所有接口的优先级为1 修改优先级的办法 \[R1-GigabitEthernet0/0/0\]ospf dr-priority ? INTEGER\<0-255\> Router priority value 2,如果优先级相同,则比较RID 看一下R1的邻居表 ![](https://i-blog.csdnimg.cn/direct/389f90cfd3e64dbeb8dba4f3f6fd2e7f.png) 诶?怎么DR是R1的接口?按照优先级相同的话我们应该是12.0.0.2来当DR,怎么回事呢? 原来是因为我最开始配置的时候先配的R1,当环境中没有其他设备的时候,启动ospf的时候,自然环境里面只有我一台设备,当我开启R2的时候,看到了环境中已经有DR了,那我就乖乖去当BDR---这也叫非抢占模式 那为什么要设置为非抢占模式呢? 我觉得主要是为了提高网络的稳定性 首先如果在我的网络中有n台(n\>=4)路由器,并且DR,BDR已经选举好了,收敛完成。如果此时有一个优先级更大,或者RID更大的设备加入到网络中,此时我的DR和BDR都要重新选举,又要重新开始发LSA的信息,让一个原本收敛完成的网络,再次变得不稳定--所以选非抢占模式 但是会有一个选举时间----等同于死亡时间(40s) 此时我们只需要重新启动进程,就可以让DR到12.0.0.2上面 命令:\reset ospf 1 process 可以看到重新开始商量邻接关系: ![](https://i-blog.csdnimg.cn/direct/f5cbff9105504e63954fe693d9c68129.png) 再次查看peer表: ![](https://i-blog.csdnimg.cn/direct/10506093d6c646e3a7af01f3e1faf7c0.png) 回归正常 #### 4,总结 条件匹配 --- 在MA网络中,若所有的设备均为邻接关系,将出现大量的重复更新;所以,需要进行DR/BDR的选举,所有非DR/BDR(DROther)之间仅维持邻居关系。DR和BDR需要和其他设备之间建立邻接关系,一个MA网络中,如果DR和BDR都齐全,则至少需要4台设备才能看到邻居关系。DR和BDR其实是接口的概念。 其实DR,BDR其实是一个接口的概念 ![](https://i-blog.csdnimg.cn/direct/df03c89dd93e4adcb7d12f60ada0e5e4.png) ## OSPF协议号---89

相关推荐
楠目6 分钟前
OSPF综合性实验
网络
寒..10 分钟前
OSPF综合实验
网络·智能路由器
猎人everest20 分钟前
SPN技术介绍
网络·信息与通信
老六ip加速器31 分钟前
在另一个省发布抖音作品,IP属地会随之变化吗?
网络·网络协议·tcp/ip
music&movie35 分钟前
手写系列——transformer网络完成加法和字符转译任务
网络·人工智能·transformer
筏.k36 分钟前
C++ asio网络编程(4)异步读写操作及注意事项
服务器·网络·c++
吐泡泡_1 小时前
ARP协议
网络
wanhengidc1 小时前
在线服务器具体是指什么?
运维·服务器·网络
small_white_robot1 小时前
OSCP备战-kioptrixvm3详细解法
网络·安全·web安全
天蓝不会忘记022 小时前
OSPF综合实验
网络·智能路由器