OSPF --- 开放式最短路径优先协议
Open Shortest Path First Interior GatewayProtocol
LSA --- 链路状态通告
1,OSPF的数据包类型
hello包 --- 周期性发现,建立,保活邻居关系。
hello时间 --- 默认10S(30S)
Deadtime --- 4倍的hello时间
RID --- 1,全网唯一;2,格式统一 --- IP地址
1,手工配置
2,自动生成 --- 首先先看自己环回接口的IP地址,选择其中数值最大的作为RID;如果没有环回接口,则取物理接口中IP地址最大的作为RID。
DBD包 --- 数据库描述报文 --- LSDB ---- 链路状态数据库(存放LSA信息的数据库)
LSR包 --- 链路状态请求报文 --- 基于DBD包请求本地未知的LSA信息
LSU包 --- 链路状态更新报文 --- 真正携带LSA信息的数据报
LSACK包 --- 链路状态确认报文 --- 确认包
OSPF存在每30MIN一次的周期更新
2,OSPF状态机
Two-Way --- 标志着邻居关系的建立。
(条件匹配)--- 条件匹配成功,则进入下一个状态,匹配失败,则仅停留在邻居关系,使用hello包进行周期保活。
主从关系选举 --- 通过比较RID,RID大的为主。为主的可以优先获取LSA信息。并且可以主导隐形确认。
FULL ---- 标志着邻接关系的建立。只有邻接关系,才可以交换LSA信息,而邻居关系仅使用hello包进行保活。
Down状态 --- 启动OSPF,发出hello包之后进入下一个状态
Init(初始化)状态 --- 收到hello包中存在本地RID,进入到下一个状态
2-way(双向通信) --- 标志着邻居关系的建立
(条件匹配)条件匹配成功,则进入下一个状态,匹配失败,则仅停留在邻居关系,使用hello包进行周期保活。
exstart(预启动)状态 --- 使用未携带数据的DBD包进行主从关系选举,RID大的为主,为主可以优先获取LSA信息。
Exchange(准交换)状态 --- 使用携带数据的DBD包交换目录信息
Loading(加载)状态 --- 使用LSR包基于DBD包请求未知的LSA信息,对方发送LSU包携带LSA信息,需要LSACK进行确认
FULL状态 --- 标志着邻接关系的建立
3,OSPF的工作过程 启动配置完成后,OSPF向本地所有运行协议的接口以组播224.0.0.5的形式发送hello 包,hello包中携带本地的RID以及本地已知邻居的RID,之后,将收集到的邻居关系记录在本地的邻居表中。
邻居表建立完成后,将进入条件匹配环节,失败,则将停留在邻居关系,仅使用hello 包进行周期保活。
如过成功,则将开始建立邻接关系。首先,使用未携带数据的DBD包进行主从关系选
举,之后使用携带数据的DBD包共享数据库目录信息。之后,本地使用LSR/LSU/LSACK获取未知的LSA信息。完成本地数据库的建立 --- LSDB --- 生成数据库表。
最后,基于本地的链路状态数据库,生成有向图,及最短路径树。之后,计算本地到达未知网段的路由信息,将其添加到本地的路由表中。
收敛完成后,OSPF会周期使用hello包进行保活,并且,每30min一次进行周期更新。
结构突变:
1,突然新增一个网段
2,突然断开一个网段
3,无法沟通 ---- 死亡时间
OSPF区域划分的要求:
1,区域之间必须存在ABR设备
2,必须按照星型拓扑来划分 --- 中间区域被称为骨干区域,骨干区域的区域ID(由32 位二进制构成,可以使用点分十进制表示,也可以直接使用十进制表示。)定义为0.
4,OSPF的基本配置
1,启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1
2,创建区域
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]
3,宣告宣告的目的 --- 1,激活接口;2,发布路由
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 --- 反掩码 --- 由连续的0和连续的1组成,0 代表不可变,1代表可变
[r1]display ospf peer --- 查看邻居表
[r1]display ospf peer brief --- 查看邻居关系简表
[r1]display ospf lsdb --- 查看链路状态数据库
[r1]display ospf lsdb router 2.2.2.2 --- 查看具体LSA信息
COST = 参考带宽/真实带宽 --- 华为设备默认的参考带宽为100Mbps --- [r1-ospf-1] bandwidth-reference 1000 --- 注意:如果一台设备的参考带宽修改了,则所有设备的参考带宽必须改成相同的。
开销值计算,如果出现小数,如果是小于1的小数,则直接按照1来看;如果是大于1的小数,则直接取整数部分。
结构突变:
1,突然新增一个网段 --- 触发更新,直接发送LSU包,需要ACK确认
2,突然断开一个网段 --- 触发更新,直接发送LSU包,需要ACK确认
3,无法沟通 ---- 死亡时间
条件匹配
指定路由器 --- DR --- 和MA网络中其他设备建立邻接关系。
备份指定路由 --- BDR --- 和MA网络中其他设备建立邻接关系。
一个MA网络当中,在DR和BDR都存在的情况下,至少需要4台设备才能见到邻居关系,因为只有DRother之间会保持邻居关系
DR和BDR实际上是接口的概念。
条件匹配 --- 在MA网络中,若所有设备均为邻接关系,将出现大量的重复更新,故需要进行DR/BDR的选举,所有DRother之间仅维持邻居关系即可。
DR/BDR的选举规则:
1,先比优先级,优先级大的为DR,次大的为BDR 优先级的初始默认值为1。
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
注意:如果将一个接口的优先级改为0,则代表该接口放弃DR/BDR的选举。
2,优先级相同时,则比较RID,RID大的路由器对应的接口为DR,次大的为
BDR。
DR/BDR的选举 --- 非抢占模式的选举 --- 一旦选举成功,则将不能被抢占。 ---- 选举时间 --- 和死亡时间相同。
<r2>reset ospf 1 process --- 重启OSPF进程的命令
ospf的数据包
OSPF跨四层封装,IP头部使用89作为协议号标识OSPF。
HELLO包,DBD包,LSR包,LSU包,LSACK包
OSPF头部
版本 --- OSPF版本 --- 2 类型 --- OSPF数据包的类型
HELLO --- 1
DBD --- 2 LSR --- 3
LSU --- 4
LSACK --- 5
长度 --- 指的是整个OSPF报文的长度,单位 --- 字节路由器ID --- 发送这个数据包的路由器的RID 区域ID --- 数据包发出的接口所在的区域的区域ID 校验和 --- 确保数据完整性认证类型,认证数据 --- 完成OSPF认证工作的认证类型 --- null --- 空认证 --- 0 simple --- 明文认证 --- 1
MD5 --- 比对摘要值认证 --- 2
HELLO --- 周期性发现,建立,保活邻居关系。DR/BDR选举。
网络掩码 --- 发出该数据包接口所配置的IP地址掩码信息。 --- 华为体系中这个参数邻居双方所携带的值不一致将无法正常建立邻居关系。 --- 这个限制条件仅针对MA网络,
P2P网络不受限制。
hello时间,死亡时间 --- 如果邻居双方这两时间参数不同,则将限制邻居关系的建立。
可选项 --- 8位 --- 每一位代表路由器遵从某个OSPF特性 --- OSPF特殊区域的标记在其中,如果邻居双方特殊区域的标记不一致,则将限制邻居关系的建立。
路由器的优先级 --- 发出hello包接口所配置的DR/BDR选举的优先级
DR/BDR --- 网络中DR和BDR所对应接口的IP地址。在没有选出DR和BDR之前,将使用
0.0.0.0进行填充。
Hello包中限制邻居关系建立的因素:
1,网络掩码
2,hello时间
3,dead time
4,OSPF特殊区域的标记
5,认证
DBD包 --- 数据库描述报文 ---- 1,使用未携带数据的DBD包进行主从关系选举;2,使用携带数据的DBD包进行目录共享; ---- DBD包还存在第三种形态,即仅完成确认的确认包形态。
MTU --- 设备默认没有开启接口MTU值的检测,所以将携带0。
[r1-Serial4/0/0]ospf mtu-enable --- 如果邻居双方都开启了MTU值的检测,但是,双方携带的MTU值不同,则邻居状态将停留在Exstart状态。
I --- init --- 如果这个标记位置1,则这个DBD包是进行主从关系选举的数据包。
M --- MORE --- 该位置1,则代表后面还有更多的DBD包。
MS --- Master --- 该位置1,则代表发送该数据包的路由器为主。 --- 在主从关系选举出来之前,双方都将认为自己是主,所以,都会将字节的MS置1;当主从关系选举结束后,将只有主会置1,从置0。
DBD序列号 --- 在DBD报文交互中,会逐次加1,用于确保DBD包传输的有序性及可靠性。
LSR --- 链路状态请求报文 --- 基于DBD包请求未知的LSA信息。
链路状态类型,链路状态ID,通告路由器 --- LSA三元组 --- 这三个参数可以唯一的标识出来一条LSA信息。
LSU包 --- 链路状态更新报文 --- 真正携带LSA信息的数据包
LSACK --- 链路状态确认报文 --- 确认包
OSPF的接口网络类型
P2P
MA BMA
NBMA
OSPF接口网络类型 --- 指的是OSPF接口在不同的网络类型默认下的不同工作方式。
网络类型 | OSPF接口网络类型(工作方式) |
BMA(以太网) | Broadcast,可以建立多个邻居关系。需要进行DR和BDR选举, Hello 10 , Dead 40 |
P2P(HDLC,PPP,GRE, MGRE) | P2P,只能建立一个邻居关系,不需要进行DR和BDR选举,Hello 10 , Dead 40 |
虚拟接口(环回接口) | 在华为体系中被写作P2P,实际没有数据收发。会学习32位主机路由(通过修改接口的网络类型为broadcast可以将掩码长度还原) |
| P2MP,可以建立多个邻居关系。不需要进行DR和BDR选举, Hello 30 , Dead 120 ,会学习邻居接口IP地址的主机路由 |
NBMA(帧中继) | NBMA,可以建立多个邻居关系。需要进行DR和BDR选举,Hello 30 , Dead 120,NBMA环境下无法自动建立邻居关系,需要手工指定邻居关系。 |
[r2]display ospf interface GigabitEthernet 0/0/0 --- 查看OSPF接口工作方式
在华为体系中,将环回接口在OSPF中的开销值定义为0,不会受到外界变化的影响。(修改参考带宽不会影响该值。)
[r2-LoopBack0]ospf network-type broadcast --- 修改OSPF接口网络类型
华为体系将tunnel接口的传输速率定义为64K,实际上虚拟接口不存在传输速率。这样设定的目的是为了让隧道接口的开销值变的很大,导致在存在其他路径时,尽可能的避免走隧道接口,因为隧道接口需要进行复杂的封装和解封装过程,导致效率降低。
全连的MGRE环境 --- MESH --- 所有节点即使中心,也是分支。
[r1-ospf-1]peer 12.0.0.2 --- 指定单播邻居 --- 一定需要双向指定。
Attempt --- 尝试 --- 过度状态,只有在需要手工指定邻居关系的状态下出现,在指定对方后等待对方指定时将处于该状态,一旦对方指定,则将进行后续状态。