OSPF邻居建立

路由协议的分类

从工作原理上分类:

1、DV 距离矢量路由协议: RIPv1 RIPv2 IGRP(思科私有 )

2 LS 链路状态路由协议: OSPFv2(IPv4) OSPFv3(IPv6) ISIS

3 路径矢量路由协议: BGP

从工作范围来分类:

IGP 内部网关路由协议: 实现AS内部互联互通的路由协议

EGP 外部网关路由协议: 实现AS之间互联互通的路由协议

AS:自治系统,技术上定义:运行相同的IGP协议的设备所组成的网络

链路状态路由协议OSPF

路由信息的传递与路由计算分离。

基于SPF算法。

以“累计链路开销(我到邻居出向累加)”作为选中参考值。

Router ID

用于在自治系统中唯一标识一台运行OSPF的路由器,每台运行OSPF的路由器都有一个Router ID。我们OSPF建立邻居的第二步是进行LSDB的同步,即链路信息的同步,这个时候如果运行OSPF的设备没有一个Router ID,根本不知道是谁产生了什么样的路由信息,OSPF协议的运行都会出现问题。如果运行OSPF的路由设备没有手动配置Router ID,默认用设备上配置的第一个IP为全局Router ID,当然也可以在OSPF进程下配置RouterID,并且优先级是最高的。我们通常使用loopback接口的IP作为OSPF进程或全局的Router ID。

发现并建立邻居 - Hello报文

邻居发现:自动发现邻居路由器。

邻居建立:完成Hello报文中的参数协商,建立邻居关系。

邻居保持:完成邻居建立后,周期性的发送Hello报文,通过Keeplive机制,进行维护邻居关系。

hello报文是怎么发的?

1、凡是加入到OSPF协议的物理接口/Tunnel接口,主动发送Hello报文。

2、Hello报文的源地址为接口的IP地址,目的地址为224.0.0.5(分配给OSPF协议使用的组播地址)。

在P2P链路,Broadcast(广播)链路每隔10s周期发送,邻居失效时间默认为4倍的Hello时间,即40s没收到邻居的Hello报文就认为邻居失效,断开邻居关系,并进行重新的路由计算。

在NBMA链路,P2MP链路每隔30s周期发送,邻居失效时间默认为4倍的Hello时间,即120s没收到邻居的Hello报文就认为邻居失效,断开邻居关系,并进行重新的路由计算。

Hello报文中的参数

Hello报文头部

7a4f0e32a650468a8955aec43719e89a.png

 

Hello报文本身

a85e4174f7fd4eedb41dba95f10ad94a.png

 

Hello包中影响邻居关系的因素

1、Router ID不能冲突。

2、area ID要相同。

3、认证的类型和认证的密码要一样。

4、Hello间隔要一致。

5、daed间隔要一致。

6、N bit和E bit 取值要一致。

OSPF邻居建立过程

Down状态,接口加入了OSPF,可以发送Hell报文,但不携带邻居的Router ID。

Init状态,收到了邻居的Hello包,但是Hello包中的Router ID 没有自己,单向发现,Init状态会进行参数的协商,如果协商成功,那么就会在回Hello报文的时候带上邻居的Router ID。

two-way状态,邻居发来 Hello包中携带自己的Router ID,当双方都进入到two-way状态后,这个时候邻居的建立已经完成了,然后就是第二步同步链路状态数据库。

这三次握手建立双向邻居关系,可以避免单边邻居的建立。

exstart(预启动)状态,在two-way状态后会自动变成exstart状态,发送不携带LS(链路状态)摘要信息的DD报文,进行主从选择,Router ID大的为主,小的为从。DD报文有2种情况: 1、不携带LS摘要信息的DD报文。2、携带LS摘要信息的DD报文。

d717d8ee1e58479c8d345602e51235d7.png

 

exchange状态,主从选举完成后进入的状态,这个状态开始将自身的LSDB中所有的LSA信息的摘要通过DD报文进行交换,实现LSDB同步。LSA的摘要,也称为LSA的头部信息,LSA头部携带的字段如下:

4be70a8d1ab74ed0b36a9cd6b214ae00.png

 

摘要信息的用途:

1、唯一的标识一条LSA 。由type、ls id、adv rtr,三个参数唯一的标识一条LSA。

2、用于判断LSA的新旧。由seq,chksum,ls age,来判断新旧。

所谓LSDB的同步,当两条LSA不一样,就会相互交换LSA,一样就会比较新旧程度。就是邻居之间最终拥有相同的LSA的信息,以及这些LSA的新旧。

5d8e79cb678f489499efee1507138886.png

 

如果两条LSA相同且它们的新旧程度也相同,那么这个时候就不会再交换了,加快了网络的收敛,如果没有DD报文的存在,那么即使是相同它们也会交换,如果在低速链路中两台路由器运行OSPF,这个时候有1000条LSA它们要进行同步,其中有999条相同,只有一条是有需要同步的,如果没有DD报文,这样就会产生很多无意义的交换。

d2ac11b391994de8b199ab0253c44632.png

 

通过不带摘要信息的DD报文选举出主从后,其实选举出主从,只是为了确认序列号的变动,

从路由器发出的携带摘要信息的DD报文里面带的主路由器的序列号,主发出的DD报文是序列号是自身的序列号+1,当双方都发完了DD报文,最后接收的一台路由器,要发送一个摘要信息为空的DD报文表示确认。

c1af24b62ec24c24900ee15b0ffa6e66.png 

 

LSR报文,用来请求我没有LSA,请求那些在上一个状态通过DD报文发现的,并且在本地LSDB没有的链路状态信息。报文中只携带标识不携带新旧信息。为了提高工作效率,在DD报文发送的过程中也可以发。

LSU报文,将邻居需要的LSA的完整信息发送给邻居。

LSAck报文,用于确认。

Loading状态,exchange状态后,会变成此状态,这个状态会发送LSR请求。

Full(邻接)状态,当邻居回了一条LSU时,此时我需要的LSA都有了,LSDB同步了,就会进入Full状态。这个状态还会发送LSAck确认。

OSPF邻居建立的可靠性体现:

由于OSPF是被IP协议直接封装的路由协议,IP协议不具备可靠性机制。

OSPF才需要自己建立一套可靠地性机制,保障邻居能成功同步。

1、三次握手,形成two-way。

2、DD报文序列号+1机制,隐式确认。

3、LSAck 对LSA的确认,不是对LSU的确认。

OSPF报文的格式

OSPF报文由IP报文封装,所有的OSPF报文都拥有相同的头部报文,然后OSPF的数据报文由报文头部的类型决定。

fd123a91d20643fd9940e28222124503.png

 

OSPF开销计算

运行OSPF的路由设备怎么算去往目的网段的路径开销呢?很简单,我到邻居出向累加,如果目标网段是loopback接口,要加上LOOPBACK接口的开销。

开销怎么计算

参考带宽/实际带宽。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值