OSPF:动态路由协议中的链路状态之王

2024-08-24 23:28

本文主要是介绍OSPF:动态路由协议中的链路状态之王,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

加粗样式数通系列文章目录

文章目录

前言
数通基础路由协议

动态路由协议分类

按照工作区域分类,相当于按照AS进行分类

	域内的协议被称为IGP,内部网关协议主要协议有RIP(被淘汰),OSPF,ISIS域和域之间的被称为EGP,外部网关协议现在只有BGP协议

按照工作机制分类及算法进行分类

	距离矢量路由协议RIP这个协议是主要思想就是将自己的的路由表完整的成周期的以广播或组播的形式发给邻居路由是什么目的地址加上下一跳组成的信息就组成了一个路由条目而路由并非路径因为设备是从远处得到是其他设备的路由,只知道目的地和下一步因该走那条路,所有这样就不知道真实的路径了,而且设备转发看的是cost,当网络的规模较大时,开销小的路并不一定是小的路径。只能知道路由信息而不能知道路径信息链路状态路由协议OSPF,IS-ISLS,链路状态1,路由信息2,拓扑信息链路状态路由协议通告的是链路状态而不是路由信息运行链路状态协议的路由之间首先是建立邻居关系,然后彼此开始交互LSA,链路状态通告就是每个设备向其他设备发送之间邻居关系,所有的设备都建立了一张拓扑图,从而达到选出最优路径

OSPF属于动态路由协议

LSA链路状态通告

就是每个设备向其他设备发送之间邻居关系,所有的设备都建立了一张拓扑图,从而达到选出最优路径

运行链路状态协议的路由之间首先是建立邻居关系,然后彼此开始交互LSA,链路状态通告

链路状态路由协议通告的是链路状态而不是路由信息

LSA,链路状态

1,路由信息

2,拓扑信息

LSDB(拓扑表)

每个设备通过交互LSA,建立了一个链路状态数据库,LSA包含了路由信息和拓扑信息

同域内的设备建立的LSDB是同步的,因为他们相互交互LSA

作用:管理路由表

1,生成路由或学习路由

2,选择最佳路径

SPF计算

每个设备在本地根据自己的LSDB数据库进行计算,设备将自己看为是一个树根,计算出一条最短路径树,由于设备拥有LSDB所以在建立最短路径树的时候是具有上帝视角的,所以这个树一定是无环的

cost的计算公式为10^8/带宽

路由表生成

路由器将根据SPF算法计算出的优选路径,加载到自己的路由表当中,就生成了路由表

ospf拥有三张表

1,邻居表(拓扑信息)

2,拓扑表(LSDB)

3,路由表(RIB)

链路建立的总结

1,建立邻居关系

2,交互LSA,建立LSDB

3,本地进行SPF计算

4,生成路由表

不同IP协议的版本

IPv4协议使用的是OSPFv2版本

IPv6协议使用的是OSPFv3版本

OSPF的应用场景

在大型网络当中部署OSPF

核心和汇聚部署骨干区域

接入和汇聚部署非骨干区域

router ID

进行交互LSA报文信息的标识,就相当于是一个代号,当然仅仅是有代号是不够的,还要有代号背后的信息。

在自治系统当中唯一标识一台运行OSPF设备的路由器,32位的无符号整数

配置OSPF时首先手动配置router ID

在华为设备当中,默认将当一个配置的IP地址作为系统id,也就是router ID

在其他设备当中可能是使用loopback接口当中最大IP地址作为OSPF的router ID

还有在其他设备当中将物理接口当中的最大IP地址作为OSPF的Router ID

这个Router ID是可以更改的,但是不建议更改,因为更改需要重新启动OSPF进程,可能会引起网络重新计算LAS,造成网络震荡

OSPF没有检测router ID方法,只能人为的进行唯一

网络可以会此出现两给相同的Router ID的设备,只要不是直连的就可以建立邻居。

区域

区域号为0的被称为骨干区域

区域号不为0的被称为非骨干区域

骨干只能有一个,而非骨干只能围绕在骨干区域周围。

区域就是将设备从逻辑上划为不同的组,每个组使用区域号进行区别。

度量值

就是开销,衡量一个东西的方法

Cost=100mbit/s/接口宽带

OSPF以累加cost为开销值,就是流量从源网络到达目的网络所经过的所有路由器的出接口的cost的总和。

度量值修改方法

直接在设备上进行修改cost的计算方法

当然要是一个设备上修改了,就这个设备算出的cost就不应该和其他设备计算的cost相加,因为计算公式被改了

在设备的端口上进行修改cost值

报文格式

1,hello

发现和维护邻居关系

主要作用

邻居发现,自动发现邻居路由器

向外发送hello报文,让邻居发现,同时自己也发现邻居

邻居建立,完成hello报文的中的参数的协商,建立邻居关系

相同的参数有,网络掩码,hello报文的时间间隔一般为10s,区域号,失效时间一般为40s,认证,不相同的参数有Router ID不能相同

邻居保持,通过周期性的报文发送和接收,检测邻居的运行状态

每10s为一个hello报文周期,当4个报文周期过后,该设备就认为邻居死亡

2,DD

数据库描述信息,只是数据库的摘要信息

DD报文格式为,seq为序列号,I为1表示为第一天DD报文,M为1表示还有更多的DD报文,Ms为1表示该设备为主设备

3,LSR

请求特定的链路状态信息

4,LSU

发送详细的链路状态信息

包含了LSA信息

为什么不直接发送LSU,因为LSA信息太多了

5,LSACK

确认LSA

OSPF报文是直接封装在IP头部当中的,协议号为89

邻接关系的建立过程

1首先设备发送hello报文,发现链路上的邻居,这样就建立了邻居关系,2,设备进行主从协商,主从协商是为在设备下一步的交互设备自身的LSDB进行一个确认,3相互发送各自的LSDB库,4,双方设备更新LSA,同步双方的LSDB,当双方设备完成后,双方关系就为邻接关系了。

建立邻居关系

OSPF设备向外发送hello报文,找到链路上的其他邻居,让链路上的其他邻居知道有自己这个设备的,OSPF在缺省时采用的组播的形式发送hello报文,组播地址为224.0.0.5,当然hello报文当中包含了路由器的router ID,邻居列表等等信息

邻居关系的3种状态

down,没开始

邻居的初始状态,标识邻居没有收到任何信息

Init,初始化

这个状态表示设备收到邻居的hello报文,但是邻居的邻居列表当中没有自己这个设备

2-way,双向通信

在这个状态下,设备发现自己的router ID存在于邻居发来的hello 报文的邻居列表当中。

当两个设备A和B都向链路上发送hello报文时,A和B都处于Down状态,当A向B发送了hello报文,但是B在收到Hello报文前向A发送了自己的Hello报文,这个时候A就变成了Init状态,当B收到A的Hello报文和后,B的状态也变成了Init状态,B继续向A进行发送hello报文,这个时候发给A的hello报文当中就有A的这个邻居了,所以A的状态就变成了2-Way状态了。当B接收到A的hello报文当中有自己时也变为了2-way状态

建立邻接关系

1,首先两个邻居设备相互发送DD报文,两个设备一开始发的DD报文,序列号为自己的序列号,I为1,M为1,Ms为1,当两个设备相互交换DD报文后,通过DD选举Router ID大的为Master设备,小的为slave设备。

预启动状态:exstart

2,当选举出主设备后,从设备会向主设备发送一个新的DD报文,一开始发的DD报文就生效了,新的DD报文里面的序列号就是沿用的主设备的序列号和自身设备的LSDB摘要,同样的当主设备接收到从设备发来的DD报文后,会向从设备发送描述自身LSDB的DD报文,当中序列号会是从设备发的报文序列号+1,MS为1,当从设备接收到主设备的DD报文后,会向主设备发送一个序列号加+1的DD报文,这种序列号加+1的行为被称为隐式确认的方式,当两个设备的M为0时才停止转发DD报文,当其中一方M不为0,一方M为0时,M不为0的一方会先为0的一方发送DD报文,M为0的一方同样还是会回一个DD报文,只不过这个DD的内容为空,这样到两个设备的DD的参数都为0

预交换状态:Exchange

3,当DD报文交换完成后,两个设备就就知道自己设备LSDB当中缺少的信息,当两个设备就会向对方发送LSR请求报文,请求对方发给自己缺少的LSDB数据,对方设备接收到自己的LSR请求报文,会向己方设备发送一个LSU更新报文,将己方缺少的报文发过来,当己方设备收到了对方发来的LSU更新报文后会向对方设备发送一个LSAck报文进行一个收到报文确认。

加载状态:loading

当设备的经历了以上过程上状态就变为了完成状态,关系从邻居变为了邻接关系,当然变为邻接关系后hello报文还是会周期性的发送10一次,LSU+LSAck同样会周期性的进行发送时间为1800s,而LSA报文的老化时间为3600s

FULL:完成状态

知道ospf状态机,是为排错

DR和BDR

MA网络

多路访问的网络(一个广播域可以有两个及以上的三层接口)

是否为MA网络是看协议的网络类型,而不是看拓扑类型

DR,Designated Router,指定路由器

BDR,Backup Designated Router,备份指定路由器

DR和BDR是在MA网络当进行一个选举出的设备的,为的就是解决MA网络当中要是每一个设备都要建立邻接关系,这样就要消耗大量的设备资源,所以在MA网络当中只有DR和BDR设备可以和非自己的设备建立邻接关系,这样大大的减少了邻接关系的建立,非DR和BDR设备之间就只建立邻居关系。

非指定路由为了减少交互,就将自己的LSA发向组播地址为224.0.0.6的地址,这个地址只有DR和BDR能够接收报文,当中BDR只接收LSA报文并不会向外发送LAS报文,DR不仅要接收还会向224.0.0.5的组播地址发送LSA报文

OSPF配置注意事项

1,OSPF首先要配Router ID

2,network的时候,IP地址后面跟的是通配符,通配符是为了保证IP地址的匹配度的问题

3,network的IP地址为宣告的是该IP地址的带端口配置的网络号

4,当环回口IP宣告的时候不论配置IP为多少位,宣告的都是32位的,想要让其为配置IP的位,就将环回口的网络类型改为广播类型

OSPF的LSA

区域内LSA

router LSA,1类LSA

P-2-P类型

描述点到点网络的LSA,描述的主要信息为邻居的router ID和该设备本身的接口的IP地址

stubNet类型

描述为MA网络拓扑的LSA,描述的主要信息为连接DR的接口IP地址和设备的本端的接口IP地址

TransNet类型

该类是为了补充P-2-P网络当中的设备的之间相连的网络信息

network LSA,2类LSA

该LSA是为描述MA网络当中的设备有那些,和补充router LSA当中的 的未描述网络信息的问题

描述的主要信息为DR的IP接口地址和本端的接口IP地址,以及该DR设备连接的所有设备

该信息为设备虚拟出的设备信息,为的就是设备的发出2类LSA,同样的该设备也会发送出设备router LSA信息

4类LSA

该类LSA是和5类LSA一起进行传递的,3类LSA同样传递的路由信息,但是接收设备是知道是ABR发出的LSA,因为5类LSA传递时,是ASBR发出的,就会面临其他区域内的设备无法知道引入设备的,所有这个时候就要靠4类LSA进行对ASBR进行建立一条路由信息,以便其他设备可以访问ASBR,进而访问外部路由

理解点:2类LSA是为了解决一类LSA当中对MA网络只描述了拓扑信息,而未描述网络信息

理解点:为什么1类LSA不对MA网络进行描述网络信息?

因为MA网络为多设备网络,要是每一个设备都产生描述网络信息的一类LSA就会有大量的重复的信息,

区域间LSA

3类LSA

该类LSA就是ABR设备将广播域内的设备的一类LSA和2类LSA进行整合为3类LSA,3类LSA就是路由信息

就相当于在ABR设备上挂载上许多的叶子,叶子也就是我们所说的路由信息

系统内LSA

5类LSA

5类LSA是为了描述的是引入ospf系统内的外部路由信息,和3类LSA很像都是描述路由信息的LSA,但是和3类LSA不同的是5类LSA没有区域号,且在全部的设备当中的信息都是相同的

7类LSA

该LSA是为了解决stub区域不能添加新的设备而创造的LSA,和5类LSA只是名字上不同,其他都一样

SPF算法

1,在网络当中的设备会自身作为主要的设备是进行计算SPF树

2,当设备查询自己的LSDB当中的1类LSA将自身的1类LSA当中描述拓扑的LSA信息划分到一个候补路由表当中

3,当候补路由表建立后,该设备会挑选出候补路由表当中的一条cost值最小的LSA信息进行,加入到设备的STP表当中

4,然后设备会查询加入表的LSA信息,当加入的LSA为描述MA网络的LSA时,查询的就是2类的LSA信息

5,当设备查询2类的LSA时,会将设备的2类LSA当中的全部的拓扑信息加入设备的候补列表当中,然后找出最小的开销的LSA加入STP生成表当中,然后设备就继续查询下一个设备的LSA

6,当设备查询其他设备拓扑开销时,候补列表当中有两个该设备的lSA会将开销大的LSA抛弃留下开销小的LSA,直到没有候补列表当中没有LSA

7,然后设备将为每个设备的最短开销挂上一个网络信息

虚链路

是为解决两个非骨干区域相连的问题

或者是解两个公司之间进行合并,两个区域0之间建立虚拟链路

特殊区域

stub,末节区域

过滤掉五类和四类LSA,增加一条三类的默认路由,需要两个设备同时配置

配置注意

骨干区域不能配置

stub区域内设备必须都配置stub

stub区域不能引入和接收外部路由

虚连接不能穿越stub区域

totally stub,完全末节区域

过滤掉五类,四类,和三类LSA,增加一条三类的默认路由,同样是两个设备同时配置

NSSA

就相当于是stub区域的升级版,可以引入外部路由,没有4类和5类的LSA,只有换了一个名头的7类LSA,和一条7类的默认LSA

totally NSSA

该区域就是将3类LSA进行一个换成一个3类默认路由,因为3类的优先级更高,所有3类的大于7类的默认路由,

当为NSSA区域时,因为接入了新的设备,那么原来的NSSA区域的ABR会被外部区域设备认为是ASBR,但是在NSSA区域内引入设备的设备才是ASBR

LSA路由信息汇总

3类的LSA汇总是在ABR上进行汇总,发往其他的区域内

5类LSA的汇总是在ASBR上进行汇总的,同样是发往其他区域

OSPF认证

沉默端口

配置完后该端口的效果就不会接收和发送ospf报文,但是沉默端口的直连路由仍然可以发送出去

适用的情况:

为了解决两个公司之间相连,但是为了不重新计算路由

当连接设备为PC时配置

总结

OSPF作为一种强大的链路状态路由协议,通过其独特的LSA机制和SPF算法,为网络提供了高效、可靠的路由选择和故障恢复能力。在网络规划和部署中,合理配置和使用OSPF,将大大提升网络的稳定性和性能。

这篇关于OSPF:动态路由协议中的链路状态之王的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103906

相关文章

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

hdu3006状态dp

给你n个集合。集合中均为数字且数字的范围在[1,m]内。m<=14。现在问用这些集合能组成多少个集合自己本身也算。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.Inp

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |