🚀RIP(Routing Information Protocol,路由信息协议)
🚀EIGRP(Enhanced Interior Gateway Routing Protocol,增加型内部网关路由协议)
🚀OSPF的特征、术语、路由器类型、LSA类型、区域类型
文章目录
**OSPF是一个内部网关路由协议,使用链路状态而不是距离矢量进行路径选择。OSPF传播LSA (链路状态通告),而不是路由表更新。因为只交换LSA而不交换整个路由表,OSPF网络能以较快的方式收敛。
**OSPF使用链路状态算法来构建并计算到达所有已知目的的最短路径。OSPF区域中的每台路由器都有相同的链路状态数据库,这是-一个包含每台路由器可用接口和可达邻居的列表。
🎶:本文章是续写,http://t.csdn.cn/81LVQ🎶
✨OSPF是一个基于开放标准的链路状态协议。OSPF的操作从高层看由三个主要的元素组成:邻居发现、链路状态信息交换以及最优路径计算。
✨OSPF使用SPF (最短路径优先)或Dijkstra 算法计算最优路径。SPF计算的输入信息是链路状态信息,这些信息在路由器之间通过不同的OSPF消息类型进行交换。这些消息类型有助于提升收敛速度,以及多区域OSPF部署中的扩展性。
✨OSPF也支持几种不同的网路类型,工程师可以在多种不同的下层网络技术之,上配置OSPF。
✨OSPF由IETF (互联网工程任务组)开发,用来克服距离矢量路由协议的限制。OSPF被广泛部署在当今企业网络中的一个主要原因是它是开放的标准;OSPF不是私有的。RFC1131 中描述了OSPF协议的第1版。当前在IPv4中使用的是第2版,定义在RFC 1247和2328中。OSPF 第3版用于IPv6网络,定义在RFC 5340中。
✨OSPF提供了极大的扩展性以及快速的收敛性能。虽然在小型和中型网络中配置相对简单,但大规模网络中OSPF的部署和排错有时候会很复杂。
OSPF
独立传输: OSPF工作在IP上层,使用协议号89。它不依赖传输层协议TCP或UDP的支持。
采用高效的更新:当一台OSPF路由器第一次发现一个新邻居时,它会向新邻居发送包含所有已知链路状态信息的完整更新。-一个OSPF区域中所有路由器的链路状态数据库中必须包含一致且同步的链路状态信息。当一个OSPF网络处于收敛状态,且出现新链路启用或链路不可用事件时,OSPF路由器仅发送部分更给自己的所有邻居。此更新随后会被泛洪给区域内的所有OSPF路由器。
度量: OSPF使用的度量值是从源到目的所有出接口的累加开销值。接口开销与接口带宽成反比,工程师也可以手动进行指定。
更新目的地址:OSPF不使用广播,而是使用组播和单播发送消息。OSPF使用IPv4单播地址224.0.0.5向所有OSPF路由器发送信息,使用224.0.0.6向DR/BDR路由器发送信息。所有OSPFv3路由器的IPv6组播地址是FF02::5,所有DR/BDR路由器的地址是FF02::6。 如果下层网络不支持广播,工程师必须使用单播地址建立OSPF邻居关系。对于IPv6环境来说,该地址是链路本地IPv6地址。
支持VLSM: OSPF 是一个无类路由协议。它支持VLSM (可变长子网掩码)和不连续网络。它在路由更新中携带子网信息。
手工路由汇总:工程师可以在ABR (区域边界路由器)上手动汇总OSPF区域间
路由,也可以在ASBR (自治系统边界路由器)上汇总OSPF外部路由。OSPF没有自动汇总的概念。
认证: OSPF支持明文、MDS以及SHA认证。
注释 :术语IP用作一般意义上的IP,同时表示IPv4和IPv6。除此之外,使用术语IPv4和IPv6来表示特定的协议。
✨如图3-1所示,OSPF路由器通过以下通用的链路状态路由过程,创建并维护路由信息,以达到收敛状态。
✨如果在一个简单的网络中运行OSPF,路由器和链路的数量都相对较少,OSPF可以很轻松地推算出到达所有目的的最优路径。然而,包含许多路由器和链路的更大网络的描述信息可能会变得颇为复杂。SPF计算会比较所有可能的路径,而这个计算过程可能会变为一个复杂且耗时的过程。
一个减小复杂性和链路状态信息数据库大小的主要方式是把OSPF路由域分为较小的单元,也称为区域(Area),如图3-2所示。这也减少了路由器执行SPF算法花费的时间。一个区域中的所有OSPF路由器在各自的LSDB中必须包含相同的条目。在区域内,路由器交换详细的链路状态信息。然而,从一个区域传输到另一个区域的信息中,仅包含LSDB条目的明细汇总,并不包含源区域的拓扑详情。这些来自另一个区域的汇总LSA会被直接放到路由表中,不需要路由器重新运行SPF算法。
OSPF使用两层区域分级。
✨在OSPF路由域中配置多个区域或AS时,OSPF有特殊的限制,如图3-3所示。如果工程师配置了多于一个区域,即多区域OSPF,区域中必须有一个是区域0。该区域被称为骨干区域。工程师在设计网络或从一个区域开始部署时,最好从核心层开始,核心层将成为怄域0,然后可以扩展到其他区域。
✨骨干必须在所有其他区域的中心,其他区域必须连接到骨干。主要原因是OSPF希望所有区域都将路由信息注人到骨干区域,再由骨干把信息分布到其他区域。
✨骨干区域的另一个重要要求是它必须是连续的。话句话说,不允许分割区域0。
✨然而,有时无法满足这两个条件。
✨OSPF使用5种类型的路由协议包,共享通用的协议头部。每个OSPF包被直接封装在IP头部中。OSPF的IP协议号是89。
✨当网络发生故障时,路由协议应尽快检测故障并找出网络中的另–条路径。链路状态协议支持快速收敛。链路状态协议还可以充分扩展来支持多供应商环境。这就是链路状态协议广泛应用于企业和服务提供商环境的原因。
✨与传统的距离矢量路由协议相比,链路状态协议具有以下优势。
与传统的距离矢量协议相比,链路状态协议具有以下又是
运行链路状态路由协议的路由器必须首先识别其他路由器,并与其相邻的路由器
建立邻居邻接关系。通过与相邻路由器交换hello数据包,路由器即可建立邻居邻接关系。然后将邻居路由器放人邻居数据库。如图4-1 所示,路由器A识别出路由器B和D为邻居。图4-1还表示中转网络。中转网络是一个术语(不专属于OSPF),表示网络中有不止一台路由器,而且很可能有流量用作从来源到目标的中间路径。中转网络的反义词是末节网络。末节网络只有一台路由器、一个目标。
✨路由器之间建立邻居关系之后,就会通过可靠地交换LSA来同步其LSDB。LSA
说明某个路由器和与该路由器连接的网络。交换LSA来构建数据库的过程如图4-1所示。LSA存储在LSDB (拓扑数据库)中。通过交换所有LSA,路由器可以获取网络的完整拓扑。该区域中的每台路由器都应具有该区域的相同拓扑数据库。
✨建立LSDB之后,每台路由器对拓扑图应用最短路径优先(SPF) 算法。SPF算法
使用Dijkstra计算( 由荷兰计算机科学家于1956年开发)。SPF算法构建一个树,其中树根代表路由器自身,叶子代表远程网络。路由器自身位于树根位置,并根据到达目标所需的累积成本来计算到达每个目标的最短路径。
✨到达目标网络选择的最佳路径要放人路由表中的候选路径。这包括一个目标网络,以及到达该网络的下一跳IP地址。
✨图4-1中路由器A.上的路由表表明,数据包应发送到路由器才能到达网络X。
✨每当拓扑发生变化,都会创建新的LSA并发送到整个网络。所有路由器在收到新的LSA时会更改其LSDB,并对更新的LSDB运行SPF算法来验证到达目标的新路径。

✨计算OSPF成本的公式是:成本=参考带宽/接口带宽(以位/秒为单位)。默
认参考带宽为108,也就是10000000bit/s,或者说等于快速以太网的带宽。因此,10Mbit/s以太网链路的默认成本为108/ 107= 10,而T1链路的成本为108/ 108= 1。OSPF的参考带宽基于快速以太网(100Mbit/s) 的速度。速度较高的链路成本为1,因为OSPF成本用整数表示(没有小数部分)。在这种情况下,需要手动更改该接口的OSPF成本或将参考带宽调整为更高的值。示例4-1显示如何将参考带宽设置为1 Gbit(1000 Mbit/s)。
✨在示例4-1的情况下,由于路由器全局设置为将参考带宽调整为1000(Mbit/s),
所以1这个值是Gbit以太网速度。还可以在每个接口上设置该值。示例4-2将快速以太网接口的接口成本增加到10,这就相当于10 Mbit以太网。
✨路由器到达远程网络的成本是路由器到该网络的路径上所有链路的累积成本。在图4-2中,路由器A通过路由器B到达网络X的成本是30(10+20),通过路由器D的成本是20 (10+ 10)。通过路由器D的路径更好,因为它的成本更低。
✨在共享信息之前,邻居OSPF路由器必须在网络.上互相识别,因为OSPF路由取决于两台路由器之间链路的状态。此过程利用Hello协议来完成。Hello协议使用hello数据包(见图4-3)通过确保邻居间的双向通信来建立和维护邻居关系。如果路由器发现自己被列在hello数据包的“邻居”字段中,则表明已经建立了双向通信。在图4-3中,用*标记的参数必须与所发生的邻接关系匹配。
✨加人OSPF的每个接口都使用多播地址224.0.0.5定期发送Hello数据包。hello 数据包包含以下信息。
✨加人OSPF的每个接口都使用多播地址224.0.0.5定期发送Hello数据包。hello 数据包包含以下信息。

🕛本节介绍OSPF主干和非主干(普通)区域的双层层次结构,以及多区域OSPF术语。
🕘在小型网络中,路由器链路的网络不是很复杂,而且到达各个目标的路径也能轻松确定。但是在大型网络中,网络高度复杂,而且到达每个目标的可能路径数目很庞大。因此,比较所有可能路由的Dijkstra计算方法非常复杂,并且可能要花大量时间才能完成。
🕒如果链路状态路由协议具有良好的网络设计,可以通过将网络划分为若干区域来减少Djkstra计算的规模。一个区域中的路由器数量和该区域中泛洪的LSA数量较小, 这意味着一个区域的链路状态或拓扑数据库比较小。因此,Dijkstra 计算更简单、花费时间更少。区域内的路由器维护关于链路的详细信息,以及其他区域中关于路由器和链路的一-般或汇总信息。但是,默认情况下并不执行汇总,必须对此进行配置。使用多区域OSPF设计的另一个优点是,某个区域中的拓扑更改只会导致在该区域内进行LSA泛洪。因而只会在发生拓扑变化的区域内重新计算SPF。
🕥每个OSPF数据包都具有OSPF数据包头部,长度为24字节。OSPF数据包头和数据被封装到IP数据包中,在该IP数据包包头中,协议字段被设为89, TTL值被设置为1,目的地址则被设为以下两个组播地址之一-: 224.0.0.5 或224.0.0.6。如果OSPF数据包被封装在以太网帧内,则目的MAC地址也是组播地址: 01-00-5E-00-00-05 或01-00-5E-00-00-06。OSPF数据包包头的格式如图4-2所示,各字段含义如下所述。
✨✨✨OSPF数据包包括以下5种类型,每种数据包在OSPF路由过程中发挥各自的作用。
-(1)Hello
✨✨Hello用于建立和维持OSPF邻接关系。Hello 数据包格式如图4-3所示,除了OSPF包头,各字段的含义如下所述。
网络掩码:与发送方接口关联的子网掩码。
Hello间隔:连续两次发送Hello数据包之间的时间间隔,单位为秒。
路由器优先级:用于DR/BDR选举,8比特,范围为0~255。
路由器Dead间隔:宣告邻居路由器无效之前等待的最长时间。
指定路由器(DR):DR的路由器接口IP地址,如果没有,该字段为0.0.0.0。
邻居列表:列出相邻路由器的OSPF路由器ID。
(2)DBD(Database Description,数据库描述)
🕞🕞DBD包含发送方路由器的链路状态数据库的摘要(LSA 头部信息),接收方路由器使用本数据包与其本地链路状态数据库对比,以便检查链路状态数据库是否同步。DBD数据包格式如图4-4所示,除了包头,各字段含义如下所述。
接口MTU:在数据包不分段的情况下,路由器接口能发送的最大IP数据包的大小。
I:初始位, 发送的第一个DBD包I位置1,后续的DBD包I位置0。
M:后继位,最后一个DBD包,M位置为0,其他M位置wei1。
MS:主从位,用于协商主/从路由器,置1表示主路由器,置0表示从路由器。
DD序列号:在数据库同步过程中,用来确保路由器收到完整的DBD数据包,该序列号由主路由器在发送第一个DBD时设置,后继数据包的序列号将依次增加。
6.LSA头部:LSA头部包含的信息可以唯一地标识一个LSA,其格式如图4-5所示。
老化时间:发送LSA后经历的时间,单位为秒。
类型: LSA的类型。
链路状态ID:标识LSA,LSA类型不同标识方法也不同。
通告路由器:始发LSA通告的路由器ID。
序列号:每当LSA被更新时都加1,可以帮助识别最新的LSA。
校验和:除了老化时间之外的LSA全部信息的校验和。
长度: LSA头部和LSA数据的总长度。
(3)LSR ( Link-State Request,链路状态请求)
✨✨在LSDB同步过程中,路由器收到DBD包后,会查看自己的LSDB中不包括哪些LSA,或者哪些LSA比自己的更新,然后把这些LSA记录在链路状态请求列表中,接着通过发送LSR数据包来请求DBD中任何LSA条目的详细信息。LSR数据包格式如图4-6所示,除了包头,各字段的含义如下所述。


提示:这里对文章进行总结:
OSPF是目前应用最为广泛的链路状态路由协议,通过区域划分很好地实现了路由的分级管理。在大规模网络的情况下,OSPF可以通过划分区域来规划和限制网络规模。本文介绍了建立OSPF邻居关系🛵OSPF特性🛻OSPF操作概述🚙
OSPF的分层结构🛹OSPF的设计限制🛴OSPF消息类型🚎OSPF路由协议概述🏎️OSPF协议数据结构🎶了解OSPF中的度量🚀建立OSPF邻居邻接关系🚤
构建链路状态数据库🛳️OSFP区域结构🦼OSPF数据包格式登内容。
在以下示例中,我无法理解Ruby运算符的优先级:x=1&&y=2由于&&的优先级高于=,我的理解是类似于+和*运算符:1+2*3+4解析为1+(2*3)+4它应该等于:x=(1&&y)=2但是,所有Ruby源代码(包括内部语法解析器Ripper)都将其解析为x=(1&&(y=2))为什么?编辑[08.01.2016]让我们关注一个子表达式:1&&y=2根据优先规则,我们应该尝试将其解析为:(1&&y)=2这没有意义,因为=需要特定的LHS(变量、常量、[]数组项等)。但是既然(1&&y)是一个正确的表达式,那么解析器应该如何处理呢?我试过咨询Ruby的parse.y,但它太像意大利面条
题目描述小张买了 n 件白色的衣服,他觉得所有衣服都是一种颜色太单调,希望对这些衣服进行染色,每次染色时,他会将某种颜色的所有衣服寄去染色厂,第 i 件衣服的邮费为 ai 元,染色厂会按照小张的要求将其中一部分衣服染成同一种任意的颜色,之后将衣服寄给小张,请问小张要将 n 件衣服染成不同颜色的最小代价是多少?输入描述第一行为一个整数 n ,表示衣服的数量。第二行包括 n 个整数a1,a2...an 表示第 i 件衣服的邮费为 ai 元。(1≤n≤10^5,1≤ai≤10^9 )输出描述输出一个整数表示小张所要花费的最小代价。输入输出样例输入551321输出25 思考🤔:题意:意思是
这里有两个测试:if[1,2,3,4].include?2&&nil.nil?puts:helloend#=>和if[1,2,3,4].include?(2)&&nil.nil?puts:helloend#=>hello上面告诉我&&比方法参数有更高的优先级,所以它逻辑上和2&&nil.nil?是真的,并将它作为参数传递给include?但是,有这个测试:if[1,2,3,4].include?2andnil.nil?puts:helloend#=>hello所以这告诉我方法参数和“and”具有相同的优先级(或者方法参数高于“and”)因为它传递了2以包含?在处理“和”之前。注意:我知
是否可以使用Amazon简单排队服务创建优先级队列?最初我找不到关于这个主题的任何内容,这就是我创建两个队列的原因。一个普通队列和一个优先队列。我正在根据我定义的规则将消息排入此队列,但在出列消息时会出现困惑。如何对队列进行长时间轮询,使我的队列组合表现得像一个优先级队列? 最佳答案 我认为您通过创建两个队列走在正确的轨道上-一个普通队列和一个优先级队列。在这种情况下,您不一定需要长时间轮询。由于优先队列中的消息优先于普通队列中的消息,您可以采用如下方法:轮询优先级队列,直到没有更多消息为止。轮询普通队列并在普通队列中的每条消息后重
运算符优先级的一些信息来源likethis表示!、~、+、-等一元运算符具有更高优先级比赋值=。但是,以下表达式是可能的:!a=true#=>false(withwarning)a#=>true~a=1#=>-2a#=>1+a=1#=>1a#=>1-a=1#=>-1a#=>1考虑到这些结果,我能想到的唯一可能的解释是这些一元运算符的优先级低于赋值。如果是这样的话,那就意味着我上面提到的信息是错误的。哪个是正确的?有不同的解释吗? 最佳答案 我的编程ruby书(第2版)也将一元运算符列为具有比赋值更高的优先级。一元运算符被赋予最高
我将向您展示来自rubykoans的代码片段教程。考虑下一个代码:classMyAnimalsLEGS=2classBird实际上问题在评论中(我用星号突出显示了它(尽管它打算以粗体显示))。有人可以解释一下吗?提前致谢! 最佳答案 这里有答案:Ruby:explicitscopingonaclassdefinition.但也许它不是很清楚。如果您阅读链接的文章,它将帮助您找到答案。基本上,Bird是在MyAnimals的范围内声明的,在解析常量时具有更高的优先级。Oyster位于MyAnimals命名空间中,但未在该范围内声明。将
查看下面的作业,我假设该作业在low_priority队列上运行。classGuestsCleanupJob我同意这一点,但这只是队列的名称对吗?它实际上与优先级无关。例如,如果我创建了一个队列名为:my_queue的作业,它将被视为具有与:low_priority队列相同的优先级。从文档中我无法找到任何表明我可以对排队的作业进行优先排序的信息。我知道delayed_jobs有这个功能,但我在active_job中没有找到它。 最佳答案 优先级取决于实际的QueueAdapter以及此适配器的配置方式。如果您的适配器不支持优先级或未
以前的答案answer类似question是错误的。Ruby中均未提及方法调用documentation也不在communitywiki.不带括号的方法调用高于或or似乎比没有括号的方法调用具有更低的优先级:putsfalseortrue相当于(putsfalse)ortrue并显示false。注意:我知道不应该使用or。尽管如此,这仍然是一个很好的例子,表明某些运算符的优先级确实低于方法调用。低于||putsfalse||true相当于puts(false||true)并显示true。带括号的方法调用用于方法调用的括号don'tseem进行分组:puts(falseortrue)#S
文章目录实验要求实验思路IP地址规划路由实验配置R1上配置R2上配置R3上配置R4上配置R5上配置R6上配置R7上配置R8上配置R9上配置R10上配置R11上配置R12上配置实验测试R10pingR4的环回R10pingR12的环回R10pingR1实验要求R4为ISP,其只能配置IP地址;R4与其他所有直连设备间均使用公有IP;R3-R5/6/7为MGRE环境,R3为中心站点;整个OSPF环境IP基于172.16.0.0/16划分;所有设备均可访问R4的环回;减少LSA的更新量,加快收敛,保障更新安全;全网可达实验思路IP地址规划公网IP随便配置,这里我R3-R4的网段为34.1.1.0/2
高科技摄像头特别是海康萤石摄像头,已经不再只局限于简单的视频功能,特别是智能AI的普及,摄像头也华丽变身成了一个个独立的智能个体,可以实现人脸抓拍,人形检测,客流统计等店铺值守场景,也可以实现安全帽识别,车辆识别,非法入侵识别等智慧工地场景。但用户也许会问,摄像头又不会说话,他得知的这些信息怎么告诉我们,还是说需要配一个主机去处理,这成本又有点太高了。这点正是萤石云要为大家解决的,下面来介绍下如何让设备更简便智能的说话。API(应用程序编程接口)提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力。形象一点API可以理解为一个管道,通过该管道,可以传入约定好的命令,来获得摄像头的反馈,