问鼎OSPF(3)-完善机制沐邻里,帅将兵民如父兄

2023-10-23 07:40

本文主要是介绍问鼎OSPF(3)-完善机制沐邻里,帅将兵民如父兄,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问鼎OSPF

  • 问鼎OSPF目录
  • 一、由接口演七般变化 众网元借奇功应不同链路
    • 1、OSPF接口
    • 2、OSPF接口状态机
  • 二、邻居间奏琴瑟和鸣 八般变化助LSA交互
    • 1、OSPF邻居
    • 2、OSPF邻居状态机
      • 广播网络
      • NBMA网络
      • 点到点/点到多点网络
  • 三、X网点大阵终成 少年联手小将再踏征途

问鼎OSPF目录

1、问鼎OSPF(1)-互联Route群雄争,OSPF 出横空
2、问鼎OSPF(2)-初涉路由显神通,治军四方拥

鲜衣怒马惊草风,
身若劲松气如虹。
一朝踏尽寒霜雪,
剑破长空化游龙。

“这诗说的正是白袍小将。广播链路一战,世人皆识得白袍小将,即便与我们的军师OSPF相比,亦有过之而无不及。那一战,白袍小将恍若天神,携雷霆万钧之势冲入敌阵,好不威风! ”说书人眉飞色舞,口沫横飞。台下看客目瞪口呆,一脸沉醉。

自广播链路大捷已过三日。虽说众人都很高兴,但是连番的几次大战,亦是让不少人生了疲惫之心。网管听得OSPF的报告,便命三军稍作休整,恢复元气。这一日,OSPF与攻打广播链路一众将士相约于X网点有名的醉仙楼,谈天说地,把酒言欢。

“军师,莫要听那说书人瞎说。这种人就一样本事,喜欢夸夸而谈。”说话的人剑眉星目,英武不凡,对军师的语气很是恭敬。

“呵呵,将军莫要自谦,若非有你,我们不知要折损多少将士,才能攻下广播网络。”答话人白衣胜雪,神色如常。

“哎呀哎呀,大哥和军师你们怎么突然都变得如此清高了。哎呦哎呦,冷死了。”这时候突然窜出来一个小姑娘,那小姑娘一身水绿裙裳,扎着个马尾,宛若白玉的小脸上生着一双秀丽的大眼睛,乌黑的眼珠在里边滴溜溜的打着转。而那双顾盼撩人的大眼睛忽闪忽闪,带着微微上翘的长睫毛上下跳动,真是好生俏丽。

“噗。”终于有人忍不住,笑出声来,而席间的氛围也轻松了起来。

“小妹你又胡说,若无军师,我们这些兄弟怎受得主公如此赏识。你这么不懂规矩,以后也不知道哪家小哥敢要你。”白袍小将苦笑摇头。

“哼哼,我谁都不嫁,我…我就一辈子赖上你了!”难得的,小丫头嫩的小脸上透出了一点红。

“哈哈哈哈,原来我们的小妹心有所属了。”众人哈哈大笑,跟着起哄。

“你们也跟着胡闹!” 白袍小将言间讪讪,为了掩饰尴尬,干咳一声。忽又觉得好久没如此开心过,既而也跟着放声大笑。一时间,众人言笑晏晏,似是忘了Internet上那繁多的战事,那繁多的忧愁。

一、由接口演七般变化 众网元借奇功应不同链路

酒过三巡,白袍小将见时机成熟,便对OSPF正色道:“多谢军师提拔,方有我今日成就。原先籍籍无名一网元,如今却管理一方广播链路,竟然还有了DR这个名号,此等恩情,没齿难忘!”

“呵呵,非也。名利皆虚妄,这是家师教导我的,今天我也对你这样说,”OSPF摆了摆手,然后又对其他众人道:“还有你们也莫要看轻自己。常言道,此一时彼一时,你们可知道我传予你们的功法,人人皆能生出七般变化?将军当得DR、小妹当得BDR,你们也能当得。教你们七般变化,就是让你们顺势而为,莫说广播链路、NBMA链路,P2P/P2MP链路也当应付得了。”

“哦?竟有如此威能?”白袍小将很是惊奇。

“怎么?不信吗?且看看你的OSPF接口状态。”言罢OSPF含笑不语。

白袍小将心怀忐忑,查看了自己的OSPF接口,竟发现其上颜色由赤及紫,七般状态,交错变化,持续时长不一而足。

“军师,这?”

“莫慌,待我慢慢说来……”

1、OSPF接口

通过第一篇&第二篇,我们知道OSPF链路状态协议,运行OSPF的设备间通过交互链路状态信息(即LSA),最后每台OSPF设备都形成一个链路状态数据库(即LSDB),从而知道整张网络的拓扑信息。而这些链路信息最初的源头肯定都是OSPF设备本身相连的本地链路信息,那么这些信息又是从哪里获得的呢?答案是与链路直连的OSPF接口。

我们可以通过display ospf interface查看OSPF接口信息。
在这里插入图片描述
在上面的信息中,通过其中一些描述链路基本状况的字段,就可以了解OSPF接口相连的链路信息。

  • 1)Router ID设备的ID,第二篇中介绍到的,保证设备在OSPF网络的唯一性。
  • 2)Area接口所在的区域ID。关于区域ID,在第四篇中会详细介绍。
  • 3)Interface接口的基本信息,包括接口的IP地址、接口编号。始发于这个接口的OSPF报文将把这个IP地址作为源地址。
  • 4)Cost接口开销值,即此接口发送出去的数据包在链路中传输需要花费的开销值。
    OSPF在生成SPF时,就是依据这些链路开销值,选出最优的数据转发链路。
  • 5)Type接口类型,即这个接口相连的链路类型,包括P2PP2MP、广播或NBMA

当然,还有别的如维持邻居关系相关的等其他的信息,比如第二篇里的Dead Timer。

  • 6)Priority设备接口在选取DRBDR时的优先级。其值越大,优先级越高。
  • 7)DesignatedRouter接口所在广播网络/NBMA网络上的指定设备,即DR。一般用连接这个广播网络/NBMA网络的接口地址表示。比如192.168.23.0/24这个广播网络/NBMA网络的DR是相连接口地址为192.168.3.2的设备。
  • 8)BackupDesignatedRouter接口所在网络上的备份指定设备,BDR。一般用连接这个广播网络/NBMA网络的接口地址表示。比如192.168.23.0/24这个广播网络/NBMA网络的BDR是相连接口地址为192.168.3.1的设备。
  • 9)Hello接口发送Hello报文的时间间隔
  • 10)Dead接口相连的OSPF邻居失效时间。超过失效时间,如果接口还没有收到邻居设备发来的Hello报文,就表明两端的邻居关系已无效。华为S系列交换机在默认情况下,邻居失效时间为发送Hello报文时间间隔的4倍。
  • 11)PollNBMA网络上发送轮询Hello报文的时间间隔。在NBMA网络上,当邻居失效后,设备将按轮询时间间隔定期地发送Hello报文。轮询时间间隔值至少应为Hello报文时间间隔的4倍,华为S系列交换机在默认情况下发送轮询Hello报文的时间间隔是发送Hello报文时间间隔的4倍。
  • 12)Retransmit接口没有收到来自对端“LSA已经收到”的确认报文,需要重传LSA的等待时间。
  • 13)Transmit Delay接口发送LSA过程中的传输延迟时间。

2、OSPF接口状态机

OSPF设备从接口获取了链路信息后,然后与相邻设备建立邻接连接,交互这些信息。在建立邻接关系之前,邻居设备间需要明确角色分工,才能正常建立连接。那角色分工通过什么来了解呢?
其实在图1的接口信息中,我们还有一个非常关键的字段没有介绍,那就是State字段。通过这个字段,我们就可以了解OSPF设备在一段链路中的作用。而这也就是OSPF接口的七般变化。每个设备通过这七般变化,顺势而为,扮演好自己在这段链路中的角色。
接口总共有下面7种状态

  • Down接口的初始状态。表明此时接口不可用,不能用于收发流量。
  • Loopback设备到网络的接口处于环回状态。环回接口不能用于正常的数据传输,但仍能通过ICMP ping或位错误检测来收集接口信息。
  • Waiting设备正在判定网络上的DRBDR 在设备参与DR/BDR选举前,接口上会起一个Waiting定时器。在这个定时器超时前,设备发送的Hello报文不包含DRBDR信息,设备不能被选举为DRBDR,因为从第二篇可以知道,正常的DR/BDR选举遵循非抢占原则。这可以避免不必要地改变链路中已存在的DRBDR。仅NMBA网络、广播网络有此状态。
  • P-2-P接口连接到物理点对点网络或者是虚拟链路,这个时候设备会与链路连接的另一端设备建立邻接关系。仅P2P、P2MP网络有此状态。
  • DROther设备没有被选为DRBDR,但连接到广播网络或NBMA网络上的其他设备被选举为DR。它会与DRBDR建立邻接关系。
  • BDR设备是相连网络的BDR,并将在当前的DR失效时成为DR。该设备与接入该网络的所有其他设备建立邻接关系。
  • DR设备是相连网络的DR。 该设备与接入该网络的所有其他设备建立邻接关系。

每个OSPF接口如何进行七般变化?它是根据不同的情况(即输入事件)在这些状态中进行灵活转换的,这样就形成了一个高效运作的接口状态机,如下图所示。
在这里插入图片描述
下面是不同状态切换时的输入事件InputEvent(图中简称IE)。

输入事件详细事件描述
IE1InterceUP:底层协议表明接口是可操作的。
IE2WaitTimer:等待定时器超时,表明DR-BDR选举等待时间结束。
IE3BackupSeen:设备已检测过网络中是否存在BDR
发生这个事件主要有下面两种方式:
1)接口收到邻居设备的Hello报文,宣称自己是BDR
2)接口收到邻居设备的Hello的报文,宣称自己是DR,而没有指明有BDR
这都说明邻居间已进行了相互通信,可以结束Waiting状态了。
IE4接口所在的设备在网络中被选举为DR
IE5接口所在的设备在网络中被选举为BDR
IE6接口所在的设备在网络中没有被选举为DR/BDR
IE7NeighborChange:与该接口相关的邻居关系变化的事件发生,这表明DR/BDR要重新选举。
下面的这些邻居关系变化可能会导致DR/BDR重新选举:
1)接口所在的设备和一个邻居设备建立了双向通信关系。
2)接口所在的设备和一个邻居设备之间丢失了双向通信关系。
3)通过邻居设备发送的Hello报文检测到,邻居设备重新宣称自己是DR/BDR
4)通过邻居设备发送的Hello报文再一次检测到,邻居设备宣称自己不再是DR/BDR
5)通过邻居设备发送的Hello报文再一次检测到,邻居设备的DR优先级已经改变。
IE8UnLoopInd:网管系统或者底层协议表明接口不再环回。
IE9InterfaceDown:底层协议表明接口不可操作。任何一种状态都可能触发此事件切换到Down状态。
IE10LoopInd:网管系统或者底层协议表明接口处于环回状态。任何一种状态都可能触发此事件切换到Loopback状态。

二、邻居间奏琴瑟和鸣 八般变化助LSA交互

众人听罢,内心久久不能平歇,军师的功法原来竟有这般变化!想想也是,十四儿郎,少小离家,谁不想从茫茫行伍中脱颖而出,纵不博得个千古美名,总要留下些什么证明自己亦曾得意过。

“初时以为军师给我们都定义好了角色,照着军师给的锦囊去做就好,原来这竟是一门能演绎七般变化的高明心法。”白袍小将似是喃喃自语,又似是对众人说,忽的他抬头对OSPF道:“军师,既然这心法能教人应不同链路,却没有说如何去教我们在这链路上去交互LSA,想必还另有心法,是也不是?!”

“嗯,将军果然聪明,的确如此,”OSPF微微点头,“还有一门心法叫琴瑟和鸣,想来你们从这雅致的名字也可以知道,这需要两人共同修行演绎。而这心法,可是比之前的更复杂了,它有八般变化。”

“八般变化?这不是才多了一般变化么?”

“呵呵,非是多了一般变化那么简单。反正这些你们迟早也要习得,我就先说与你们听听……”

1、OSPF邻居

相邻设备间明确好角色分工,相连接口状态稳定下来以后,下一步就是建立邻接关系,完成链路信息的传输。


江湖小贴士:

1、 邻居关系和邻接关系有什么区别?什么情况下才会出现邻居或者邻接?
在这里插入图片描述

  • 1)邻居关系OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,比如Hello报文发送间隔、网络类型、IP地址掩码等,如果双方一致就会形成邻居关系,两端设备互为邻居。
  • 2)邻接关系:位于邻居关系之上,如果两端需要进一步交换DD报文、交互LSA信息,才建立邻接关系。

这也就解答了第二篇里面广播链路/NBMA链路的一些疑问。在广播链路/NBMA链路里,因为DROther之间不需要交换LSA信息,所以建立的就是邻居关系。而DRBDR之间,DR/BDRDROther之间需要交互LSA信息,所以建立的是邻接关系。如上图所示。
P2P链路/P2MP链路则只有邻接关系
后面会介绍到邻居状态机,如果根据邻居状态理解,邻居关系是指邻居状态达到了2-way状态,而邻接关系则需要达到Exstart以上状态。

2、OSPF的五种协议报文。
在介绍OSPF邻居的一些内容之前,有必要讲解下OSPF协议用到的5种协议报文,因为后面的知识点很多都会涉及到这些协议报文。在讲解时,会拿生活中的顾客去饭馆点菜、服务员上菜做类比,加深理解。

  • Hello报文:最常用的报文,其作用为建立和维护邻接关系,周期性地在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、本网络中的DR、BDR以及已知的邻居。

这类似于顾客去饭馆吃饭,先跟服务员打招呼。

  • DD报文:两台设备在邻接关系初始化时,用DD报文描述本端设备的LSDB,进行数据库的同步。报文内容包括LSDB中每一条LSAHeaderLSAHeader可以唯一标识一条LSA),即所有LSA的摘要信息。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少设备之间的协议报文流量,对端设备根据LSA Header就可以判断出是否已有这条LSA。在两台设备交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1Slave方使用Master的序列号作为确认。

这里面,DD报文就好比饭馆里面的菜单,顾客先要看下菜单,了解有哪些菜。

  • LSR报文:两台设备互相交换过DD报文之后,需要发送LSR报文向对方请求更新LSA,内容包括所需要的LSA的摘要信息。

这类似于顾客看完菜单之后,他就知道想要点哪些菜了,就把X桌的菜单写好给服务员。

  • LSU报文:LSU报文用来向对端设备发送其所需要的LSA或者泛洪本端更新的LSA,内容是多条LSA(全部内容)的集合。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。

这类似于饭馆根据顾客点的菜单提供对应的菜。

  • LSAck报文:LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。

这类似于服务员上好菜以后,顾客还要确认下是不是他点的那些菜。

考虑到篇幅有限,如果大家希望了解不同协议报文的格式,可以查阅后面会发布的“OSPF-番外篇之协议报文格式”


邻居关系建立和维持都是通过交换Hello报文来完成的。 OSPF设备发送的Hello报文会携带有OSPF接口数据结构中保存的信息,来通告给邻居设备。而对于邻居设备来说,也会将这些学习到的信息维护一张邻居数据结构表中。通过display ospf peer命令可以了解这些邻居信息。
在这里插入图片描述
对于OSPF邻居字段信息的详细解释如下。

  • 1)Area:邻居所属的区域。
  • 2)Interface:与邻居相连的接口。
  • 3)Router ID:邻居的Router ID
  • 4)Address:邻居接口的IP地址。
  • 5)State:邻居状态。
  • 6)ModeDD交换进程中协商的主从状态。
    Nbr is Master,邻居是Master,主动发送DD报文。
    Nbr is Slave,邻居是Slave,配合Master发送DD报文。
  • 7)Priority:邻居的DR优先级。
  • 8)DR:邻居间指定路由器的IP地址。
  • 9)BDR:邻居间备份指定路由器的IP地址。
  • 10)Dead timer : 邻居失效定时器。如果在超时时间内,还没有收到邻居发来的Hello报文,说明邻居已失效。
  • 11)Retrans timer interval:重传LSA的时间间隔。如果在这个间隔内,没有收到邻居的LSA已经收到的确认报文,LSA会进行重传。
  • 12)Authentication Sequence: 认证序列号。

2、OSPF邻居状态机

相信大家也注意到了,邻居信息中也有个State字段。不错,OSPF说的琴瑟和鸣正是相邻设备间通过不同的邻居状态切换,最后形成完全的邻接关系,完成LSA信息的交互。*
邻居状态机总共有8种状态:

  • Down邻居会话的初始阶段。表明没有在邻居失效时间间隔内收到来自邻居设备的Hello报文。除了NBMA网络OSPF路由器会每隔PollInterval时间对外轮询发送Hello报文,包括向处于Down状态的邻居路由器(即失效的邻居路由器)发送之外,其他网络是不会向失效的邻居路由器发送Hello报文的。
  • Attempt这种状态适用于NBMA网络,邻居路由器是手工配置的。邻居处于本状态时,路由器会每隔HelloInterval时间向自己手工配置的邻居发送Hello报文,尝试建立邻居关系。
  • Init本状态表示已经收到了邻居的Hello报文,但是对端并没有收到本端发送的Hello报文,收到的Hello报文的邻居列表并没有包含本端的Router ID,双向通信仍然没有建立。
  • 2-way互为邻居。本状态表示双方互相收到了对端发送的Hello报文,报文中的邻居列表也包含本端的Router ID,邻居关系建立。如果不形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。而且DR/BDR只有在邻居状态处于这个状态或者更高的状态才会被选举出来。
  • Exstart协商主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。邻居间从此时才开始正式建立邻接关系。
  • Exchange交换DD报文。本端设备将本地的LSDBDD报文来描述,并发给邻居设备。
  • Loading正在同步LSDB。两端设备发送LSR报文向邻居请求对方的LSA,同步LSDB
  • Full建立邻接。两端设备的LSDB已同步,本端设备和邻居设备建立了完全的邻接关系。

其状态切换如下图所示。
在这里插入图片描述
触发不同状态的输入事件如下表所示。

输入事件详细事件描述
IE1Start:以HelloInterval间隔向邻居设备发送Hello报文,尝试建立邻居关系。仅NMBA网络适用。
IE2HelloReceived:从邻居设备收到一个Hello报文。
IE32-WayReceived:从邻居设备收到的Hello报文中包含了自己的RouterID邻居间建立了双向通信关系。接下来会进行判断:
IE3(Y):如果相邻设备间应当建立邻接关系,会将邻居状态切换为Exstart
IE3(N):如果相邻设备间不应当建立邻接关系,只建立邻居关系,会将邻居状态切换为2-way
IE4NegotiationDone:邻居间主从关系已经协商完成DD序列号已经交换。
IE5ExchangeDone:邻居间成功交换了数据库描述报文。接下来会进行判断:
IE5(Y):如果链路状态请求列表为空,会将邻居状态切换为Full状态,表示链路状态数据已全部交换完成,邻居间建立了完全的邻接关系;
IE3(N):如果链路状态请求列表不为空,会将邻居状态切换为Loading状态,开始或继续邻居发送LSR报文,请求还没有接收到的链路状态数据。
IE6LoadingDone:链路请求状态列表为空。

其实,上面的邻居状态机并没有描述完全,只是描述了正常的切换过程,实际的状态机很复杂,会考虑其他很多异常情况,比如链路变化导致的邻居关系和邻接关系只见的切换、链路状态数据传输时出现错误导致重传等。考虑到篇幅有限,如果大家希望了解更全面的状态,可以查阅后面会发布的“OSPF-番外篇之邻居状态机”。

下面介绍一下不同网络的邻接关系建立过程:

广播网络

在这里插入图片描述

  1. 建立邻居关系
  • a. DeviceA的一个连接到广播类型网络的接口上激活了OSPF协议,并发送了一个Hello报文(使用组播地址224.0.0.5)。此时,DeviceA认为自己是DR设备(DR=1.1.1.1),但不确定邻居是哪台设备(Neighbors Seen=0)。
  • b. DeviceB收到DeviceA发送的Hello报文后,发送一个Hello报文回应给DeviceA,并且在报文中的Neighbors Seen字段中填入DeviceARouter IDNeighbors Seen=1.1.1.1),表示已收到DeviceAHello报文,并且宣告DR设备是DeviceBDR=2.2.2.2),然后DeviceB的邻居状态机置为Init
  • c. DeviceA收到DeviceB回应的Hello报文后,将邻居状态机置为Exstart状态,下一步双方开始发送各自的链路状态数据库。在广播网络中,两个接口状态是DR Other的设备之间将停留在此步骤。
  1. 主/从关系协商、DD报文交换
  • a. DeviceA首先发送一个DD报文,宣称自己是MasterMS=1),并规定序列号Seq=XI=1表示这是第一个DD报文,报文中并不包含LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。
    为了提高发送的效率,DeviceADeviceB首先了解对端数据库中哪些LSA是需要更新的,如果某一条LSALSDB中已经存在,就不再需要请求更新了。为了达到这个目的,DeviceADeviceB先发送DD报文,DD报文中包含了对LSDBLSA的摘要描述(每一条摘要可以惟一标识一条LSA)。为了保证在传输的过程中报文传输的可靠性,在DD报文的发送过程中需要确定双方的主从关系,作为Master的一方定义一个序列号Seq,每发送一个新的DD报文将Seq加一,作为Slave的一方,每次发送DD报文时使用接收到的上一个MasterDD报文中的Seq
  • b. DeviceB在收到DeviceADD报文后,将DeviceA的邻居状态机改为Exstart,并且回应了一个DD报文(该报文中同样不包含LSA的摘要信息)。由于DeviceBRouter ID较大,所以在报文中DeviceB认为自己是Master,并且重新规定了序列号Seq=Y
  • c. DeviceA收到报文后,同意了DeviceBMaster,并将DeviceB的邻居状态机改为ExchangeDeviceA使用DeviceB的序列号Seq=Y来发送新的DD报文,该报文开始正式地传送LSA的摘要。在报文中DeviceAMS=0,说明自己是Slave
  • d. DeviceB收到报文后,将DeviceA的邻居状态机改为Exchange,并发送新的DD报文来描述自己的LSA摘要,此时DeviceB将报文的序列号改为Seq=Y+1。上述过程持续进行,DeviceA通过重复DeviceB的序列号来确认已收到DeviceB的报文。DeviceB通过将序列号Seq加1来确认已收到DeviceA的报文。当DeviceB发送最后一个DD报文时,在报文中写上M=0

NBMA网络

在这里插入图片描述

  1. 建立邻居关系
  • a. DeviceBDeviceA的一个状态为Down的接口发送Hello报文后,DeviceB的邻居状态机置为Attempt。此时,DeviceB认为自己是DR设备(DR=2.2.2.2),但不确定邻居是哪台设备(Neighbors Seen=0)。
  • b. DeviceA收到Hello报文后将邻居状态机置为Init,然后再回复一个Hello报文。此时,DeviceA同意DeviceBDR设备(DR=2.2.2.2),并且在Neighbors Seen字段中填入邻居设备的Router IDNeighbors Seen=2.2.2.2)。在NBMA网络中,两个接口状态是DR Other的设备之间将停留在此步骤
  1. 主/从关系协商、DD报文交换过程同广播网络的邻接关系建立过程。

  2. LSDB同步(LSA请求、LSA传输、LSA应答)过程同广播网络的邻接关系建立过程。

点到点/点到多点网络

与广播链路的过程相似,只是少了形成邻居关系判断这一步。

三、X网点大阵终成 少年联手小将再踏征途

草长莺飞,醉柳垂堤,一晃竟过去数月有余。
X网点,点将台。
网管于台上意气风发,心中却颇多感叹。他对台下众人道:“你们随本公南征北战,一路披荆斩棘,个个当有万夫莫敌之勇。然勇者有余,每每遇到X网点这样复杂的网点,却也是无计可施。”他顿了一顿,似是将多年沉积的郁结之气一扫而空:“天佑我三军!幸遇军师!”

“天佑我三军!幸遇军师!”
“天佑我三军!幸遇军师!”

白衣少年微微颔首,然后分别向网管和台下众将士盈盈一拜:
“臣本布衣,自耕野于草莽,苟全性命于乱世。然主公不以臣卑微,三顾臣于草庐之中。
恐有负主公知遇之恩,日日亦殚精竭虑图破X网点。时至今日,终有所成:
一为五行八阵图,定X网点OSPF路由运行机制。
二为巧计分四路,破不同类型网络。
三为奇才举能人,解广播链路/NBMA链路困局。
四为演七般变化,得十八样武器皆通众网元。
五为奏琴瑟和鸣,助邻居间互通LSA有无。”
接着他又朝网管再拜:“终得X网点大阵练成,微臣在此已无必要,特请辞军师,拜别主公。”
全军皆寂然。

“哈哈哈哈!”默然半晌,网管大笑三声,“天下无不散之筵席,军师智绝天下,本公早想到军师会有离开的一天。众将士听令!”随之,他睥睨下首:“本公在此立誓,有我网管一日在,军师变是我军中上宾。三军诸将,尽听其号令!”
“三军诸将!尽听号令!”
“三军诸将!尽听号令!”

翌日清晨。
“怎么,不与她道别吗?”白衣少年拍了拍白袍小将的肩膀。
“不了,见了徒增伤感罢了。”白袍小将定了半晌,然后摆了摆手,转身催马便走。
“大哥慢走!”明晃晃的人儿竟追了过来,见白袍小将慢慢停下,也随之停在他后边不远处。
那明晃晃的人儿仍穿着一身水绿衣裳,俏生生的立在那儿,满目含泪。白袍小将低下了头,心中一阵苦涩。
她见他那副模样,亦知他心中不舍,遂用袖口擦了擦泪水,然后展颜一笑道:“大哥是要去做大事的人,自当不应有所羁绊,我不会追随大哥的。但是总有不舍,所以想见大哥最后一面。”
“……嗯。”
“大哥,我们一起呆了这么久,还不知道你的名字呢。”
“呵呵,很俗气的一个名字,叫华为S系列交换机。”
“一点都不俗气,我觉着特好听。大哥?”
“嗯?”
“不要低着头,我希望你看着我,记着我的模样,永远不要忘记我!”
大哥抬首。

本文章转载,原文章为华为企业互动社区的叫交换机在江湖博主的文章,原文章链接:
https://forum.huawei.com/enterprise/zh/thread/580887605820669952
文章转载,侵权必删

这篇关于问鼎OSPF(3)-完善机制沐邻里,帅将兵民如父兄的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

【Tools】大模型中的自注意力机制

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 自注意力机制(Self-Attention)是一种在Transformer等大模型中经常使用的注意力机制。该机制通过对输入序列中的每个元素计算与其他元素之间的相似性,

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

【Tools】大模型中的注意力机制

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 在大模型中,注意力机制是一种重要的技术,它被广泛应用于自然语言处理领域,特别是在机器翻译和语言模型中。 注意力机制的基本思想是通过计算输入序列中各个位置的权重,以确

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的

UVM:callback机制的意义和用法

1. 作用         Callback机制在UVM验证平台,最大用处就是为了提高验证平台的可重用性。在不创建复杂的OOP层次结构前提下,针对组件中的某些行为,在其之前后之后,内置一些函数,增加或者修改UVM组件的操作,增加新的功能,从而实现一个环境多个用例。此外还可以通过Callback机制构建异常的测试用例。 2. 使用步骤         (1)在UVM组件中内嵌callback函

Smarty模板引擎工作机制(一)

深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解。 在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码: <?php$title="深处浅出之Smarty模板引擎工作机制";$content=