15-OSPF工作原理

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

OSPF(Open Shortest Pah First)协议是IEEE定义的一种基于链路状态的内部网关路由协议.应用在自治系统内部,一种链路状态路由协议,使用最短路径优先算法计算路由

OSPF数据报文封装在IP报文内部,协议号为89,使用单播或组播发送(在广播型网络中,所有路由器都以224.0.0.5的地址发送hello包,用来维持邻居关系,非DR/BDR路由都以224.0.0.6的地址发送lsa更新,而只有DR/BDR路由监听这个地址,反过来,DR路由使用224.0.0.5来发送更新到非DR路由

OSPF特点:适合范围广,快速收敛,无自环、区域划分、支持验证(支持两种认证:区域认证和接口认证)、组播发送  

Rip是一种基于距离矢量算法的路由协议,存在着收敛慢,容易产生路由环路,可扩展性差等问题

二、OSPF原理

1、OSPF原理

  寻找邻居、建立邻接关系、链路状态信息传递、计算路由

2、OSPF五种报文类型(报文封装在IP报文中,协议号为89)

  Hello报文: //邻居发现:Hello报文用来发现和维持OSPF邻居关系  ,周期发送10s ,失效时间40s

  DD(Database Description)报文 //描述本地LSDB(Link State DatabASe)的摘要信息,用于两台设备进行数据库同步

  LSR(LSA Request)报文 //用于向对方请求所需的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文

  LSU(LSA Update)报文 //用于向对方发送其所需要的LSA

  LSACK (Link State Acknowledgment)报文 //用来对收到的LSA进行确认

3、Hello包 Message Type

  • Hello报文type1
  • 数据库描述数据包type2
  • 链路状态请求报文type3
  • 链路状态更新报文type4
  • 链路状态确认报文type5

4、OSPF建立邻居过程分析

 ①建立邻居关系:down ——>init ——>two-way ----->

 在状态init,路由器会互相发送hello包,hello包重要字段如下:

  • 始发路由器的router-id
  • 始发路由器接口的area-id
  • 始发路由器接口的地址掩码
  • 始发路由器接口的authentication type和authentication message
  • 始发路由器接口的hello-interval
  • 始发路由器接口的router dead-interval
  • 路由器优先级
  • 指定DR和BDR
  • 标识可选性能的5个标志位
  • 始发路由器的所有有效neighbor router-id(始发路由器接收到了它们的hello报文)

 

开启ospf进程,默认会选择接口IP地址当Router ID 需要手动修改 [R1]ospf router-id 1.1.1.1 修改之后需要重新系统ospf进程<R1>reset ospf process 

初始发送Hello包Options E置1 表示支持外部路由功能,允许外部路由进入

以两台路由器之间建立邻居关系为例

1、R1发送hello报文(组播或者单播,链路层类型来定),neighbor字段为空 组播地址:224.0.0.5

2、R2收到hello报文,为R1建立一个邻居数据结构,并把R1的邻居状态置为init,然后向R1发送hello报文,neighbor字段中包含R1的rougerID,表示自己收到了R1的hello报文。

3、R1收到R2的hello报文之后,为R2建立一个邻居数据结构,并把邻居状态置为2way,然后向R2发送hello报文,报文的neighbor字段中包含R2的routerID。

4、R2收到R1的hello报文后,把R1的邻居状态置为2way

  至此,邻居关系就建立起来了,邻居路由器之间会按时发送hello报文进行保活,如果hello报文超时,那么该路由器就会宣告这里邻居失效。

  所有路由器之间都达到2way状态后,它们会根据网络类型判断是否需要选举DR和BDR,如果需要的话就开始选举DR和BDR

  DR/BDR选举作用:作用:DR可以减少广播型网络中的邻接关系的数量,减少邻接数目,减小链路消耗 

  MA网络(多路访问网络):

  (1)BMA(支持广播的多路访问网络)----LAN
  (2)NBMA(不支持广播的多路访问网络)----帧中继

  1)、DR(designated router)即指定路由,其负责在MA网络建立和维护邻接关系并负责LSA的同步。

 

  2)、DR与其他所有的路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息,这样就大大减少了MA网络中的邻接关系数据 及交换链路状态信息消耗的资源。

 

  3)、DR一旦出现故障,其与其他路由器之间的邻接关系将全部失效,链路状态数据库也无法同步,此时就需要重新选举DR、再与非DR路由器建立邻接关系,完成LSA的同步,为了规避单点故障风险,通过选举备份指定路由器BDR,在DR失效时快速接管DR的工作

 

           选举规则

           1)比较优先级,越大越优(默认为1,最大255,0表示不参加选举)

           2)比较Router-ID,越大越优

 ②建立各自拓扑表:exstart ——>exchange ----->

  在状态exstart通过发送hello包进行主从关系选举(master/slave)

  •  为了确定谁在exchange状态先发送DBD包
  •  主从关系选举是通过比较两台路由器的Router ID大小,
  •  Router ID大的为master路由器,由master路由器先交互DBD包 ,同时Slave 以Masters序列号为起始位发送DBD包,3个标记都为0

  主从关系选举后,进入状态exchange ,在此状态通过交互DBD包,建立各自的拓扑

  在DBD包中有3个标记位用来管理邻接关系的建立过程:

  • I位    或称为初始位(initial bit) 用于ex-start协商主从关系的初始化协商的DBD包,该位置1

  • M位    或称为后继位(More bit) 如果这不是OSPFrouter发送的最后一个DBD,该位置1 说明后续还有DD报文待发送

  • MS位   或称为主/从位(Master/slave bit) 如果始发路由器是Master,则该位置1

 

 缺省情况第一个DD报文3个标记位全部置1

    ③建立邻接关系: loading ——>full

   建立各自的拓扑表后,进入状态loading,请求对方路由信息,

  • 如图左边路由器,发送LSR包请求172.16.6.0/24的路由信息
  • 右边路由器收到LSR包后,会回复LSU包,来告知172.16.6.0/24的路由信息
  • 左边路由器收到LSU包后,会回复LSACK包,用于对LSU包进行可靠确认
  • 交互完路由信息,达到full状态,路由器之间建立邻接关系  达到LSDB的同步

Router ID

数据库同步

路由器使用DD报文来进行主从路由器的选举和数据库摘要信息的交互

DD报文包含LSA的头部信息,用来描述LSDB的摘要信息

建立完全邻接关系

 

LSR用于向对方请求所需的LSA

LSU用于向对方发送其所需要的LSA

LSACK用于向对方发送收到LSA的确认

5、OSPF配置

6、OSPF支持的网络类型

缺省情况下,OSPF认为以太网的网络类型是广播类型

PPP、HDLC的网络类型是点到点类型

 

 缺省情况下,OSPF认为帧中继,ATM的网络类型是NBMA

7、OPSF区域

  • 每个区域都维护一个独立的LSDB
  • Area 0 是骨干区域,其他区域都必须与此区域相连

ABR:区域边界路由器

ASBR:AS区域边界路由器

8、OSPF开销

 

 OSPF的开销计算公式为带宽参考值/带宽

可以通过bandwidth-reference命令来设置带宽参考值

OSPF基于接口带宽计算开销,计算公式为:接口开销=带宽参考值-带宽,带宽参考值可配置,缺省为100Mbit/s

posted @ 2020-04-14 17:03  龙门、三少  阅读(3382)  评论(0编辑  收藏  举报