` ospf(一) | 听云轩

ospf(一)

基础概念

  • OSPF(开放最短路径优先)是一种链路状态路由协议,无路由循环,属于IGP。

  • OSPF协议包直接封装于ip,协议号为89

  • OSPF使用的组播地址:
    所有OSPF路由器——224.0.0.5;DR、BDR——224.0.0.6

  • 管理距离:110

  • Router-ID:在一个OSPF域中,唯一地标识一台OSPF路由器

    在未手工指定的情况下,如果本地有激活的look back接口,则取look back接口中IP最大值,如果没有LP接口,则取激活的物理接口IP 中的最大值

    为了提高路由器的RID的稳定性和网络的稳定性,建议手动的设置路由器的Router-ID(在OSPF的进程下修改)

    项目实施中,一般是建立look back口,并且手工指定look back口地址为router-id

  • DR、BDR

    • DR的作用:多路访问中为了减少邻接关系和LSA的泛洪,采用DR机制,BDR提供了备份

    • MA网络上的所有路由器均与DR、BDR建立邻居关系

    • 选举比较顺序:
      接口优先级数字越大越优先(优先级为0不能参与DR的选举,此时处于two-way状态)

Awc3Fg.png

AwcGWj.png

  • Router-ID越大越好

  • 非抢占

  • 通过控制接口优先级是控制DR选举的好办法

  • DR的选举是基于接口的,如果说某个路由器是DR,这种说法是错误的

  • 在实际的网络环境中,可能会将接口的OSPF网络类型进行更改,已跳过DR、BDR的选举过程,加快OSPF邻居的建立过程

  • COST值=参考带宽(10的8次方)/接口带宽

接口带宽为接口逻辑带宽,可以使用bandwith命令调整,主要用于路由计算,而不是接口物理带宽,但一般情况:接口逻辑带宽=接口物理带宽

手工修改的方法:

AwchTO.png

建立邻居的条件

  • 相邻两台路由器运行OSPF协议
  • 两台路由器直接相连
  • 再同一自治系统内
  • HELLO/DEAD时间一致
  • 区域ID一致
  • 认证密码一样
  • MTU值一致
  • 网络类型一致
  • 链路两端接口掩码一致

建立邻居的过程

Awgkn0.png

在初始的情况下,A、B在某个接口激活了OSPF后都会在这个接口上发组播的OSPF hello包,目的是发现OSPF邻居。hello包里,有个active neighbor字段,用来存储路由器在某个OSPF接口上发现的邻居。

当OSPF路由器(B)在某个OSPF接口上收到邻居发来的HELLO包,他会记录下A,并且将A 的状态记为init,然后将A的Router-ID存储在自己将要发送 的hello包里的active neighbor字段发送出去,这样A就会收到这个hello包,并且在这个包里面找到自己的router-id,那么此时A就会以为自己与B已经建立了关系,因此A会将B 的邻居状态置为 two-way。同时,A也会继续发送hello包,将B的router-id放在active neighbor字段里面,而B收到这个hello包并看见了自己的router-id后,B也会将A的状态two-way,此时到达第一个稳态。

Awjivt.png

接下来A、B会进入ex-start状态并开始进行master-slave的协商,目的是为了决定在后面的LSA交互中,谁来决定DD报文的序列号,而router-id大的那个会成为master,这个协商过程由不含LSA的DBD包来完成。当OSPF接口收到一个DBD包并且其中的I为0的时候,此时他就知道ex-start状态已经过去了,于是将邻居的状态置为ex-change,并存储对端发送过来的DBD包所包含的LSA信息,同时他也要发送自己OSPF DATABASE的摘要给邻居。

AwjeUg.png

当A收到一个M位为0的DBD包时,他就知道这个是邻居发来的最后一个DBD包,此时如果A发现这些DBD包中有自己感兴趣的LSA信息时,它会将B置为loading状态,并且发送LSR报文去请求更详细的报文信息。当B收到LSR后,会以LSU包含所需信息回复。收到LSU后,A会将有关信息存储在自己的LSDB中,并且发送一个LSACK确认,当所有网络上的LSA全部的到更新后,它会将邻居置为FULL。

  • 关于各状态说明

    • down:尚未收到邻居的hello,或者开始发送hello给邻居
    • attempt:尝试发送hello信息给邻居,但还没有收到任何信息(仅仅在NBMA模式下有效)
    • INIT:收到了来自邻居的hello,但是邻居的hello中没有本路由的ID(说明邻居还没有收到来自本地发送的hello)
    • two-way:双向邻居建立(在hello包中可以看见自己的router-id),如果是多点访问网络,本阶段同时完成DR/BDR的选举
    • exstart:DD报文交互的准备阶段,协商master和slave关系
    • exchange:DD报文的交互阶段
    • loading:通过LSR和LSU报文的交互获取尚未发现的详细的链路状态信息
    • FULL:路由器之间完成了数据库的同步
------ 本文结束 ------
您的支持将鼓励我继续创作