ISIS OSPF
-链路状态路由协议:开放式的最短路径优先协议
每台运行了
OSPF
协议的设备均会共享自身的接口连接情况(
LSA
---拓
扑信息),所以设备互相共享这些信息之后就可以获取到整个OSPF网
络的拓扑信息,随之依靠SPF算法计算得出路由。
Eigrp RIP--距离矢量路由协议--共享路由表
动态协议--由运行同一种动态路由协议的路由器通过沟通协商最终计
算得出的路由信息
1.占用资源少---
2.收敛速度快---
收敛---首次收敛
拓扑结构发生变化重新收敛
3.选路优---
通过范围划分
外部网关协议---EGP BGP
内部网关协议---IGP---OSPF RIP ISIS EIGRP
根据协议本身的特点
有类别的动态路由协议:在传递路由信息时不携带子网掩码---RIPv1
无类别的动态路由协议:在传递路由信息时携带子网掩码
RIPv1--采用广播的方式传递数据包
剩下所有的协议均使用组播发送自身的数据包(
IGP
)
RIP---224.0.0.9
Ospf--224.0.0.5 224.0.0.6
RIP
实际上只能适用在中小型网络环境---16跳的限制
而
OSPF
能够适应中大型的网络环境
OSPF
为了适应中大型的网络环境采用了结构化部署的思想
(区域划分)
区域ID--32位二进制组成,用点分十进制表示
标准的区域划分要求:
区域之间必须存在
ABR
设备
ABR
设备—同时属于两个区域的设备---一台ABR设备可以同时属于多
个区域
区域划分必须按照星形拓扑结构部署
一般把
OSPF
的中间区域称为骨干区域,=并且要求骨干区域的区域ID
必须是0.0.0.0(area 0)
OSPF
网络如果进行了区域划分,这样的网络称为多区域
OSPF
网络,如
果没有进行区域划分称单区域
OSPF
网络
OSPF的数据包
OSPF的hello包作用:周期性的发现建立和保活邻居关系
周期保活
---运行了OSPF协议的路由器会以10S为周期发送HEELO报
文,hello报文中会携带本设备的RID,对端收到后就可以判断本设备
存活,如果40s没有收到HEELO包,就认为该设备故障,会清空从该
设备学到的LSA。
OSPF的计时器
hello时间--默认是10s/30S
Dead-time死亡时间---默认是四倍的hello时间
RID
---运行了OSPF的路由器设备为了区分和标识不同的路由器身份设
计的路由器编号--本质是32位二进制,用点分十进制表示
获取R-ID的方式有两种
手工配置--由工程师自行配置,符合要求即可(IP地址格式,不能重
自动生成--设备会选择自身环回接口数值最大的作为自身的RID-如果
设备没有配置环回会选择接口IP地址数值最大的作为RID
DBD包
---数据库描述包:会携带数据库中收集到的LSA信息的摘要值
LSDB-
-链路状态数据库--存储收集到的LSA信息
LSR
--链路状态请求包
LSU
-链路状态更新包
LSACK
--链路状态确认包
OSPF
的状态机 邻居建立的过程
当收到对端发送的hello报文中携带
自身的RID
,才可以进入2-way
确保hello报文的可靠传递,保证对端一定收到了我发送的hello报文
2-way
--必须收到对端发送的hello报文中携带
本地的RID
才可以进入
该状态,该状态标志着邻居关系的建立
条件匹配
——只有条件匹配成功的路由器才可以进入下面的状态,如
果条件匹配失败则停留在邻居状态,仅使用heelo包进行周期保活。
---
预启动状态
--主从关系的选举--OSPF协议并不希望同时共享LSA信
息,因为这样会在某一时刻很多设备同时共享这样会导致链路带宽被
占用过多,导致数据传输收到影响
选举规则:会比较设备
RID
的大小,rid大的设备将成为主设备
进行主从关系选举的
OSPF
数据包是
DBD
包,并且该
DBD
包没有携带真正
的
LSA
摘要信息
准交换状态
---使用真正携带摘要信息的DBD包传递LSA摘要信息
1.
建立邻居
:启动配置之后,
ospf
将向本地所有的运行了
ospf
协议的端口发送
hello
包(
224.0.0.5
),
hello
包中携带自己的
RID
用来区分不同路由器的身份(不携带路由信息),同时携带
自己已知的邻居
RID
,之后会将这些
RID
存储在自己的邻居表
中。
2.
条件匹配
:邻居表建立完成之后,会进行条件匹配,如匹配
成功则开始进入下一个状态,如果匹配失败则会停留在邻居关
系。
---
之后仅
hello
包进行保活。
3.
如果匹配成功,则开始建立邻接关系
-
之后会使用未携带数据
DBD
包(并没有携带
LSDB
的摘要信息)进行主从关系的选举。主
路由器会优先进入下一个状态,会优先发送摘要进行比对,比
对之后,会请求自己本地没有的
lsa
信息。对端会发送真正携带
lsa
信息的
LSU
包,会利用
LSACK
进行确认。本地的链路状态数据
库建立完成,生成本地链路数据库表。---Full
4.
完成收敛
----
基于本地的链路状态数据库收集的
lsa
,根据自
己的
spf
算法计算得出最短路径树。生成路由表。
5.
收敛完成后,会使用
hello
包每
10s
发送一次,用来保活邻居
关系。
ospf
会每
30min
进行一次周期更新。
配置---
[r1]ospf 1 router-id 1.1.1.1
---启动协议进程(进程号一致即
可),建议手工指定设备的RID
[r1-ospf-1]area 0--创建区域--
[r1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
--宣告(范
围宣告)--
利用反掩码
(和掩码的规则相反,掩码为0的部分反
掩码就为1,掩码为1的部分反掩码就为0)
[r1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0
---
精确宣告
,相
当于利用了反掩码的规则直接
锁死
一个IP地址(仅宣告接口对
应的IP地址)
[r2]display ospf peer brief --查看OSPF邻居简表
[r2-GigabitEthernet0/0/0]ospf mtu-enable
--OSPF协议默认是不
进行接口
MTU检测
的,如果想要开启该功能需要手工配置。
[r2]display ospf peer---查看ospf邻居表详细信息
[r2]display ospf peer
---查看ospf邻居表详细信息
当网络结构发生变化(新增或者断开一些网段)OSPF会直接进行触发
更新发生LSU数据包。
条件匹配
---在一个广播域中需要选择一台路由器(DR)和剩下所有路
由器建立邻接关系,同时需要选择一台备份设备,充当DR的备份,当
DR设备出现故障需要行使DR的工作。
DR
和
BDR
的选举规则:先看接口优先级,之后会根据设备的
RID
大小选
择
RID
大的作为
DR
次大的作为
BDR
设备
[Huawei-GigabitEthernet0/0/0]ospf dr-priority 10
---修改接口DR
选举优先级,数值大的作为DR设备
OSPF
的
DR
和
BDR
选举是非抢占的,简单来说就是
DR
和BDR选择
出来之后,新加入设备不会抢占DR和BDR的身份
OSPF
的数据报文
OSPF
是一种
跨层封装
的协议,协议号是
89
没有传输层(减少封
装和解封装的时间,加快收敛)
OSPF
的公共头部所有
OSPF
报文均携带的信息
版本
---表明是OSPFV2 还是OSPFV3
类型
---标准该数据包是OSPF的哪一种数据包
1-hello包
2--dbd包
3-LSR
4-LSU
5-LSACK
认证类型:0 ---空认证 1-
simple
:简单认证(明文认证)
2--MD5
报文长度---头部+数据包本身的数据量
网络掩码--接口发出hello时会携带该接口的掩码。
在建立邻居时会比较两端设备的掩码,如果掩码不一致则会导
致建邻失败——注意:只有以太网链路才会检测掩码
hello时间和死亡时间,注意这两个参数如果两端对应不上也会
导致建邻失败。
可选项-是OSPF的一些特性(OSPF的特殊区域的标记会在选项
字段携带,如果字段不统一则会导致建邻失败)
路由器优先级---
ospf dr-priority
用来条件匹配选择
DR
设备的参数
路由器优先级---
ospf dr-priority
用来条件匹配选择
DR
设备的参数
指定路由器--DR的身份
备份指定路由器---BDR的身份(RID):
注意
在一个广播域中
所有设备的DR和BDR的认知必须统一。
只有
DR
和BDR会监听224.0.0.6的组播地址
作用:
1.用来
主从关系
选举(没有携带lsa摘要信息的DBD报文)
2.用来减少OSPF重复更新,利用携带LSA摘要信息的DBD进行
本地数据库比对
3.主从关系选举之后由主设备会主导后续的DBD报文交互的有
序性(确保DBD报文的可靠传输)---隐性确认
接口最大传输单元:接口
MTU
值,
[r2-GigabitEthernet0/0/0]ospf
mtu-enable
--OSPF协议默认是不进行接口MTU检测的,如果
想要开启该功能需要手工配置。如果两端均开启了接口MTU检
测功能如果接口MTU不一致会导致状态停留在预启动状态。
I
:如果
I
为置为
1
则代表该
DBD
包是进行主从关系选举的
DBD
包
M
:
MORE
,如果
M
标志位置为1则代表本设备后续还有DBD报
文需要发送,如果置为0则代表该数据包已经是最后一个DBD
报文。
MS
:标注该
DBD
报文是主设备发送的
DBD
报文
序列号的作用:隐性确认,去确保
DBD
报文的有序可靠传输
在华为体系下,是由从设备主动发送携带
LSA
-摘要信息的DBD
包
LSR
--链路状态请求报文
必须靠
LSA
的
三元组
才能唯一的标识一条
LSA
数据包的
五元组
——
数据的源
IP
地址 目标IP地址 源端口号 目标端口号 协议号
OSPF
--LSACK的确认,是对每一条请求的LSA进行确认
OSPF
---接口网络类型
OSPF
接口工作在不同的网络环境下工作方式有所区别
P2P
--点到点网络
MA
--多点接入网络
BMA
--支持广播/组播
NBMA
--只能单播
OSPF
真实
OSPF
对应的接口网络类型和特点
OSPF
真实 网络环境
OSPF
对应的接口网络类型和特点
BMA
(以 太网)
类型:
Broadcast
特点:需要
进行
DR
和
BDR
的选举,
Timers: Hello 10 , Dead 40
P2P
点到点
网络
Type: P2P
:特点:不需要进行
DR
和
BDR
的选举(条 件匹配),Timers: Hello 10 , Dead 40
环回接口 虚拟接口,实际不会涉及数据包的收发,环回接口
COST
=0
MGRE
隧道环境类型:
OSPF
中默认识别隧道接口的ospf接
口类型为P2P,导致只能存在两台设备,在MGRE
环境下,必须修改接口的工作方式使隧道接口可用
识别多台设备 人为设计 的接口网 络类型
接口网络类型:
P2MP
,特点不需要进行
DR
和bdr
的选举,
Hello 30 , Dead 120
NBMA
(帧 中继)
Timers: Hello 30 , Dead 120
<r2>display ospf interface GigabitEthernet 0/0/0 --查看OSPF接口
网络类型的命令
OSPF
的开销值计算公式=参考带宽(默认值是100MBPS)/真实 带宽
如果算出来的值小于
1
则直接按1来算,如果大于1的小数,小数
部分直接舍弃
[r2-ospf-1]bandwidth-reference
--修改OSPF参考带宽的指令
OSPF
协议在
MGRE
环境下的一些问题
问题1.
只有中心获取到了一个分支的hello报文,分支之间没有获取到
任何hello报文
原因:
OSPFV2
通过组播发送数据包,但是
MGRE
环境只能支持单
播,所以必须在中心开启伪广播
[r1-Tunnel0/0/0]nhrp entry multicast dynamic
问题二,中心开启伪广播之后,中心和一个分支建立了邻接关
系,但是分支之间没有信息,其次有一个分支只和中心保持init
状态。
建议直接更改隧道接口的接口网络类型为
P2MP
,直接方中心和
分支不进行
DR
和
BDR
的选举,就不会造成认知不统一的问题
P2mp
---首先没有真实实际的网络类型是P2MP,是一种专门设
计出来的网络类型
同时为了加快收敛,可以修改
OSPF
计时器
[r1-Tunnel0/0/0]ospf timer hello 10
-
解决方法:
[r1-Tunnel0/0/0]ospf network-type broadcast
--需要修改OSPF协
议在mGRE隧道接口下的默认接口网络类型为
broadcast.
问题三,如果中心和分支的
DR
和bdr认知不一致会导致网络中
一些由DR设备发送的LSA信息残缺,导致没有办法获取到完整
的路由信息。
[r2-Tunnel0/0/0]ospf dr-priority 0
--解决方法就是让分支设备放弃
选举DR和BDR
解决方法2.
[r
1
-Tunnel0/0/0]ospf dr-priority
10--让中心的设备接口DR选举
优先级为最高。
P2mp
---首先没有真实实际的网络类型是P2MP,是一种专门设
计出来的网络类型
如果想要还原环回接口的默认掩码:
[r2-LoopBack0]ospf network-type
broadcast
Attempt
---只有在NBMA环境下才会出现,等待对端也指定发
送的对象
在
NBMA
环境下因为不支持组播报文,所以即时宣告了
OSPF
接
口,接口依然没有办法发送hello(224.0.0.5是一个组播报 文),所以必须手工指定建立邻居的对象IP地址
[Huawei-ospf-1]peer 12.0.0.2
--指定建邻的设备IP地址,双方都需要指
定