目录
条件匹配
DR/BDR的选举规则:
OSPF协议的数据包
OSPF的头部内容
hello包
DBD包
LSR包
LSU包
LSACK包
OSPF的接口网络类型
条件匹配
DR和DRother邻接;DR other和DRother邻居
指定路由器 -- DR -- DR就是和同一个MA网络中其他设备建立邻接关系
备份指定路由器 -- BDR -- BDR也需要和同一个MA网络中其他设备建立邻接关系
DR可能是别的MA网络的DR other;所以实际上DR并不是指一整个路由器,路由器的一个接口对应一个MA网络,DR和BDR是接口的概念
条件匹配 -- 在MA网络中,若所有设备均为邻接关系,将出现重复更新的现象,所以,需要进行DR/BDR的选举,让所有DRother之间维持邻居关系即可。
DR/BDR的选举规则:
1、先比较优先级,优先级最大的为DR,优先级次大的为BDR【优先级默认1】
修改优先级配置:
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
【优先级范围从0开始,修改优先级为0代表让这个接口放弃选举】
2、如果优先级相同,则比较RID,RID大的路由器所对应的接口为DR,次大的为BDR
【如果发现RID小反而成为DR,原因在下面】
DR/BDR的选举是非抢占模式的 -- 一旦选举成功不会被抢,不会因为后来新加入的设备而重新选举。上面那种情况是RID小的先配置然后成为了DR -- 选举时间和死亡时间相同(最多40s最短几秒就选出来了)之后加入的都是DRother
<r1>reset ospf process -- 两边都重启一下ospf就重新选举了
OSPF协议的数据包
OSPF协议是一个跨四层封装的协议,三层协议号为 -- 89
OSPF的头部内容
版本 -- OSPF的版本 -- 在IPV4网络环境下,一般使用OSPFV2,所以,对应的版本字段为2.
类型 -- OSPF数据包的类型
hello - 1 | DBD - 2 | LSR - 3 | LSU - 4 | LSACK - 5 |
RID -- 发送数据包的路由器的RID
区域ID -- 代表数据包从哪个区域发出来的(backbone骨干)
认证类型 --
null -- 不认证 | simple -- 明文认证 | MD5认证 -- 通过比对摘要值进行认证 |
-- OSPF在进行认证比对时需要同时比对认证类型和认证数据,都相同则通过认证。
hello包
⭐hello包-- 周期发现,建立,保活邻居关系。DR/BDR选举。
网络掩码 -- 发出hello包接口配置的IP地址的子网掩码【思科没有】
在华为设备中,要求邻居设备的子网掩码必须相同,否则将无法正常建立邻居关系。 -- 这个限制只针对以太网 {点到点就不管了}
hello时间以及后面的失效(死亡)时间 -- 在建立邻居关系的时候也必须相同,如果不同则将无法正常建立邻居关系
8位可选项 -- 每一位都代表路由器的某个OSPF特性
特殊区域的标记位,如果邻居间特殊区域标记位不同,则也无法正常建立邻居关系
路由器的优先级 -- 进行DR/BDR选举时使用,代表发出这个数据包的接口的优先级。
指定路由器/备份指定路由器 -- DR/BDR,一旦DR和BDR选举完成,则将会把DR/BDR对应接口的IP地址携带上。在DR和BDR没选出来或不需要选举时,对应字段使用0.0.0.0来填充
邻居关系建立的限制因素
1、网络掩码 -- 只针对以太网
2、hello时间
3、死亡时间
4、特殊区域的标记
5、认证信息
DBD包
⭐DBD包 -- 数据库描述报文 -- 主从关系选举以及携带数据库摘要信息进行目录共享
注意 -- 在exstart状态下需要使用DBD包进行主从关系选举,其目的一方面是为主的可以优先开始LSA的交换,另一个目的是为了隐形确认
灰色的是公共部分
接口的最大传输单元 -- MTU(点到点环境MRU) -- 华为设备默认不进行MTU值的检测,所以一般携带值为0【display ospf peer可看】要开启检测的话:、
ospf MTU enable
开启了检测到邻居双方MTU不一样会卡在exstart状态。
八位可选项 -- 前五位保留都是0后三位很重要
I -- init -- 该位置1则代表这个数据包是用来进行主从关系选举的,主从关系选举的数据包将不携带LSA头部信息(LSDB摘要信息)置0时说明主从关系已经选好。
M -- More -- 该位置1,则代表该DBD包后面还有更多的DBD包。【还没发完】置0则代表该数据包为最后一个DBD包
MS -- Master -- 该位置1,则代表这个DBD包由主发送,置0则代表由从发送
在没选举出来之前,大家都以为自己是主所以在还没有选举的时候MS置1
DD序列号⭐ -- 在DBD包交互过程中,会逐次加1,用来确保DBD报文传输的有序性,同时还可以进行隐形确认,保证DBD包传输的可靠性。
eg 、主发的序列号是123,从回的序列号也是123证明自己收到了隐形确认由此完成
第一个和第二个是为了主从选举
第三个是主分享目录【记得此时序列号会+1】 第四个则是从的隐形确认
【只能是主向从发DBD共享数据库信息,从无法主动向主发】
LSR包
LSR包 -- 链路状态请求报文
链路状态类型、链路状态ID、通告路由器 -- 可以唯一的标定出一条LSA信息,为我们将他们称为LSA的“三元组”
【意思每条LSA信息都由这仨指出 】
LSU包
LSU包 -- 链路状态更新报文
这还能和上面的对应上3:1的比例能知道请求了几条
LSACK包
LSACK包 -- 链路状态确认报文
【头部内容也包括之前的三元组】
【整个过程】
OSPF的接口网络类型
-- 实际指的是OSPF接口在不同的网络类型下默认的不同工作方式
【display ospf interface g0/0/0】查看接口ospf的网络类型
华为设备中将环回接口在OSPF中的开销值定义为0,这个值不受外界因素的影响(修改带宽不会影响他的cost值)
环回接口写的是p2p 实际上工作方式不是
华为设备中将MGRE中的tunnel接口传输速率定为64k所以开销值为100M/64k=1562,开销值搞这么大是为了避免数据走隧道接口,为了不让走隧道接口时浪费封装产生的资源
网络类型 | OSPF接口的网络类型(工作方式) |
BMA(以太网) | Broadcast,可以创建多个邻居关系、需要进行DR和BDR的选举, hello 10s、dead time 40s |
P-2-P(PPP,HDLC ,GRE,MGRE) | P2P,只能建立一个邻居关系、不需要进行DRBDR选举, hello 10s、dead time 40s |
环回接口(虚拟接口) | p2p,华为标记为p2p,实际无数据收发,学习32位的主机路由 |
自定义 | p2mp,可以建立多个邻居关系,不需要进行DR和BDR的选举 |
NBMA(帧中继) | nbma可以创建多个邻居关系,需要进行DR和BDR选举 hello 30s deadtime 120s -- 在NBMA的工作模式下、只能通过 单播邻居手工指定建立 |
【进接口然后ospf network-type ?】修改接口的网络类型
环回接口默认工作模式下学习32位的主机路由,如果需要还原配置的掩码信息,则可以将网络类型改为Broadcast
在一个网络当中所有的接口工作方式都需要改成一致的。要不然DR选举那会出一堆问题
MGRE环境中除了hub-spke架构外还存在一种全连网状拓扑 -- mesh -- 这种接口所有分支同时也是中心,都可以开启伪广播,则将接口都改为Broadcast后,DR/BDR选举将同时进行
Attempt -- 尝试状态 -- 只有在不能自动建邻的环境下出现,相当于一个过度状态,等待单播