CCNP4:OSPF的【数据包、状态机、工作过程、接口网络类型、建立邻接关系的条件】 2019.07.26补充

CCNP4:OSPF的【数据包、状态机、工作过程、接口网络类型、建立邻接关系的条件】

OSPF:开放式最短路径最短优先协议

OSPF开放式最短路径最短优先协议
无类别链路状态路由协议。
组播更新,组播更新地址224.0.0.5、224.0.0.6

点到点网络中:
使用224.0.0.5进行更新
MA网络中:
DR、BDR使用224.0.0.5进行发送,使用224.0.0.6进行监听
DRother使用224.0.0.6进行发送,使用224.0.0.5进行监听
管理距离110
存在触发更新,周期更新(30min)
跨层封装至3层,协议号89。
基于拓扑型协议,选择路径佳
默认值:hello time 10s,dead time 40s
NBMA 网络:hello time 30s,dead time 120s

OSPF基于LSA更新,这就导致更新量很大。由于它需要为中大型网络服务,因此它需要结构化部署(区域划分、地址规划)

结构化部署:
(1)区域划分(在一个单区域内部传拓扑,两个拓扑之间传路由。两个区域拓扑计算所得结果进行共享,也就是路由)
(2)地址规划

一、数据包:

数据包全名特点
HelloHello包邻居的发现、建立、保活
DBD数据库描述包数据库目录信息
LSR链路状态请求用于请求未知的LSA
LSU链路状态更新携带各种LSA
LSack链路状态确认用于确认LSR、LSU

OSPF报头格式:上面的包会被放在IP报头之后的OSPF Packet Types 这部分。
在这里插入图片描述

OSPF Packet注解
Version Number版本号2(IPv4)、3(IPv6)
Type编号代表包的类型:在这里插入图片描述
Packet Length包长度
Router ID每台设备唯一的名字
Area ID区域ID
Check-sum校验和
Authentication-Type认证类型(空、明文、密文)
Authentication携带明文或密文密码
Data携带Hello、DBD、LSR、LSU或LSack的数据

1、Hello包:

在这里插入图片描述
Hello包所独有的是:

Data注解
Hello and dead intervals生成、死亡时间
Neighbors当图中的A发出Hello包的时候,包中就会携带BCED的RouterID
Router priority路由器的优先级
DR IP addressDR的IP地址
BDR IP addressBDR的IP地址
Stub area flag区域末梢标记

我们观察到Hello包中有几项数据是被标记为*的,这表明邻居间Hello包中这4个参数完成一致,否则无法建立邻居关系。
①Hello、dead time
②区域ID
③认证字段
④末梢区域标记

2、DBD包:

R1#debug ip ospf adj	   查看OSPF建邻过程
R1#clear ip ospf process   重启ospf进程,可以查看建邻过程
R1#un all                  关闭Debug

它出现在exstart、exchange均出现,exstart状态时,没有携带目录信息,仅用于主从关系选举。
(1) DBD包中携带MTU,强制要求邻接间MTU值必须一致。否则将卡在 exstart、exchange状态。如果不一致,导致数据包被多次的分段,占用的资源将会更多。

(2) 在exstart状态的DBD时,使用的隐形确认(基于序列号),该包基于序列号,使用的DBD序号来确认主的信息。
打开OSPF重建邻居的Debug,然后重建邻居关系,之后关闭Debug。下图就是紧邻过程的部分截取,通过使用主的序列号用来确认主的信息。
在这里插入图片描述

(3)标记位:
下图是我抓取的OSPF的一个DBD包:
在这里插入图片描述

标记位注解
I为1标识本地发出的第一个DBD包
M为0标识本地发出的最后一个DBD包
MS为1标识主,为0标识从

在这里插入图片描述
一般情况下:
在这里插入图片描述
而图中显示的是第二次已经是最后一次发出的DBD包了。之后的0x0都只是作为应答,表示其接收到了来自主的DBD。

二、OSPF的状态机:

状态机意义
Down一旦本地发出hello包就进入下一个状态
Init
(初始化)
本地接收到的hello包中,若存在本地RID,那么进入下一状态
2way
(双向通信)
邻居关系建立的标志

条件匹配:点到点网络直接进入下一状态,MA网络中将进行DR/BDR选举(40s)非DR/BDR间不得进入下一状态

Exstart
(预启动)
类hello的DBD,进行主从关系选举,RID数字为大者为主,优先进入下一状态,该阶段进行的主从关系选举主要解决谁先发消息谁后发消息,该阶段还会协商MTU。
Exchange
(准交换)
使用真正的DBD包,进行数据库目录的共享,需要ACK确认,用于发现自己缺少的LSA信息
Loading
(加载)
使用LSR/LSU/LSack来获取未知的LSA信息
Full
(转发)
邻接关系建立的标志

除上述状态机外,还存在一个Attempt:
Attempt:这种状态仅仅适用于NBMA网络上的邻居,表示最近没有从邻居收到信息,但仍需作出进一步的尝试,用以与邻居联系。这时按Hello time的间隔向邻居发送Hello包

总结一下就是:
①该状态只有NBMA网络中才会出现,
②该状态为了建立邻居关系会按hello time的间隔向邻居发送Hello包

三、OSPF的工作过程:

序号注解
1启动配置完成后,本地使用组播(224.0.0.5、224.0.0.6)发送hello包到所有邻居处,若收集到其他邻居的hello包,那么建立邻居关系,生成邻居表
2紧接着和所有邻居间进行 条件匹配 :
①若失败将停留于邻居关系,仅hello包周期保活即可。
②若匹配成功,将建立邻接(毗邻)关系(需要DBD共享数据库目录),邻接关系将使用DBD/LSR/LSU/LSack来获取未知的LSA信息,当收集齐所有的LSA信息后,本地生成LSDB(链路状态数据库也就是数据库表)
3之后在本地基于LSDB计算到达所有未知网段的最佳路径,然后将其加载到路由表。
4收敛完成后,hello包周期保活邻居、邻接关系;每过30min周期性的使用DBD比对数据库。
5若结构突变:
①新增、断开网段时,直连新增或断开的设备使用DBD告知邻居,邻居再使用LSR、LSU、LSack获取
②设备断电无法沟通,dead time到时后断开邻居关系。

名词注解:
LSA:链路状态通告,或者说是拓扑或路由。
LSDB:链路状态数据库,用于存放所有的LSA集合。
OSPF协议的收敛被称作LSA洪泛、LSDB同步

在这里插入图片描述

1、状态排错:

首先,上面也说过Hello包中必须匹配的有四个参数:Hello和dead time、区域ID、认证类型和秘钥、特殊区域标记,除此之外RID不能一致。

所卡状态状态分析卡住原因
inithello包出现问题网络拥塞,或者Hello包协商失败
two-way邻居关系正常邻接关系若卡在该状态,可能因为优先级为0,没有DR
exstart双方MTU不匹配
loadingLSU更新数据丢失①LSDB总数超量(最大10000条LSA)
②设置了LSA最大接收数量,导致卡住
attemptNBMA网络中指定错误的邻居地址

2、OSPF邻居关系建立的条件:

序号条件
hello time、dead time 一致
mtu 一致
认证类型、认证数据相同
具有相同的 区域ID
特殊区域标识(末梢、nssa)相同
双方网络掩码一致(MA网络可以不一致)
RID不同

补充:
(1)若MA网络中仅存在DR或BDR,其余路由器的接口优先级均为0,那么重启OSPF进程之后,则依然可以建立邻居关系。
(2)若MA网络中所有路由器的接口优先级均为0,它们均会卡在Two-way状态
(3)若A、B、C三台路由器连成线,它们的RID均配置为相同的RID,那么它们的邻居表将不会有任何邻居显示。
(4)若R1、R2、R3三台路由器连成线,R1与R3的RID配置为一样,那么B可以在邻居表中看到两个邻居,虽然能够正常建立邻居关系,但是邻居关系及其不稳定,R2只能ping通一边的环回,之后便中断了,之后又能够ping 通了。(我这里用的是WebIOU模拟器,之后有机会我会拿真机去测试)
在这里插入图片描述

(5)如下配置:
在这里插入图片描述

测试结果
R1 ping 不通 3.3.3.3,其余均可ping 通
R3 ping 只能ping通 本地环回3.3.3.3
R2 ping 不通 1.1.1.1,3.3.3.3,但有时能 ping 通 4.4.4.4,有时不能
R4 同R2

3、SPF算法:

OSPF算法使用的是迪杰斯卡拉算法,这里不具体说。只说下它大概过程,这个算法可以算出最短的路径,最后成树状结构。接口开销值越小,则路径越优。
在这里插入图片描述
整个OPSF的收敛过程总共使用了两次SPF算法,第一次生成树状结构,然后第二次检索出每个节点的最短路径。

根据建邻,收集的信息完闭之后会生成LSDB,然后运行SPF算法,从而生成最短路径树状图,树状图具备无环,然后到达其它节点也是最短路径。

之后第二次检索到达每个路由器网段的路径,这个路径一定是最短路径,之后就可以生成路由信息了。

四、OSPF的配置:

1、启动、宣告:

接下来的配置我会以下图为例,IP如下,宣告省略:
在这里插入图片描述

R1(config)#router ospf 1          启动时需要配置进程号,仅具有本地意义
R1(config-router)#router-id 1.1.1.1

router-id全网唯一,优先级从高到底按下面排列:
手工配置 > 环回接口上最大数值的IP地址 > 物理接口最大数值 > 无进程

宣告的作用:①激活接口 ②传递拓扑 ③区域划分

R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
R1(config-router)#network 12.1.1.1 0.0.0.0 area 0

OSPF在宣告时,必须携带反掩码。

区域划分规则:
1、星型结构:所有非骨干必须直连到骨干区域,区域0为骨干,大于0为非骨干。
2、ABR:区域边界路由器,一台设备同时工作在两个区域之间,用于实现路由的共享。

2、邻居表:

表中包含了邻居ID、优先级、状态机、死亡时间、邻居的IP、出接口
在这里插入图片描述

3、数据库表:

查看OSPF的数据库表(目录),关于目录的详细信息我会在下一次讲。

R2#show ip ospf database  查看数据库的目录
R2#show ip ospf database router 1.1.1.1  具体查看某条LSA
(router 为类别,1.1.1.1 为番号)

4、路由表:

ABR:区域边界路由器,它位于OSPF区域边界上,将OSPF的非骨干区域连接到了OSPF的骨干区域。
ASBR:自治系统边界路由器,它位于OSPF自主系统和非OSPF网络之间,ASBR可以同时运行着多种协议。

标识注解
O标识OSPF本区域内通过拓扑计算所得路由。
O IA标识其它区域路由器通过ABR导入所得
O E1/2标识其它协议或其它进程产生后,通过ASBR重发布进入
O N1/2标识其它协议或其它进程产生后,通过ASBR重发布进入,同时本地处于NSSA特殊区域。

管理距离为110,度量为cost开销值:
在这里插入图片描述
注意:当接口带宽大于参考带宽时,度量为1,可能导致选路不佳,因此可以修改默认的参考带宽,但要求整个网络所有设备参考带宽需一致。

R1(config-router)#router ospf 1
R1(config-router)#auto-cost reference-bandwidth 1000
注意:它的单位是Mbits

五、OSPF的邻居建立成为邻接关系的条件:

1、基于网络类型:
(1)点到点 :
在点到点网络中,邻居关系必须成为邻接关系,否则无法正常收敛。
(2)MA多路访问:
在MA网络若全网均为邻接关系,那么将可能出现大量重复性的LSA洪泛。为避免该现象,将进行DR/BDR的选举,所有的非DR/BDR间不得建立成为邻接关系。

2、选举规则:
(1)先比较接口优先级:默认为1,数值越大越优选,0标识不参选,点到点接口默认为0。
(2)优先级相同,比较设备的RID,数值越大越优选。

3、干涉选举的方法:
(1)修改DR最大优先级,BDR次大。

R1(config)#interface fastEthernet 0/0
R1(config-if)#ip ospf priority 3

注意:DR选举为非抢占,故修改优先级后必须重启设备的OSPF进程,必须在40s之内修改完成。

R1#clear ip ospf process 
Reset ALL OSPF processes? [no]: yes

(2)修改DR最大优先级,BDR次大,剩余所有设备优先级修改为0。
这种方式不需要重启设备的进程,切记不得将所有设备优先级修改为0,至少必须存在DR。

六、OSPF的接口网络类型:

OSPF的接口网络类型:指OSPF协议在不同网络类型下的接口上,不同的工作方式。

网络类型名称特点其它
环回Loopback无Hello包以32位主机掩码发送路由
点到点
(HDLC、PPP)
point_to_pointhello time 10s不选DR
BMA
以太网
Broadcasthello time 10s选DR
NBMA
(帧中继、MGRE)
point_to_pointhello time 10s不选DR

除上述4种网络类型外,OSPF还存在点到多点模式,这个本文最后将会提到,还存在虚链路,这个我会在下一节讲。

注:点到点的工作方式,仅适用于一个网段两个节点的网络。

因此:在MGRE环境下若适用tunnel口默认的工作方式,那么一个网段内若存在两个以上节点将出现邻居关系翻滚。

想了解MGRE可以看我这篇博客:CCNP2:二层技术、PPP、HDLC、GRE(Tunnel)、MGRE技术

如果需要解决邻居关系的翻滚,可以使用以下方法:
1、所有节点修改网络类型尾以太网类型Broadcast

R1(config)#interface tunnel 0
R1(config-if)#ip ospf network broadcast

注:
①若MGRE环境下,不同接口处于不同的网络类型,若hello time 一致将建立邻居关系,但工作机制的不同,导致LSA更新出现问题,因此必须所有节点处于相同的工作方式
②在MGRE环境下,若构建的OSPF工作环境不是一个全连结构(网段内所有设备间均建立邻居关系),那么一旦使用Broadcast工作方式,就必须将DR固定在中心站点的位置,否则导致DR位置混乱,网络将无法正常收敛。
2、所有节点修改为点到多点模式
点到多点是Cisco为OSPF协议额外设置的工作方式,处在MGRE下的所有邻居之间都应该修改为相同的网络类型。

R1(config)#interface tunnel 0
R1(config-if)#ip ospf network point-to-multipoint 

点到多点的工作:hello time 30s,无DR选举,生成访问各个节点的精确路由。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值