从原理上分类:
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报文()。
2、hello报文源地址为接口IP地址,目的地址为224.0.0.5(组播地址),在P2P链路、广播型链路(Broadcast)每隔10s周期发送,邻居失效时间默认为hello间隔的4倍(40s)即40s没有收到邻居的hello报文,即认为邻居失效,断开邻居关系,重新进行路由计算;在NBMA,P2MP每隔30s周期发送。
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取值要一致。以上条件是任何情况下都有满足的建立邻居关系的条件。
Down:可以发送hello报文,不携带邻居的route id,路由器没有发现任何邻居,即没有收到任何邻居的hello包。
init:收到了邻居的hello包,但是邻居列表中没有发现自己(本路由器的IP),由Down状态转换为init状态(第一次握手)。
2-way:接受到的hello报文中含有我自己的router id(邻居发现了我),将状态由init转换为2-way。
3次握手可靠的建立邻居
OSPF可靠性机制:由于OSPF是被IP协议直接封装的路由协议,IP协议不具备可靠性机制,OSPF需要自己建立一套可靠性机制,保障邻居成功同步。
1、3次握手建立双向邻居关系(2-way)。
2、DD报文序列号 1机制,隐式确认。(包文级别确认)
3、LSAck对LSA的确认,不是对LSU的确认。(信息级别确认)
进入2-way状态后,开始进行lsdb同步
exstart(预启动):发送dd报文进行主、从选举,Router ID大的成为主路由器(master),小的成为从路由器(slave),此时DD报文为不携带LS摘要信息(DD报文两种情况:携带/不携带LS摘要信息。)
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新旧程度一样)。
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,则认为是相同的。
主、从路由器通过DD报文交互LSA摘要信息
DD 报文:LSDB中所有LSA的摘要信息(Type、LS id、adv rtr、ls age、len、options、seq、chksum)。
LSR:携带LSA的标识信息。
LSU:携带LSA的头部以及链路状态。
LSACK:携带LSA的摘要信息。
DD实现LSDB对账,按需同步LSA,提高邻居收敛速度,节省设备资源。
hello、DD、LSR、LSU、LSACK具有相同的OSPF协议报文头部。
LSA摘要信息
OSPF的度量方式
某接口cost=参考带宽/实际带宽,取整数部分,小于1时,结果按1计算
loopback接口cost 默认为0.
,