zoukankan      html  css  js  c++  java
  • OSPF协议

      OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。

    RID

      RID(Router ID)为路由器ID标识,作为识别路由器的身份凭证,区域内的RID必须唯一,冲突会造成邻居关系无法形成。
    OFPS中RID默认为自动生成,遵循自动选举规则:

    (1)逻辑口优先,数字大优先

    (2)物理口数字大优先

      RID一旦选取出来就是一个稳定的状态,重新配置会自动选取RID,实际应用中不推荐使用自动选取。


    手动指定RID一般指定为loopback0的地址,设置方法如下: Router-id 1.1.1.1

    DR和BDR

    DR为指定路由器,BDR为备份指定路由器,DR和BDR的存在是为了减轻路由器负担,减少邻接关系

    区域中路由器共分三个角色:DR(一个)、BDR(一个)、DRother(一个或多个)


    他们之间的关系为:

    DR和BDR:邻接

    DR/BDR和DRother:邻接

    DRother和DRohter:邻居

    选举DR、BDR规则:

    (1)比较接口优先级(大),默认为1,范围0-255

    (2)比较RID(大)

    若将接口优先级设为0,则不参与DR/BDR的选举,只能成为DRohter

    DR一旦选举出来也是一个稳定状态

    工作原理

      OSPF的简单说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、四张表。

    五种报文

    Hello报文:建立并维护邻居关系。

    DBD报文(Database Description):发送链路状态头部信息。

    LSR报文(Link-state Request):把从DBD中找出需要的链路状态头部信息传给邻居,请求完整信息。

    LSU报文(Link-state Updata):将LSR请求的头部信息对应的完整信息发给邻居。

    LSACK(Link-state Acknowledge):收到LSU报文后确认该报文。

    三个阶段

    邻居发现:通过发送Hello报文形成邻居关系。

    路由通告:邻居间发送链路状态信息形成邻接关系。

    路由计算:根据最短路径算法算出路由表。

    四张表

    邻居表:主要记录形成邻居关系路由器。

    链路状态数据库:记录链路状态信息。

    OSPF路由表:通过链路状态数据库得出。

    全局路由表:OSPF路由与其他比较得出。

    工作流程

      OSPF协议启动的第一步就是先要确定邻居关系,才能有之后的路由交换。邻居关系建立遵循四要素:

    (1)RId不能冲突

    (2)在hello/dead时间间隔内——hello:10 dead:40s

    (3)区域号两端要一致

    (4)认证要一致



      当两个路由器通过直连线连接时,一个路由器会先发出一个hello包,hello包中包含自身路由id(RID)和一些简单信息,如下图所示

      RouterA先发送一个hello包报告自身RID,RouterB接收到A发来的hello包后返回一个附带自身RID的hello包,A接收到后,两路由器便建立起了邻居关系。

      两个路由器建立起邻居关系后,便由DRBDR选举规则选举出DR和BDR,或手动设定出DR和BDR。有了DR后边开始进行路由信息的交换。

      图中ip为172.16.5.3的路由器被选举为DR,开始交换操作的DBD报文由DB统一分发给其他路由器,其他路由器接收到DBD报文后与自身链路状态数据库进行比对,并发送自身的DBD报文信息。

      双方都返回LSAck后边开始作所需路由条目信息的请求和响应,最后完成交换工作。

      这是两路由器间的数据交互流程,当一个路由器接收到LSU包时,具体的处理机制又是如何的?


    如下图所示

      一个路由器接收到LSU后,会先查看此LSU包携带的信息是否存在于自己的路由表里,如果不存在,将其添加到自己的链路状态数据库中,再向发送LSU的路由器返回LSAck,并通过泛洪的方式告知自己的下级路由。

      当路由器发现此LSU已存在,并且于自己存储的信息一致时,会对此LSU包进行丢弃,且不做任何回复。若此LSU已存在但信息不一致,若此信息较信,会重复上段所述步骤进行信息更新,若此LSU包信息比自身存储信息要旧,则会在全网发送较信的LSU信息,实现全网同步。

  • 相关阅读:
    Maven插件
    Maven 构建生命周期
    Maven POM
    JMeter录制登录测试
    IntelliJ IDEA官方下载地址
    Eplise快捷键
    Eclipse-maven相关配置
    vs2019添加引用出错:对COM组件的调用返回了错误HRESULT E_FAIL
    Java学习--多线程(1)
    SQL Server查询重复数据
  • 原文地址:https://www.cnblogs.com/aqiao/p/13259113.html
Copyright © 2011-2022 走看看