HCIP-Datacom Core Technology V1.0_3 OSPF基础

article/2025/6/9 19:20:17

动态路由协议简介

静态路由相比较动态路由有什么优点呢。

静态路由协议,当网络发生故障或者网络拓扑发生变更,它需要管理员手工配置去干预静态路由配置,但是动态路由协议,它能够及时自己感应网络拓扑变化,不路由选择新的路径,来转发数据流量,那么这就是动态路由协议的优点。

动态路由如果分类的话,如果按照工作区域去划分,分为两种类型,是根据自治系统这个概念去划分的,如果说一个路由协议运行在同一个自治系统内部,叫IGP,比如说RIP,OSPF包括IS-IS,都是IGP,内部网关路由协议,如果是用来连接不同自治系统之间这样的一个协议,叫作EGP,外部网关路由协议,在当今世界主流的只有一种外部网关路由协议,BGP。

如果是按照工作机制和算法去划分的话,又分为两种类型,一种是基于距离矢量的路由协议算法,叫做RIP路由协议,RIP协议是一个非常古老的协议。如果按照链路状态算法路由协议去划分的话,分为OSPF和IS-IS,它们统称基于链路状态算法去计算的。

外部网关路由协议BGP它是属哪一种算法呢。BGP是属性一种特殊的路由协议。因为BGP是基于距离矢量算法的基础上进行的改良和增强的,叫做路径算法。也可以叫做增强型距离矢量路由算法。

距离矢量路由协议什么缺点?为什么现在大中型企业大部分都是基于链路状态算法路由协议。

路由协议的作用是用来学习相应的路由条目,为用户的数据流量转发选择路径。在路由器上生成路由表,而距离矢量路由协议,通过周期性的泛洪自己的路由表,然后从邻居那里去学习相关的路由,以及把自己的路由表泛洪给邻居,让邻居去学习。

假设基于距离矢量算法路由RIP而言,它是每隔30秒一次发送自己的路由表给它的邻居,同是从邻居那里去获取一个路由表,然后学习相应的路由条目,同时路由器运行了距离矢量算法之后,它有一个非常大的缺点,它并不知道全网的拓扑,它只知道去往目的网段应该发给谁,以及去往目的网段的开销是多少,它没有一个全网的一个大局观。比如图中的示例,R1要去访问10.0.3.3,它只知道要发给R2,通过R2去访问这个目的网段。至于全网的拓扑它是没有办法知道的。以及距离矢量算法还有其他的缺点。比如说收敛慢,以及环路问题。这些问题都阻碍了它在后续企业里面得到一个应用,不是那么青睐。所以在距离矢量算法里面得出来这样一个缺点,在后续去设计创造路由协议的时候,会进行一个改良。那么就是慢慢再去设计基于链路状态算法路由协议的时候,会将原本在距离矢量算法的路由协议里面的弊端,统统给解决。

链路状态算法路由协议和距离矢量路由算法协议的本质区别在于什么呢?它通告的不再是路由信息,而是链路状态,比如说RIP,它通告的是路由信息,路由器学习完对方的路由的路由信息后,直接加载到路由表中。链路状态LSA,比如说链路状态,它描述的是路由接口的一些信息,比如说开销以及连接对象,然后路由器通过链路状态用相应的算法去生成计算路由。所以它会有一个全网的大局观,不像距离矢量只知道邻居左膀右臂,没有一个所谓全网的大局观这样一个概念。

通过每台路由器产生的LSA之后,路由器会把这些LSA放到自己的数据库里面,对这些数据库进行解析,然后通过算法去了解全网的拓扑。也就是说每台路由器都要去收集全网不同路由器所产生的LSA,然后基于LSA用自己的算法进行一个解析。

最后基于这个数据库是通过什么方式来解析这个LSA呢,就是使用SPF最短路径优先算法,最短路径优先算法是每台路由器以自己为根,去生成计算一个无环且拥有最短路径的"树",可以说起来这个"树"是比较抽象的。以图中的案例,假设R3它拥有自己同一个区域里面路由器的LSA,现在基于 LSA放到自己的数据库里面,使用SPF算法进行计算,那么假设R3去往R2,那么可以看到它有两条路径,一条是通过R3直接去访问R2,另一条路径是通过R3去往R4,再去往R1,再去R2,从下面这条路径进行转发。那么它会怎么去计算呢,通过SPF算法之后就会发现,它以自己为根,计算出来一条从下面走的路径,去访问R2,而上面的路径通过算法的机制屏蔽掉了。为什么呢?R2和R3之间是1.544M这样的一个带宽,而R3,R4,R1和R2之间是百兆带宽,所以流量从百兆带宽去访问R2的话,是不是更加快速。所以它通过算法这样的一个机制避免了它去选择次优路径访问R2,而让它选择一条最优路径去访问R2。

 通过这样的一个算法机制选出来的最优路由之后,会加载到路由表,为用户流量转发选择最优路径。那么这就是基于链路状态路由协议的一个基本特征。

 链路状态路由协议它的工作机制大致是分为4个步骤,第一个步骤是和路由器建立一个邻居关系,第二个是收集不同路由的LSA放到自己的数据库里而进行解析。然后采用SPF算法选择最短路径优先树,最后算法得出来的最优路由加载到路由表中,为路由选择指导转发。这就是OSPF的基本概念。

OSPF简介

 OSPF是一种基于链路状态算法的内部网关路由协议,那么它一共有两个版本,如果是针对IPv4的一个网络,用的是v2版本,如果是针对IPv6的网络,用的是V3的版本,这两个版本在工作机制上基本是一样的,只不过在一些细节上面可能有稍微差别。

OSPF这个协议有很多优点,比如说通过SPF算法,能够保证没有环路形成,同是还支持区域划分以及负载分担,包括一些报文认证等等。

OSPF应用场景

 OSPF在企业里面非常爱大家青睐,它主要是实现了公司内部路由互通,核心层放在骨干区域零中,接入层放到非骨干区域,这里的区域0,OSPF里面定义了多区域这样的一个概念,同是定义了区域0为骨干区域,其他区域为非骨干区域,同是区域0为骨干区域不可更改,那么这样的话网络架构变得非常清晰明了,也为了方便后续的维护。

OSPF基础术语

 Router ID用来标识一台路由器,它和人的姓名一样,但是与人的姓名不同之点在于它具有唯一性,不能重复,比如给R1取了一个Router ID是10.0.1.1,10.0.1.1就不能给R2和R3。 同时OSPF的Router ID的取值规则如下,那么正常情况下,推荐管理员手工配置Router ID,如果没有手工配置的情况下,他会选择Lookback接口里面选择一个最大的IP地址,作为Router ID,如果Lookback都没有配置,它会使用设备的物理接口最大IP地址作为Router ID。那么在现网中强烈要求手动配置,因为这样的话,在后续查看邻居关系时,通过Router ID去标识这台路由器,会很快去找到相关的一个信息。如果让系统自动去选择,还需要查找这个IP地址是哪台路由器的,这样不便于后期的维护,以图中案例R1取了一个Router ID之后,就相当于发送了一个报文,表明了自己的名字是10.0.1.1,发给R1和R3。

 因为OSPF支持划分区域,通过区域ID号来标识路由器属于哪个区域,区域ID是一个32位的一个非负整数,一般是用点分十进制表示,比如说区域在区域1里面可以写成Area0.0.0.1,但实际上在日常工作中去配区域的话,一般直接写区域1就可以了,不用写32比特的点分十进制,但是在设备上去查看的时候,它会依然显示点分十进制Area0.0.1.1。

 顾名思义度量值就是用来衡量从源到目的中间所经历的这样的一个开销。这个度量值既然是用来衡量从数据包从源到目的地这样开销,那么所经历的开销越小是不是代表所花费的时间越短,在OSPF里面用Cost开销作为一个路由的度量值,它是和链路的带宽有关系的。只要给设备开启了OSPF这个协议,它的接口都会自己生成一个开销值,那么这个开销值,设备默认情况下有一个公式,就是参考带宽值除以链路接口的实际带宽,得出来一个数,最后以四舍五入的形式展示,便是有个问题是最小等于1,不能小于1。比如说参考带宽默认是100M,但是接口带宽是1000M,得出来的结果是就是0.1,但是取值1,因为最小值只能为1 。参考带宽一般情况下是可以进行手工配置的,但是一般情况下,在现网中其实不这么配置。如果在一个网络里面所有的路由器都是采用这个公式,你要去修改带宽值的的话,把参考带宽全部修改,那么所有的路由器的接口的带宽值是不是要统一修改,统一修改参考带宽值的话,这样的工作量是不是比较大。所以一般直接去修改接口带宽这样的一个取值会比较方便一点。

带宽值一般分为两种,一种是接口带宽,一种是累计带宽。接口带宽顾名思义就是接口上面它默认的这样的一个带宽值,比如说,如果是以太网接口,默认带宽等于1,如果是串行接口Serial,它的带宽值默认开销是等于64,所以不同接口类型它的默认带宽是不一样的。第二个是OSPF的一个累计带宽值,以图中为例,R3去往R1的10.0.1.1,它的带宽值是多少,是每段链路加起来的累计带宽,那就是R3~R2之间是64,R2到R1之间是1,所以累计带宽值是65。

 度量值是否可以修改呢?答案是可以的,同是度量值修改有什么好处呢?影响路由器选路的方式第三个就是开销。假设从源去往目的有两条路,用同一个路由协议,是否可以通过修改开销来影响选择路由转发的路径,答案是可以的,比如图中的R4现在要去访问R1上面的10.0.1.1,如果是在缺省默认的情况下,是不知道从哪边走,因为它是根据它缺省开销自己去计算的,是从R2上面这条路去访问R1,还是从R3去访问R1,是根据它的带宽自己去计算的。但是现在有个需求,希望接入层设备R4和R3,哪怕从上面这条路的带宽比较小,也希望是通过接入层直接访问汇聚层的R1,而不通过R2绕行。可以人工手工去定义,在R4上,R3将接口带宽改为10,那么这样R4去访问R1的累计带宽就是20,通过上面去访问R1的话,它的累计带宽就是110,越小越优,说明R4接入层去访问这样的一个R1,不希望流量绕行的话,直接从R3去访问。

OSPF 三大表项

 OSPF在发送链路状态之前,首先要建立一个邻居关系,它是通过报文的的交互形成邻居关系,这个邻居关系包含了邻居的各个信息,比如说它的Router ID,它的接口的IP地址,它的接口号是多少,暂时可以说邻居表里面有一些字段DR,BDR。

  LSDB是用来收集不同路由器的LSA,然后进行一个SPF算法的计算,数据库里面包含了很多信息,收集了不同类型的LSA,LINKID,由谁产生的,生成时间是多少,都会在这张表里面体现,非常详细。

 OSPF协议自己的协议表,它的目的网段,它的下一跳以及出接口,然后指导数据转发。在OSPF协议里面存在的最优路由未必会在路由表中出现,因中不同协议之间还有一个比较。

OSPF报文格式和类型

 数据通信顾名思义是不是就是为了帮助用户去实现数据从源和目的端进行一个数据的交互,那么交互的过程中,是不是要打通一条隧道,或者去建立一条路,为用户数据指导数据转发。那么这条路该怎么建立呢,是不是就是由数通领域里面各种协议去实现的。但是这个协议它具体是通过谁来去完成的,那就是报文。那么换一句话说,报文就是协议具体的体现和本质。因为协议在运行的时候,它就像一个施工队,它是不是有什么信息的交互,状态的维护,以及差错控制的通知,那么这些等等信息都需要进行一些互动,设备之间进行一个流,这些交流是通过什么来实现呢,那就是用报文来实现的。在 OSPF里面一共有5种报文,这5种报文分别有各自的作用。OSPF报文是封装在IP中的,时同协议号是89。那么在OSPF关部中它里面包含了哪些字节,这些字节有什么作用。

Version:版本号,如果是基于IPV4的就是V2版本,如果是基于IPV6的话就是V3版本。

Type:类型,代表OSPF的报文类型,如果你发送什么报文,相应类型的取值就是这个报文的字。

Packet Length:报文长度。

Router ID:

Area ID:

Checksum:检验和,用来校验数据的完整性。

Auth Type:

Authentication:表示是否采用了OSPF认证。如果配置了相关的认证,这个里面就是认证的密码,是明文认证还是密文认证,还是采取了没有任何认证方式。

OSPF工作过程

OSPF在它的工作过程中,是否要提及到之前介绍的5种报文的交互,同是在这5种报文的交互过程中,关于路由器运行该协议的邻居状态也会发生一系列的变迁,要把它邻居状态的变迁机制和发送报文的一个形式结合在一起,去理解它的工作机制,那么这里其实简单的概括了一下它的一个工作机制。首先,是通过Hello报文来发现邻居关系,然后通过这样的一个协商主/从关系,然后描述自己的数据库,最后更新LSA进行同步,最后完成一个路由计算。

那么在这里面,工作过程概况里面,我们需要去了解有两点比较重要,第一个,会发现它有两个概念,一个是邻居关系,一个是邻接关系,同由可见,虽然它们只有一字之差,但是邻接关系是不是比邻居关系更进一步。第二点是,在OSPF里面路由器要收集不同路由器的LSA,但是LSA有一个叫做"同步"的这样的概念,就是所有路由器的数据库要保持一致,叫同步。那么为什么需要同步。

作为动态路由协议,它相比较于静态路由协议,它的优点在于什么,是不是能够及时感应网络拓扑的变化,能够及时调整路径,怎么调整呢?如果全网所有路由器的数据库一样,是通过LSDB数据库计算生成路由的,如果某一台路由器数据库里面的LSA发生变化,那么该路由器将这样的一个变化扩散出去,全网路由器跟它进行同步,进行对比,那么是不是就可以实现全网运行OSPF的路由器都能够及时感应网络变化,进行网络变迁,就可以达到牵一发而动全身的这样的一个作用。所以这就是它为什么要进行同步的这样的一个概念。

首先建立邻居关系,那么在建立邻居关系里面,它是通过Hello报文来建立邻居关系,它的邻居状态会发生以下三个变迁,Down,Init,2-way。

Down状态,这是设备运行OSPF协议的初始状态,代表路由器没有收到任何消息,然后路由器开始向邻居发送Hello报文,在OSPF里面,发送Hello报文的形式是以组播的形式,这个组播的地址是224.0.0.5。

现在以图中的案例为例,首先假设R1和R2同时运行OSPF协议,然后它们刚运行完是没有接收到任何信息的,所以它的状态第一步是Down状态,然后互相发送Hello报文,Hello报文的作用是用来发现邻居的,但是路由器现在不知道你是我的邻居,所以可以发现Hello报文里面包含了哪些东西呢。

现在假设以图中的R1为例, R1给R2发送Hello报文表明了自己的身份,我的名字叫10.0.1.1,neighbort字段应该填上R2的这样一个名字,但是R1现在不知道你是我的邻居,所以neighbor字段第一次发送的时候是空的,没有填写任何东西。同理,R2给R1发送的第一次Hello报文,也是表明了自己的身份,然后neighbor字段与是空的,当双方路由器接收到对端发给我的Hello报文之后,路由器的状态会变成Init初始状态,这个状态表明了什么呢?自己已经收到了对方发给我的Hello报文了,但是neighbor字段你没有填上我的名字,Router ID不在自己所收到的列表中,但是没有关系,因为你给我发的Hello报文里面已经包含了你自己的Router ID,是不是就代表我已经知道了你的名字是谁了,所以第二次R2给R1在发送Hello报文里面,neighbor字段就会填上R1的名字,我就知道你是我的邻居了。 当R1收到R2发过来的Hello报文里面包含自己的Router ID,代表我和你形成邻居关系,状态变成2-way。所以用句简单的话来概括一下,R1和R2如何去通过Hello报文,建立邻居关系,就是互相收到对方的Hello报文,同是neighbor字段包含自己的Router ID,表明和对方形成邻居关系。中间肯定还有其它的参数协商。

 Hello报文的一个时间间隔,每隔10秒发送一次。路由失效时间,是间隔时间的4倍。这两个参数在OSPF互相发送Hello报文里面,是需要进行协商的。这两个时间要保持一致。如果时间不一致,那么是无法正常建立邻居关系的。

通过第一个Hello报文的交互,已经形成邻居关系了,它的最后一个关系是不是邻接关系,从邻居关系要一步一步的向邻接关系进阶。

当路由器的状态变成2-way之后,向邻接关系进阶。DD报文,DD报文的作用是用来描述数据库的摘要信息,摘要信息就是简单的描述一下LSA是谁的,到于具体接口IP地址,掩码,开销这些都是没有的,所以叫摘要信息。是重要关注的是哪个呢?第一个是MS比特位,还有一个叫做序列号。

首先,为什么需要DD报文来描述数据库的摘要信息。这前提到过最后数据库是不是要保持一个同步,路由器怎么知道数据库是否要同步,所以要简单的描述一下,自己的数据库里面包含了哪些路由器的LSA进行对比,对过对比去判断数据库是否同步,如果未同步,就开始去请求所缺少的那些信息,这就是为什么需要需要DD报文。可以理解为它作为一个同步前的校验完整。

现在假设R1和R2互相发送了自己的第一个DD报文,那么DD报文包含了什么?第一个序号号,R1是X,R2是Y,然后I比特位和M比特位是用来表示这个DD报文是第一个DD报文和后面是否琮有后续的报文。MS比特位是用来协商路由器之间一个叫做主从关系的,那么主从关系是通过什么来确定的呢?就是通过前面学习的Router ID,Router ID大的就成为主,小的就成为从。序号号是用来保证可靠性和完整性的。

这里又有一个非常重要的问题来了,为什么在进行数据库对比的时候,需要一个主从,同时还需要一个序列号呢?

现在假设一下,假设我和A之间有一张手机通讯录,我们两个之间的手机通讯录要保持一致,那么怎么对比,使两个手机通讯录之间的对比更加高效的去看是否缺少了哪些信息,是否保持一致。那么现在假设可以用这样的一个方法,我告诉A,你是否把你通讯录里面以A开头的这样的一个姓名和联系方式发送给我,A代表说知道了,发给我,我进行对比,然后我再发你以姓名B开头的姓名和联系方式发给我,我进行对比,B知道了说,好的,然后发给我进行对比,那么这样的一个过程是不是更加有条理,效率也非常高,否则我们这样的一个对比,非常杂乱无序的话,这样对比效率是不是很低下,同是也不可靠,所以这里为什么通过主从关系的选举,以及这样的一个序列号的方式来进行数据库摘要信息的这样的一个对比,是为了保证在对比的过程中更加高效,同时可靠的进行,那么这个时候你会发现,假设这样的一个R1,这的序号号变成了Y,说明什么,说明R1它代表了我是你的从,我听从你的安排,你问我要什么摘要信息,我就发什么给你进行对比。同时R2也宣告了自己的身份,我是主路由器,那么通过这样的交互,完成了数据库的摘要信息的对比。同进它的邻居状态也会发生一系列的变迁,从2-way状态变成了ExStart状态,ExStart状态代表了开发发送DD报文,但是注意一点是,DD报文不包含链路状态的描述。也就是说了DD报文是不是用来描述LSDB里面的摘要信息,但是第一次互相发送DD报文是用来协商主从关系里面没有包含任何数据库里面的摘要信息。这里是非常关键的一点。只有主从关系选举完成之后,它们才开始摘要信息的同步,然后状态变成Exchange,进行一个摘要信息的同步,那么到同步状态,最后一个Loading状态,它会发生怎样的变迁呢。如果发现我的数据库和你的不一样,会怎么办,我是不是需要弥补这些信息。

 interface MTU,是指在不分片的情况下,接口最大范围的IP报文的长度,但是正常情况下,如果收到的DD报文的MTU和自己本端的MTU不相等(报文)是默认丢弃的。华为设备默认是未开启检查的,可能不同厂家实现的这个Interfae MTU字节,它的功能作用是不一样的。

在进行数据库同步对比之后发现哪些是我们缺少的摘要信息,看一下后续会如何进行。

OSPF一共有5种报文,后面这三个报文其实就像三个亲兄弟一样。LSR,链路状态请求报文,LSU更新报文,LSACK回复报文,假设R1对比数据库之后,发现某些具体的摘要信息是我所缺少的,我就会向R2发送LSR信息,去请求我所缺少的那些LSA的明细信息。R2收到之后就把R1所想要的一个信息包含在Update更新报文中,通过LSU,发送给R1,R1收到之后表明已经收到了,所以还需要回复一个Ack确认。通过这三个兄弟报文的交互,最后, R1和R2的状态从Loading变成了Full,到达了一个同步,那么到达同步之后,R1和R2的状态就正式从邻居关系变迁为邻接关系。同时数据库已经完成了同步,保持一致。这个就是前面5种报文的交互。

首先是通过Hello报文发现邻居关系,建立邻居关系之后,通过DD报文的交互,进行数据库摘要信息的对比,最后通过LSR、LSU和LSAck这三个报文的交互,去请求所缺少的LSA,至此完成数据库的同步。

如果多台路由器在同一个广播网络,按照上面的方式进行这样的一个邻接关系的建立,有哪些问题呢?

如果在MA广播型网络中,两两之间建立邻接关系是否会有问题,假设班级一共有5个人,5个人之间要保持手机通讯录进行同步,每两个人之间两两互相进行一个通讯录的同步互相交流,每1个人要和4个人进行同步,这样的过程是不是显得非常繁琐。同是效率非常低下,同是会造成一个重复的LSA泛洪,资源浪费。我既要把一个通讯录里面你们所没有的这样的一个联系方式发给a,也要发给b,也要发给c,重复的发,是不是没有必要。同是这个过程也比较繁琐,有没有什么办法可以简化我们这样的一个同步过程。是不是可以在5个人中选出来1个班长,班长作为老大,收集其他4个人的通讯录的信息,使得他通讯录的信息保持一个最完整的状态,然后由班长将完整的数据库信息发送出来,自己对比自己的,如果发现缺少的哪些信息,就去班长去要,如果是正常的话,就不做任何操作。这样是不是就大大加快了这样的一个工作效率。同理,在数据库同步的过程中也需要这样的一个班长,那么这个班长就是指定的路由器。他负责和所有路由器之间建立邻接关系,收集LSA,保持数据库的完整性。那么这个时候又有个问题,班长假如有一天生病了,是不是需要找个人来替代他,所以这个时候作为班长,我们有一个什么,有一个很好的备份,作为班长,如果不工作的情况下,他来接替班长完成这个任务。那么这个备份就是副班长BDR,那么选举DR和BDR之后,其它路由器的角色称为DROther,即不是DR也不是BDR,那么这样做有什么好处呢,所有路由器只需要和DR和BDR之间建立邻接关系,就可以了,其它路由器之间,只需要完成邻居关系的建立,这样就节约了链路的带宽和资源,同是加快了一个同步的效率.

 这是基于接口进行选举的。第一点是比较优先级,越大越优先,第二个是比较Router ID,在OSPF里面,它的优先级取值范围是0到255,默认为1。

以图中的为例,R1,R2,R3假设这三台路由器要选取DR和BDR,那么R1的优先级为100,R3的优先级为95,所以一个成为DR,一个成为BDR,如果把某个设备的接口的优先级设为0,它是不参加选择的。

DR与BDR的选举是一个非抢占机制,这一点非常重要,这三台设备组成的一个网络已经选举完DR和BDR了,现在新增了一台路由器R4,将它的优先级设为200,如果按照这样的一个选举的话,是不是R4应该成为DR,但是它即不是DR又不是BDR,这是DROther,因为它是非抢占式的,也就是说当网络稳定选举完DR和BDR之后,新加入的设备无论它的优先级有多高,它依然不会成为DR,那么现在假设,R1坏掉了,发生了故障,那么问题来了,是R4成为DR,还是BDR成为DR,R4去选举BDR。

当R1发生故障之后,R3会成为DR,虽然R4的优先级是200,但是会和其它路由器去竞选BDR的角色。

DR和BDR是在哪个阶段完成的呢?Hello报文里面有个字段叫路由优先级,也就是说DR和BDR的选举,在Hello报文的交互过程中,实际上就已经完成了。

什么叫基于接口的选举呢?或者基于网段的选举,实际上在DR和BDR的选举过程中,还有一个时间计时器,叫Waiting Timer,时间是40秒,叫选举等待时间,因为DR和BDR的选举是一个非抢占原则,假设给R1先配置了OSPF协议,它的优先级是底的,但昌它先成为DR,这样合理吗,是不是不太合理,因为别的路由器还没有配置,所以为了保证DR和 BDR的选举中的一个公平性,有一个选举等待时间40秒,这个就好比什么,比如说我明天约你去参加7点的比赛,我6点就到了,然后跑完,说我是冠军,你觉得这样合理吗?是不是不太合理,所以为了保证,不同路由器之间它选举有一个公平性,所以会等待40秒参加选举,竞选DR。

胶片里的两个问题,第一个,如果将4台路由器在MA网络里面全部设置为0,那么这个OSPF协议是否可以正常工作。第二个,缺少情况下,哪些链路组成的网络是MA网络呢,在图中的网络叫广播性网络,在广播型网络里面一定要选举DR和BDR,所它们的优先级全部设为0的话,OSPF是无法正常建立关系的,那么哪些网络定义为广播型网络呢?哪些网络又需要去选举DR和BDR呢。

OSPF一共支持4种网络类型,这4种网络类型是根据它的链路层协议所决定的。如果链路层协议是PPP,或者是HDLC链路,那么它所对应的网络类型就是point-to-point网络类型。如果链路类型是常规的以太网链路,那么它的类型就是广播性网络,也就是MA网络。如果是在帧中继的情况下,那么它对应的就是NBMA,那么其中第4种网络类型是P2MP,叫点到多点网络类型,可以看作多个点到点的网络类型的集合,它是通过前面三种网络类型,通过命令强制进行更改形成的。

在现网中实际上最常见的是点到点和广播性网络,NBMA以及点到多点网络类型基本上已经被边缘化了,用的很少,那么这4种网络类型里面是否要选举DR呢,广播型网络和MBA是要选择DR,那么其它呢?这样的一个点到点和P2MP是不需要选择DR的。所以利用网络类型的特征是否要选择DR,在特殊的应用场景下,能够帮助我们起到息样的作用呢?

 如图,AS-R1和CO-R1之间连的是一个以太网链路,广播型网络,这样直连广播型网络,这样选举DR和BDR是晃是没有任何意义,在选择DR和BDR中,有一个选举等待时间,选举DR和BDR已经没有意义了,还需要等待40秒参加选举,浪费了链路的工作效率。所以在特殊的场景下,选举DR和BDR没有意义,就可以将它的网络类型去更改,提高工作效率。更快的帮助用户实现流量转发,完成网络收敛,这就是网络类型在特殊场景下的一个应用。


http://www.hkcw.cn/article/qMLLDhEdtf.shtml

相关文章

敏捷转型:破局之道

在数字化浪潮与市场不确定性加剧的背景下,传统组织向敏捷组织转型已成为企业生存与发展的核心命题。这种转型并非简单的工具迭代或流程优化,而是涉及治理结构、文化基因与人才机制的深度重构。理解两种组织形态的本质差异,明确转型的适用场景…

WordPress 6.5版本带来的新功能

WordPress 6.5正式上线了!WordPress团队再一次为我们带来了许多新的改进。在全球开发者的共同努力下,WordPress推出了许多新的功能,本文将对其进行详细总结。 Hostease的虚拟主机现已支持一键安装最新版本的WordPress。对于想要体验WordPres…

软硬解锁通用Switch大气层1.9.0系统+20.0.1固件升级 图文教程 附大气层大气层固件升级整合包下载

软硬解锁通用Switch大气层1.9.0系统20.0.1固件升级 图文教程 附大气层大气层固件升级整合包下载 大气层(Atmosphere)是为任天堂 Switch 主机开发的免费开源自定义固件(CFW),由开发者 SciresM 领导的团队维护。它允许用…

Redisson学习专栏(五):源码阅读及Redisson的Netty通信层设计

文章目录 前言一、分布式锁核心实现:RedissonLock源码深度解析1.1 加锁机制:原子性与重入性实现1.2 看门狗机制:锁自动续期设计1.3 解锁机制:安全释放与通知1.4 锁竞争处理:等待队列与公平性1.5 容错机制:异…

字节新出的MCP应用DeepSearch,有点意思。

大家好,我是苍何。 悄悄告诉你个事,昨天我去杭州参加字节火山方舟举办的开发者见面会了,你别说,还真有点刘姥姥进大观园的感觉🐶 现场真实体验完这次新发布的产品和模型,激动的忍不住想给大家做一波分享。…

光耦电路学习,光耦输入并联电阻、并联电容,光耦输出滤波电路

一般的光耦电路,只需要输入限流电阻,输出上拉电阻即可。 实际使用时,比如工控等一些干扰大、存在浪涌电压等的场合,根据实际可以添加一些抗干扰电路、滤波电路,增加电路抗干扰能力。 比如: 1、给光耦输入两…

JVM知识

目录 运行时数据区域 程序计数器 Java虚拟机栈 局部变量表 操作数栈 动态链接 本地方法栈 Java堆 方法区 运行时常量池 字符串常量池 直接内存 Java对象的创建过程 对象的内存布局 对象的访问 常见的 GC 类型 ​​Minor GC(Young GC)​ …

Spring AI介绍及大模型对接

目录 1. Spring AI介绍 2. Spring AI常用组件 2.1. Chat Client API 2.2. Models 2.3. Vector Databases 2.4. RAG 2.5. MCP 3. 大模型对接举例 3.1. 获取deepseek的API keys 3.2. idea创建工程 3.3. 配置application.yml 3.4. 编写Controller测试类 3.5. 验证Con…

C++算法训练营 Day6 哈希表(1)

1.有效的字母异位词 LeetCode:242.有效的字母异位词 给定两个字符串s和t ,编写一个函数来判断t是否是s的字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”, t “car” 输出: false 解题思路&#xff…

LeetCode hot100-11

题目描述 题目链接:滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入…

js web api阶段

一.变量声明 1.JS中的const const在js修饰数组和对象,本质类似与c的引用数据类型,所以类似于 int* const ref 修饰的是地址,值是可以改变的 然后下面这种情况是禁止的 左边这种都有括号,说明是建立了一个块新地址去存放&#xf…

【计算机网络】数据链路层——ARP协议

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹:【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑 🔖流…

群晖 NAS 如何帮助培训学校解决文件管理难题

在现代教育环境中,数据管理和协同办公的效率直接影响到教学质量和工作流畅性。某培训学校通过引入群晖 NAS,显著提升了部门的协同办公效率。借助群晖的在线协作、自动备份和快照功能,该校不仅解决了数据散乱和丢失的问题,还大幅节…

基于LLaMA-Factory和Easy Dataset的Qwen3微调实战:从数据准备到LoRA微调推理评估的全流程指南

随着开源大模型如 LLaMA、Qwen 和 Baichuan 的广泛应用,其基于通用数据的训练方式在特定下游任务和垂直领域中的表现仍存在提升空间,因此衍生出针对具体场景的微调训练需求。这些训练涵盖预训练(PT)、指令微调(SFT&…

视觉语言动作模型 (VLAs) :赋予机器行动的智慧

文章目录 一、VLA 的诞生:从单模态到多模态的飞跃二、深入剖析 VLA:核心组件与工作原理三、前沿进展:那些令人瞩目的 VLA 模型与趋势四、VLA 的广阔天地:应用场景一览五、挑战与荆棘:VLA 面临的难题六、未来展望&#…

C/S医学影像系统源码,全院一体化PACS系统源码,实现全院检查预约和信息共享互通

全院一体化PACS系统源码 全院级PACS系统不仅仅具有安全、高效、稳定的访问/存储/调阅架构和强大的影像后台处理功能;还是一个全院一体化的PACS系统,覆盖了医院所有影像科室(放射、超声、内镜、病理、心脑电等);从影像…

力扣刷题Day 69:搜索二维矩阵(74)

1.题目描述 2.思路 首先判断target是否有可能在矩阵的某一行里,没可能直接返回False,有可能就在这一行里二分查找。 3.代码(Python3) class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> boo…

生成JavaDoc文档

生成 JavaDoc 文档 1、快速生成 文档 注解 2、常见的文档注解 3、脚本生成 doc 文档 4、IDEA工具栏生成 doc 文档 第一章 快速入门 第01节 使用插件 在插件工具当中,找到插件 javaDoc 使用方式,在代码区域,直接点击右键。选择 第02节 常用注…

攻防世界RE-1000Click

首先按一千次肯定是不可能的,观察到验证flag时会有一个输出: 直接在ida中搜索这个错误提示词: 往上找找就能找到flag: flag: flag{TIBntXVbdZ4Z9VRtoOQ2wRlvDNIjQ8Ra}

【嵌入式(2)深入剖析嵌入式开发:从基础到实战】

为打造符合CSDN高质量博文标准的内容,我以清晰目录架构梳理知识,插入代码示例、时序图等增强可读性,并添加投票互动,提升文章吸引力与互动性。 目录 [引言一、嵌入式处理器的分类及特点二、硬件、软件与固件:嵌入式系…