路由协议的分类:

从原理上分类:

1、DV距离矢量协议,RIPV1、RIPV2;

2、链路状态协议:ospfV2(ipv4)、ospf V3(IPV6)、ISIS.

3、路径矢量路由协议:BGP

4、私有类型:EIGRP(混合型路由协议)

从工作范围分:

IGP:内部网关协议(实现AS内部互联互通的路由协议) RIP、IGRP、EIGRP、OSPF、ISIS

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

AS自治系统:运行相同的IGP协议的设备组成的网络。

OSPF特点:

1、路由信息传递与路由计算分离;

2、基于SPF算法;

3、以“累计链路开销”作为选路参考值。

OSPF工作的三部曲:

1、建立邻居关系,所有一切的开始;

2、进行LSDB同步,即链路信息的同步;

3、运行SPF算法,进行路由计算。

OSPF协议的router ID 确定:

1、默认使用路由器的全局route id作为OSPF协议的router ID;(dis route ID)

2、默认情况设备上配置的第一个IP地址作为全局router id;

3、允许管理员手动配置全局route ID(reset ospf process,重新配置全局router id后,重启相关协议才能更新协议router id)。

4、允许管理员手动配置OSPF的router id ,并优先级最高(ospf 1 router ID 8.8.8.8),项目上通常使用loopback接口的地址作为协议的router ID,方便望址思意,方便网络管理。

协议router id 的变更生效,需要重启协议进程,导致邻居关系中断,网络产生震荡,一般不会频繁更改router id。

发现并建立邻居关系-Hello报文

hello报文的作用:

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

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

邻居保持:通过keepalive机制,检测邻居运行状态。

hello 报文怎么发的?

1、凡是加入到ospf协议的接口,都会主动发送hello报文()。

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(1)

2、hello报文源地址为接口IP地址,目的地址为224.0.0.5(组播地址),在P2P链路、广播型链路(Broadcast)每隔10s周期发送,邻居失效时间默认为hello间隔的4倍(40s)即40s没有收到邻居的hello报文,即认为邻居失效,断开邻居关系,重新进行路由计算;在NBMA,P2MP每隔30s周期发送。

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(2)

hello报文中携带的主要参数:

头部携带信息:

version (ospf协议的版本)、

message type(类型1、hello、2、dd、3、lsr、4、lsu、5、lsack)

source ospf router id、

area id(发送hello报文接口所属的区域)、

auth type(0代表空认证即无认证、1代表明文认证、2代表MD5认证)、

auth data(明文密码或者密文MD5值)。

hello报文本身携带信息:

network mask(发送hello报文接口的子网掩码)、

hello interval(发送hello的间隔)、

options(N bit、E bit)、

router -priority(路由器优先级,默认1,用于选举DR、BDR)、

dead interval(邻居失效时间)、

DR(链路上DR接口的IP地址)、

BDR(链路上BDR接口的IP地址)。若链路是P2P或者P2MP则DR、BDR取值为0.0.0.0,即不进行选举。

hello包中影响邻居关系的因素:

1、router id 不能冲突;

2、区域ID要相同。

3、认证类型、认证数据要匹配。

3、hell间隔、失效间隔要一直。

4、N bit E bit取值要一致。以上条件是任何情况下都有满足的建立邻居关系的条件。

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(3)

Down:可以发送hello报文,不携带邻居的route id,路由器没有发现任何邻居,即没有收到任何邻居的hello包。

init:收到了邻居的hello包,但是邻居列表中没有发现自己(本路由器的IP),由Down状态转换为init状态(第一次握手)。

2-way:接受到的hello报文中含有我自己的router id(邻居发现了我),将状态由init转换为2-way。

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(4)

3次握手可靠的建立邻居

OSPF可靠性机制:

由于OSPF是被IP协议直接封装的路由协议,IP协议不具备可靠性机制,OSPF需要自己建立一套可靠性机制,保障邻居成功同步。

1、3次握手建立双向邻居关系(2-way)。

2、DD报文序列号 1机制,隐式确认。(包文级别确认)

3、LSAck对LSA的确认,不是对LSU的确认。(信息级别确认)

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(5)

进入2-way状态后,开始进行lsdb同步

exstart(预启动):发送dd报文进行主、从选举,Router ID大的成为主路由器(master),小的成为从路由器(slave),此时DD报文为不携带LS摘要信息(DD报文两种情况:携带/不携带LS摘要信息。)

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(6)

DD报文中 I M MS

I=0 不是第一次发送DD报文,1则是第一次发送DD报文。

M=0 这是最后一个DD报文,发完了,1则是还有DD报文。

MS=1代表我是master,0代表我是slave,从路由器。

交换不携带摘要信息的DD报文后,完成主从选举,进入exchange状态:

将自身LSDB中所有的LSA信息的摘要通过DD报文进行交换,实现LSDB同步(邻居之间最终拥有相同的lsa信息,且LSA新旧程度一样)。

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(7)

LSA 摘要(头部信息):Type、LS id、adv rtr、ls age、len、options、seq、chksum

LSA摘要信息的用途:

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

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

type(描述LSA的种类):

LS ID (链路状态ID):LSA的名字,取值由类型决定,

adv rtr :产生这条LSA的路由器的router id。

seq :序列号越大的LSA越新,起始值0X80000001,最大值0x7FFFFFFF。

chksum:若序列号相同,则校验和越大越新。若chksum相同,判断LS age 是否为3600s,等于3600s的最新,若都不等于3600s,则判断ls age 差值,若大于900s,则ls age小的最新,若小于900s,则认为是相同的。

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(8)

主、从路由器通过DD报文交互LSA摘要信息

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(9)

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(10)

DD 报文:LSDB中所有LSA的摘要信息(Type、LS id、adv rtr、ls age、len、options、seq、chksum)。

LSR:携带LSA的标识信息。

LSU:携带LSA的头部以及链路状态。

LSACK:携带LSA的摘要信息。

DD实现LSDB对账,按需同步LSA,提高邻居收敛速度,节省设备资源。

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(11)

hello、DD、LSR、LSU、LSACK具有相同的OSPF协议报文头部。

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(12)

LSA摘要信息

OSPF的度量方式

某接口cost=参考带宽/实际带宽,取整数部分,小于1时,结果按1计算

ospf邻居表和路由表图文 OSPF邻居邻接建立过程(13)

loopback接口cost 默认为0.

,