jjzjj

HCIA学习笔记三十四:链路状态路由协议OSPF

缥缈的尘埃 2023-03-28 原文

一、开放式最短路径优先(OSPF)

• 无环路

• 收敛快

• 扩展性好

• 支持认证

二、OSPF原理介绍

• LSA:Link-State Advertisement(链路状态通告),是链接状态协议使用的一个分组,它包括有关邻居和通道成本的信息。LSA被路由器接收用于维护它们的路由选择表。

• LSDB:Link State DataBase(链路状态数据库),通过路由器间的路由信息交换,自治系统内部可以达到信息同步,即LSDB描述的网络拓扑同步。

三、OSPF协议介绍

• OSPF(开放最短路径优先)属于IGP内部网关路由协议,协议基于链路状态算法。

• OSPF直接运行于IP协议之上,使用IP协议号89。

四、OSPF报文类型

• Hello:Hello包,是用来建立邻居关系的,邻居关系建立好之后,还会周期性地发送Hello包来维护邻居关系。

• Database Description:数据库描述包,包含的是LSA的摘要信息。

• Link-State Request:链路状态请求包,请求未知的LSA。

• Link-State Update:链路状态更新包。比如说我这台路由器中,发现邻居的数据库中有一条LSA我没有,我发一个请求包给它获取未知的LSA,接下来邻居会把LSA放到更新包(LSU)里面传给我。

• Link-State Acknowledgment:链路状态确认包。如果我收到邻居的更新包,那我需要给它一个确认。

 >>>Hello不需要确认;Database Description通过DBD确认;Link-State Request通过Link-State Update确认;Link-State Update通过Link-State Acknowledgment确认;

五、邻居状态变换

• Down状态:当前的路由器运行了OSPF,端口刚起来的一瞬间的状态,还没有收到Hello包时的状态。

• Attempt状态:只存在于NBMA网络中。当一台设备试图通过Hello报文去联系自己的邻居,但是没有收到回应报文时,就会将它的邻居关系设置为Attempt状态。

• Init状态:一旦发送Hello包出去,就会进入初始状态。

• 2-Way状态:收到邻居的Hello包了,然后在邻居的Hello包当中看到自己的Router ID了,则会进入2-Way状态,双方建立邻居关系。2-Way状态会选DR(指定路由器)和BDR(备份指定路由器),怎么来选?先比较所有路由器的优先级,谁的优先级大,谁就是DR。然后再看RID,谁的优先级大,谁就是DR,次大的就是BDR,其它就是DROTHER。

六、邻居(Neighbor)和邻接(Adjacency)

七、查看邻居状态

八、数据库同步

 

• ExStart状态:2-Way状态完成之后,会进入到下一个状态叫ExStart(准启动状态)。在这个状态,它会检测MTU(Maximum Transmission Unit,最大传输单元)是否会一致?如果不一样的话,会一直卡在ExStart状态。然后接下来,它会发送FirstDBD,选取主从。主从怎么选?比较所有路由器的RID,谁的RID大,谁就是主,谁的RID小,谁就是从。

• Exchange状态:主从选取之后,会进入到Exchange状态,即交互状态。在Exchange状态,会交互DBD了。在这个状态下面,是由主路由器先发送DBD包给从路由器,然后从路由器收到主路由器的DBD包的时候,再给它回应一个DBD包。

九、建立完全邻接关系

• Loading状态:DBD报文交换完成即Exchange done,此时状态为Loading。

• Full状态:LSR重传列表为空,此时状态为Full,表明邻接关系建立。

十、查看邻接关系

十一、DR和BDR

• 10.1.1.4的Router ID最大,所以它是DR;10.1.1.3的Router ID次大,所以它是BDR;10.1.1.1和10.1.1.2都是DROTHER。

• DROTHER路由器只会跟DR和BDR建立邻接关系,所以10.1.1.1和10.1.1.2建立的是邻居关系。

十二、路由器分类

• 区域内路由器IR(Internal Routers):该类路由器的所有接口都属于同一个OSPF区域。

• 区域边界路由器ABR(Area Border Routers):该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域。

• 骨干路由器BR(Backbone Routers):至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。

• 自治系统边界路由器ASBR(AS Boundary Routers):位于OSPF自治系统和非OSPF网络之间。

有关HCIA学习笔记三十四:链路状态路由协议OSPF的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  3. ruby-on-rails - 跳过状态机方法的所有验证 - 2

    当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested

  4. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  5. ruby - 字符串文字中的转义状态作为 `String#tr` 的参数 - 2

    对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一

  6. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

  7. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  8. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  9. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  10. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

随机推荐