OSPF开放式最短路径优先协议完整回顾
一、路由协议体系概览
1.1 按工作范围分类(AS自治系统)
| 分类 | 全称 | 典型协议 | 作用范围 |
|---|---|---|---|
| IGP | 内部网关协议 | OSPF、IS-IS、RIP | 自治系统内部 |
| EGP | 外部网关协议 | BGP | 自治系统之间 |
1.2 按路由学习方式分类
| 分类 | 全称 | 代表协议 | 工作原理 |
|---|---|---|---|
| DV | 距离矢量协议 | RIP | 基于邻居交换路由表,以跳数为度量 |
| LS | 链路状态协议 | OSPF、IS-IS | 基于拓扑数据库,运行SPF算法自主计算最优路径 |
OSPF特点:
- OSPF报文封装在IP报文内,上层协议号89
- OSPF是无类路由,支持VLSM和CIDR
- OSPF没有设备数量的硬性限制,在大型网络中具有良好的可扩展性
二、Router ID(路由器标识符)
2.1 RID定义与重要性
Router ID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识,其格式与IP地址相同。RID在全网必须唯一,重复的RID会导致邻居关系无法建立、LSDB混乱、路由计算错误等问题。
RID变更的影响:如果RID发生变化,路由器会重新泛洪所有LSA,导致全网其他OSPF路由器更新LSDB并重新运行SPF计算,引发OSPF网络震荡。因此,选择稳定的RID是OSPF网络设计的首要任务。
2.2 RID的选取方式
RID的选取有两种方式:手动配置和设备自动设定。
方式一:手动配置(强烈推荐)
手动配置RID是稳定性最高的做法。华为官方建议:在实际网络部署中,考虑到协议的稳定,推荐手工配置Loopback接口的IP地址作为Router ID。
- RID为IP地址格式,但该地址可以不存在于设备上------RID只是地址的格式,不需要对应到任何真实的接口IP
- 建议使用设备的环回接口地址作为RID------环回接口稳定、不会有物理故障,是作为RID的最佳选择
- RID更改之后需要重启OSPF进程才能生效
方式二:设备自动选取
如果没有手动指定RID,也没有配置全局Router-ID,设备会根据当前接口的IP地址自动选取一个RID,选取规则如下:
- 优先选择所有Loopback接口中数值最大的IP地址
- 如果未配置Loopback接口或Loopback接口未配置IP地址,则从所有其他接口的IP地址中选择数值最大的地址
华为设备选举规则:手动配置 > 最大Loopback地址 > 最大物理接口IP地址。
接口状态对RID的影响机制:当一个接口的IP被选作全局RID后,接口就算是shutdown也不会导致全局RID发生变化,除非该接口的IP地址被删除或修改。只有此时,设备才会重新选取Router ID。
2.3 RID配置与诊断命令
bash
# 方式一:在OSPF进程视图下手动指定RID
[Huawei] ospf 1 router-id 1.1.1.1
# 方式二:先配置全局Router-ID,再进入OSPF进程(推荐)
[Huawei] router-id 1.1.1.1
[Huawei] ospf 1
[Huawei-ospf-1] router-id 1.1.1.1
# 重启OSPF进程(用户视图)
<Huawei> reset ospf process
Warning: Reset OSPF process? [Y/N]: y
# 诊断命令
<Huawei> display ospf brief
<Huawei> display current-configuration | include router-id
<Huawei> display ospf peer
2.4 RID与DR/BDR选举差异对比
| 对比维度 | RID选举 | DR/BDR选举 |
|---|---|---|
| 适用范围 | 设备本地行为,适用于所有OSPF路由器 | 同一网段上多台路由器之间的协商过程 |
| 选举规则 | 手动指定优先 → Loopback优先 → 物理接口优先 | 优先级高优先(0不参与)→ 优先级相同则RID大优先 |
| 抢占机制 | 配置生效即可变更 | 一旦选举完成,新加入的路由器即使优先级更高,也不会抢占现有角色 |
三、OSPF与RIP对比
| 对比维度 | RIP | OSPF |
|---|---|---|
| 更新方式 | 周期交换整张路由表(30秒) | 周期更新(30分钟)+ 触发更新 |
| 度量值 | 跳数(最大16跳不可达) | 参考带宽(Cost) |
| 收敛方式 | 逐条收敛 | 收到更新后立即发送更新,再计算路由 |
| 网络直径 | 15跳限制 | 无硬性限制 |
| 路由依据 | 依据邻居"传闻" | 基于完整拓扑信息独立计算 |
| 有无环路 | 有环路风险 | 天然无环(SPF算法保证) |
RIP的缺陷与OSPF的改进:
- 资源浪费问题:RIP路由器之间周期性地交换整张路由表(30秒一次),造成设备性能浪费 → OSPF改为周期更新(30分钟)加触发更新,节约硬件资源
- 选路标准问题:RIP以跳数作为度量值,与带宽无关 → OSPF采用Cost(参考带宽),依据链路带宽选路
- 收敛速度问题:RIP收到更新、计算路由、发送更新,逐条收敛 → OSPF收到更新后立即发送更新,再计算路由,收敛更快
- 跳数限制问题:RIP最大16跳不可达,限制了网络直径 → OSPF无跳数限制
- 传闻更新问题:RIP依据邻居传递的"传闻"进行路由,缺乏对全局拓扑的了解 → OSPF基于完整拓扑信息,每台路由器独立进行路由计算
四、有类路由与无类路由深入辨析
4.1 核心差异
有类路由协议在传递路由更新时不携带子网掩码,接收方根据IP地址所属的A、B、C类(主类网络)自动推断掩码。其核心局限性在于:属于同一主类网络的所有子网必须使用相同的子网掩码,无法支持VLSM,导致IP地址利用率低下。
无类路由协议在路由更新中携带明确的子网掩码信息,能够精确标识任意长度的网络前缀。这一特性使得协议可以支持VLSM(掩码右移划分子网)和CIDR(掩码左移聚合网段),极大提升了IP地址的使用效率和路由表的可扩展性。
判断无类路由协议的简单方式:进行路由宣告时,是否携带掩码信息。
4.2 对比速查表
| 对比维度 | 有类路由协议 | 无类路由协议 |
|---|---|---|
| 掩码传递 | 不携带,接收方根据A/B/C类自动推断 | 携带明确的子网掩码信息 |
| VLSM支持 | 不支持,同一主类网络掩码必须一致 | 支持,可灵活划分子网 |
| CIDR支持 | 不支持 | 支持,可进行路由聚合 |
| 代表协议 | RIPv1 | RIPv2、OSPF、IS-IS、EIGRP、BGP |
VLSM与CIDR:
- VLSM(可变长子网掩码):本质是掩码右移,划分子网
- CIDR(无类域间路由):本质是掩码左移,网段聚合
五、OSPF五种报文详解
5.1 报文头格式
OSPF五种报文具有相同的报文头格式,长度为24字节,直接封装在IP报文内,IP协议号为89。
| 字段 | 长度 | 含义 |
|---|---|---|
| Version | 8比特 | OSPF版本号。对于OSPFv2,其值为2。 |
| Type | 8比特 | OSPF报文类型:1=Hello,2=DD,3=LSR,4=LSU,5=LSAck。 |
| Packet Length | 16比特 | OSPF报文的总长度,包括报文头在内,单位为字节。 |
| Router ID | 32比特 | 发送该报文的路由器标识。 |
| Area ID | 32比特 | 发送该报文的路由器的所属区域。 |
| Checksum | 16比特 | 包含除了认证字段的整个报文的校验和。 |
| AuType | 16比特 | 验证类型:0=不验证,1=简单认证,2=密文认证。 |
| Authentication | 64比特 | 其数值根据验证类型而定。 |
5.2 五种报文详解
| 报文类型 | 作用 | 关键字段/标志位 | 确认机制 |
|---|---|---|---|
| Hello | 周期性发送,发现和维护OSPF邻居关系 | Network Mask、HelloInterval、RouterDeadInterval、DR、BDR、邻居列表 | 通过邻居表中的双向Hello隐含确认 |
| DD | 描述本地LSDB的摘要信息,用于两台设备进行数据库同步 | I-bit(协商主从)、M-bit(后续报文)、MS-bit(主从标识)、Sequence Number | 隐式确认(通过序列号确认) |
| LSR | 向对方请求所需要的LSA,在成功交换DD报文后发送 | 请求的LSA类型、Link State ID、Advertising Router | 通过收到LSU来确认 |
| LSU | 向对方发送其所需要的LSA,内容是一条或多条完整的LSA | LSA数量字段 + 具体LSA内容 | 显式确认(需要LSAck报文确认) |
| LSAck | 对收到的LSU报文进行确认,内容是需要确认的LSA的Header | 需要确认的LSA头部信息 | 确认报文本身不需再次确认 |
Hello报文详解:Hello报文是最常用的OSPF报文,用来建立和维护邻接关系,周期性在使能了OSPF的接口上发送。Hello报文中包含定时器数值、DR和BDR接口地址以及已知邻居Router ID等信息。
DD报文与隐式确认机制详解 :DD报文在两个路由器初始化邻接关系时用于交换,用来描述路由器的LSDB,包含LSDB中每个LSA的头部信息。当两台路由器交换DD报文时,其中一台作为主设备,另一台作为从设备。主设备决定初始序列号,每发送一个DD报文序列号加1,从设备必须使用主设备的序列号来确认收到的DD报文。这种不发送独立确认报文、而是从设备直接复制主设备序列号进行回应的机制,就是隐式确认------序列号由Master路由器决定,从设备只能使用Master设备发送来的序列号来发送自己的DD报文。通过序列号,主从设备确保了DD报文传输的可靠性和完整性。
LSU与显式确认机制详解 :LSU报文用来向对方发送其所需要的LSA。由于OSPF直接封装在IP报头内,而IP协议是一个无连接协议,基于无连接协议不能保证OSPF报文传输的可靠性,因此OSPF自身设计了一些可靠传输机制------确认和重传。LSU报文使用的就是显式确认:LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可以同时确认多个LSA。LSAck报文根据不同的链路以单播或组播的形式发送。
5.3 OSPF报文发送方式
| 报文类型 | 发送方式 |
|---|---|
| Hello报文 | 广播网络中以组播地址224.0.0.5发送;NBMA网络中以单播发送 |
| DD报文 | 广播网络中以单播发送 |
| LSR报文 | 广播网络中以单播发送 |
| LSU报文 | 组播方式发送 |
| LSAck报文 | 组播方式发送 |
OSPF采用两种组播地址:224.0.0.5 用于向所有OSPF路由器发送报文,224.0.0.6仅用于向DR和BDR发送报文。
5.4 OSPF报文确认机制总结
| 报文类型 | 确认方式 | 说明 |
|---|---|---|
| Hello | 隐式确认 | 通过邻居表中记录对方Router ID确认 |
| DD | 隐式确认 | 序列号机制,从设备复制主设备序列号回应 |
| LSR | 隐式确认 | 收到对端回复的LSU即可认为LSR已收到 |
| LSU | 显式确认 | 需要接收方回复LSAck进行确认 |
| LSAck | --- | 确认报文本身不需要再次确认 |
六、接口状态机
OSPF接口在广播/NBMA网络中有以下五种状态:
| 状态 | 含义 | 说明 |
|---|---|---|
| Down | 接口的初始状态,不可用 | 接口不传输OSPF数据包,不能用于收发流量 |
| Loopback | 设备到网络的接口处于回环状态 | 路由器自身环回接口,不能用于正常数据传输 |
| Waiting | 判定网络上的DR和BDR | 处于该状态时,设备不能被选举为DR或BDR;持续时间默认等于Dead Interval |
| P-2-P | 点对点连接 | 接口连接到物理点对点网络或虚拟链路 |
| DROther | 既不是DR也不是BDR | 接入广播/NBMA网络但未被选为DR或BDR的其他设备 |
| BDR | 备份指定路由器 | 在当前的DR失效时成为DR,与所有接入网络的设备形成邻接 |
| DR | 指定路由器 | 与接入该网络的所有其他设备形成邻接 |
Waiting状态详解:Waiting状态是广播/NBMA网络中一种防止频繁选举DR/BDR的保护机制。处于此状态时,设备不能参与DR/BDR选举。Waiting Timer默认等于Dead Interval(广播/P2P网络为40秒)。计时器超时后设备自行参与选举;若在此期间收到Hello报文确认网络中已有DR/BDR,则直接成为DROther。这一机制确保DR/BDR选举的稳定性和公平性,防止因路由器启动时间不同造成频繁选举。
七、DR和BDR选举
7.1 DR/BDR选举规则
DR/BDR选举仅在广播网络(Broadcast)或非广播多路访问网络(NBMA)中进行。选举规则如下:
- 接口DR优先级越高越优先(范围0-255,默认1)
- 优先级相同则Router ID越大越优先
- 优先级为0的路由器不参与选举,不能成为DR或BDR
7.2 DR/BDR的不可抢占性
重要 :OSPF DR/BDR的选举是不可抢占的。一旦选举出DR和BDR,新加入的路由器即使优先级更高,也不会抢占现有角色。这意味着修改DR优先级后,网络中的DR或BDR并不会立即改变。
如果需要重新进行DR或BDR选举,可以采用以下两种方法,但这会导致设备之间的OSPF邻接关系中断,一般情况下不推荐使用:
- 重启所有设备上的OSPF进程
- 在建立了OSPF邻居的接口上按照先后顺序执行shutdown和undo shutdown命令
DR/BDR故障处理:
- DR故障:BDR自动升级为DR,网络重新选举新的BDR
- BDR故障:DR保持角色不变,DROther中选举新的BDR
7.3 DR优先级配置
bash
# 设置接口在选举DR时的优先级为8
[Huawei-GigabitEthernet0/1/0] ospf dr-priority 8
7.4 OSPF组播地址与DR/BDR的关系
| 组播地址 | 用途 |
|---|---|
| 224.0.0.5(AllSPFRouters) | 所有OSPF路由器都侦听此地址,DROther向DR/BDR发送LSU时使用此地址 |
| 224.0.0.6(AllDRouters) | 仅DR和BDR侦听此地址,DR向所有路由器转发LSU时使用此地址 |
八、LSA链路状态通告
8.1 LSA更新机制
| 更新类型 | 触发条件 | 行为 |
|---|---|---|
| 周期性更新 | 每30分钟 | LSA老化周期超时后重新泛洪,刷新LSDB |
| 触发更新 | 链路/网络状态变化 | 立即发送携带更新信息的LSU报文 |
| LSA主动删除 | 路由被撤销 | 将LSA的Age字段置为3600秒,泛洪通知全网删除该LSA |
8.2 七大LSA类型
| 类型 | 名称 | 生成者 | 传播范围 | 主要内容 |
|---|---|---|---|---|
| Type 1 | Router LSA | 每台OSPF路由器 | 本区域内 | 路由器的链路状态信息、接口开销、邻居Router ID |
| Type 2 | Network LSA | DR(指定路由器) | 本区域内 | 广播网络中所有相连路由器的Router ID、子网掩码 |
| Type 3 | Summary LSA | ABR(区域边界路由器) | 区域间 | 区域间路由汇总信息 |
| Type 4 | ASBR-Summary LSA | ABR | 区域间 | ASBR的位置信息 |
| Type 5 | External LSA | ASBR | 整个AS | 外部网络路由(E1/E2类型) |
| Type 6 | Group Membership LSA | --- | --- | 用于组播OSPF(MOSPF)专用,被RFC声明为过时(Obsolete),当前绝大多数厂商设备已不支持 |
| Type 7 | NSSA External LSA | ASBR(在NSSA区域内) | NSSA区域 | NSSA区域中的外部路由,由被指定为转换角色的ABR转换为Type 5 LSA |
8.3 外部路由类型E1与E2
OSPF通过Type 5 LSA(External LSA)引入外部路由,根据Cost计算方式的不同,分为两种类型:
| 类型 | Cost计算方式 | 适用场景 |
|---|---|---|
| E1(Type 1 External) | 外部开销 + 本区域到ASBR的内部开销(逐跳累加) | 需要综合考虑全网路径质量时 |
| E2(Type 2 External) | 仅使用外部开销(固定值) | 希望外部路由Cost保持不变时 |
说明:E1路由的Cost = 外部通告的Cost + 到达ASBR的Cost(逐跳累加),E2路由的Cost = 外部通告的Cost(固定值)。缺省情况下,引入的外部路由为E2类型。
九、OSPF邻居状态机
OSPF共有8种邻居状态,状态变迁顺序从低到高为:Down → Attempt → Init → 2-way → Exstart → Exchange → Loading → Full。
9.1 各状态详解
| 状态 | 含义 | 说明 |
|---|---|---|
| Down | 邻居会话初始状态 | 未收到邻居的Hello报文,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello报文 |
| Attempt | 仅发生在NBMA网络中 | 表明对端在Dead Interval超时后仍然没有回复Hello报文,按Poll Interval周期向对端发送Hello |
| Init | 收到邻居Hello报文 | 邻居的Hello报文中尚未包含自己的Router ID,此时单向通信建立 |
| 2-Way | 双向通信建立 | 收到的Hello报文中包含有自己的Router ID,如果不需要形成邻接关系则状态停留于此 |
| Exstart | 协商主从关系 | 开始协商主从角色并确定DD报文的初始序列号 |
| Exchange | 交换DD报文 | 主从关系协商完毕后开始交换DD报文,描述各自的LSDB摘要 |
| Loading | 同步LSA | DD报文交换完成后,通过发送LSR请求缺失的LSA,并通过LSU/LSAck完成同步 |
| Full | 完全邻接状态 | LSR重传列表为空,LSDB完成同步,邻接关系完全建立 |
9.2 状态转换流程图
Down ──收到Hello报文(不包含自己RID)──→ Init ──收到包含自己RID的Hello报文──→ 2-Way
│
┌────────────────────────────┘
▼
ExStart(协商主从、确定序列号)
│
▼
Exchange(交换DD报文)
│
▼
Loading(发送LSR/LSU)
│
▼
Full
广播网络中的2-Way状态:在广播网络中,路由器只与DR和BDR建立FULL状态,与其他路由器仅保持在2-Way状态。因此,如果发现邻居状态一直为2-Way,请检查本设备和邻居是否都是DROther,若是,则邻居关系保持在2-Way是正常的。
9.3 邻居状态异常排查
华为官方排查步骤:
- 检查接口物理和协议状态 :确保接口UP且稳定,执行
display ospf interface查看接口状态 - 检查Router ID是否冲突 :执行
display ospf brief查看,确保RID全网唯一 - 检查区域ID是否一致:链路两端必须属于同一区域
- 检查Hello/Dead时间是否一致:广播/P2P网络默认为10秒/40秒,需确保两端相同
- 检查MTU是否一致:DD报文中携带接口MTU,两端MTU不一致可能导致邻居停滞在Exstart/Exchange状态
9.4 2-Way状态特殊排查
如果邻居状态一直为2-Way:
- 执行
display ospf interface命令,查看Pri字段(DR优先级)是否为0 - 如果Pri为0,则邻居状态一直为2-Way属正常状态
- 如果Pri不为0,执行
display ospf peer命令查看本端接口地址和邻居地址是否都不等于DR或BDR字段的值------如果都不等于,说明该OSPF邻居与本设备都是DROther,邻居关系保持在2-Way是正常的
十、OSPF防环机制
OSPF通过多种机制协同作用确保网络无环:
| 防环机制 | 实现方式 | 核心原理 |
|---|---|---|
| 骨干区域唯一性 | 骨干区域(Area 0)必须存在且连续,所有非骨干区域必须直连Area 0 | 以Area 0作为区域间路由交换的中枢,防止区域间路由环路 |
| 水平分割原则 | ABR不将非骨干区域的Type-3 LSA用于路由计算,也不回传至源区域 | 区域间路由不回传,消除环路可能 |
| SPF算法保证 | 基于完整LSDB运行Dijkstra算法 | 从根节点出发计算无环最短路径树,每台路由器独立计算 |
| LSA序列号机制 | 每个LSA携带递增序列号(范围:0x80000001~0x7FFFFFFF),序列号越大越新 | 确保最新LSA被采用,防止旧信息引起环路 |
| 区域间路由优先级 | 区域内路由 > 区域间路由 > 外部路由 | 优先选择可信度更高的路由路径 |
十一、OSPF区域类型
11.1 区域分类
| 区域类型 | 说明 | LSA类型限制 |
|---|---|---|
| 骨干区域(Area 0) | 核心区域,所有其他区域必须连接至此 | 允许所有类型的LSA,必须存在且连续 |
| 标准区域(非骨干) | 普通非骨干区域 | 允许所有类型的LSA,但需要连接到骨干区域 |
| Stub区域 | 末梢区域 | 不允许Type 4/5 LSA进入;区域内ABR会生成缺省的Type 3 LSA(目的地址0.0.0.0/0)以确保外部网络可达 |
| Totally Stub区域 | 完全末梢区域 | 不允许Type 3/4/5 LSA进入,ABR只向区域内发布一条缺省路由的Type 3 LSA,不生成任何其它Type 3 LSA |
| NSSA区域 | Not-So-Stubby Area,Stub区域的变形 | 允许引入少量外部路由(Type 7 LSA),不允许Type 5 LSA进入 |
11.2 各区域配置注意事项
| 区域类型 | 注意事项 |
|---|---|
| Stub区域 | 骨干区域不能配置成Stub区域;Stub区域内不能存在ASBR;虚连接不能穿过Stub区域;区域内所有设备都必须配置stub命令 |
| NSSA区域 | 允许引入外部路由,但不允许Type 5 LSA进入;ASBR生成Type 7 LSA,由被指定为转换角色的ABR(非ASBR)转换为Type 5 LSA发送到其他区域 |
11.3 Stub区域缺省路由机制详解
当将一个区域配置为Stub区域时,ABR(区域边界路由器)会向区域内自动通告一条缺省的Type 3 LSA(目的地址0.0.0.0/0),使得区域内非ABR设备可以通过这条缺省路由访问自治系统外部网络。该缺省路由的开销值可通过default-cost命令进行配置。
Stub区域与Totally Stub区域的区别:
- Stub区域:禁止Type 4和Type 5 LSA进入,允许Type 3 LSA(区域间路由)进入
- Totally Stub区域 :在ABR上配置
stub no-summary参数后,禁止除缺省Type 3 LSA之外的Type 3 LSA进入,区域内只保留一条缺省路由
配置示例:
bash
# 配置Stub区域(需在同一区域的所有路由器上执行)
[Huawei-ospf-1-area-0.0.0.1] stub
# 配置Totally Stub区域(只在ABR上配置no-summary参数)
[Huawei-ospf-1-area-0.0.0.1] stub no-summary
# 配置发送到Stub区域的缺省路由开销
[Huawei-ospf-1-area-0.0.0.1] default-cost 10
十二、OSPF度量值(Cost)计算方式
12.1 Cost的定义
OSPF使用Cost(链路开销)作为度量值来决定最优路径。Cost值通常与链路带宽成反比------带宽越大,Cost值越小,路径越优。
12.2 Cost的计算公式
OSPF接口开销值的计算公式为:
接口开销 = 带宽参考值 / 接口带宽,取计算结果的整数部分作为接口开销值。当计算结果小于1时取1。
- 带宽参考值 :通过
bandwidth-reference命令设置,缺省值为100 Mbit/s - 接口带宽:取决于物理链路,以bit/s为单位
- 整型Cost:Cost值是一个16位整数,范围1~65535
计算示例:
- 缺省带宽参考值(100 Mbit/s)下,Ethernet接口(100 Mbit/s)的Cost = 100 Mbit/s / 100 Mbit/s = 1
- 缺省带宽参考值(100 Mbit/s)下,GE接口(1000 Mbit/s)的Cost = 100 Mbit/s / 1000 Mbit/s = 0.1,取整后为1
- 若将带宽参考值调整为1000 Mbit/s,则GE接口的Cost = 1000 / 1000 = 1,FE接口的Cost = 1000 / 100 = 10
路径总开销:一条路由的总Cost等于路径上所有出接口的Cost值之和。
12.3 Cost的配置方式
OSPF接口的Cost值可以通过以下两种方式进行配置,且手动配置的优先级高于自动计算:
方式一:自动计算(缺省)
没有通过ospf cost命令手动配置接口开销时,OSPF会根据接口带宽自动计算Cost值。
方式二:手动配置
通过ospf cost命令为特定接口指定Cost值,手动配置的值将覆盖自动计算结果。
12.4 配置命令
bash
# 方式一:修改带宽参考值(影响进程内所有接口)
[Huawei] ospf 1
[Huawei-ospf-1] bandwidth-reference 1000 # 设置为1000 Mbit/s
# 方式二:手动指定接口Cost值
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] ospf cost 100 # 指定Cost为100
# 查看接口Cost信息
<Huawei> display ospf interface GigabitEthernet0/0/0
12.5 配置注意事项
在配置带宽参考值时,必须保证该OSPF进程中所有路由器的带宽参考值一致,否则可能导致路由选路不一致和网络震荡。带宽参考值配置成功后,进程内所有接口的带宽参考值都会随之改变。
十三、OSPF网络设计关键要点
13.1 区域划分原则
- 骨干区域(Area 0 / Area 0.0.0.0)必须存在且连续
- 所有非骨干区域必须直连Area 0
- 划分区域的目的是减少LSDB规模、限制LSA传播范围,提高网络稳定性
- 一个网段(链路)只能属于一个区域,每个运行OSPF的接口必须指明所属区域
13.2 设备数量规划
OSPF协议的RFC 2328中并没有规定单区域路由器数量的具体上限。华为官方指出,"OSPF is applicable to large-scale networks with hundreds of routers"(OSPF适用于由数百台路由器组成的大型网络)。具体数量受网络拓扑稳定性、链路质量、设备CPU/内存等多种因素影响,设计时应综合考虑。当网络中路由器数量增多时,建议将网络划分为多个区域以减小LSDB规模和控制LSA传播范围。
13.3 推荐实践
华为官方设计原则:
- RID设计:在实际网络部署中,部署OSPF的首要任务是设计和部署Router ID。在大多数情况下,可以使用适当的私有IP地址段来设计Router ID
- 分层网络架构:为获得分层的OSPF网络,可以将出口路由器和核心交换机部署在Area 0,并根据地理位置设计非骨干区域
- ABR设计:ABR是区域间路由交换的核心,如果连接的区域过多,可能影响性能,需合理规划ABR连接的区域数量
十四、OSPF基本配置命令
14.1 使能OSPF
bash
# 进入系统视图
<Huawei> system-view
# 创建OSPF进程(进程号默认1)
[Huawei] ospf 1 router-id 1.1.1.1
# 创建区域
[Huawei-ospf-1] area 0
# 宣告接口所属网段
[Huawei-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
14.2 接口下直接使能OSPF(推荐方式)
bash
# 在接口视图下直接使能OSPF
[Huawei-GigabitEthernet0/0/0] ospf enable 1 area 0
14.3 修改接口网络类型
bash
# 查看当前接口OSPF网络类型
<Huawei> display ospf interface GigabitEthernet0/0/0
# 修改接口网络类型
[Huawei-GigabitEthernet0/0/0] ospf network-type broadcast
[Huawei-GigabitEthernet0/0/0] ospf network-type p2p
[Huawei-GigabitEthernet0/0/0] ospf network-type nbma
[Huawei-GigabitEthernet0/0/0] ospf network-type p2mp
14.4 配置接口OSPF优先级
bash
# 设置接口在选举DR时的优先级为100
[Huawei-GigabitEthernet0/0/0] ospf dr-priority 100
14.5 配置特殊区域
bash
# 配置Stub区域(需在同一区域的所有路由器上执行)
[Huawei-ospf-1-area-0.0.0.1] stub
# 配置Totally Stub区域(只在ABR上配置no-summary参数)
[Huawei-ospf-1-area-0.0.0.1] stub no-summary
# 配置NSSA区域
[Huawei-ospf-1-area-0.0.0.1] nssa
14.6 配置Cost相关参数
bash
# 修改带宽参考值(需保证进程内所有路由器一致)
[Huawei-ospf-1] bandwidth-reference 1000
# 手动指定接口Cost
[Huawei-GigabitEthernet0/0/0] ospf cost 100
14.7 查看OSPF运行状态命令汇总
bash
# 查看OSPF进程概要信息
<Huawei> display ospf brief
# 查看OSPF邻居状态
<Huawei> display ospf peer
<Huawei> display ospf peer brief
# 查看OSPF接口信息
<Huawei> display ospf interface
# 查看链路状态数据库
<Huawei> display ospf lsdb
# 查看OSPF路由表
<Huawei> display ospf routing
十五、OSPF的可靠性增强机制------GR(Graceful Restart,平滑重启)
15.1 GR概述
GR(Graceful Restart)又被称为平滑重启,是一种用于保证路由协议重启时数据能够正常转发、不影响关键业务的高可靠性技术。GR目前已被广泛使用在主备切换和系统升级场景,以保证关键业务流量的不间断转发。
15.2 GR的工作原理
GR的核心思想是:当GR Restarter(执行GR操作的路由器)重启时,在重启前通知邻居进入GR Helper模式;邻居在重启期间继续保持邻接关系,并将去往Restarter的流量正常转发;待Restarter完成重启并与Helper重新同步LSDB后,恢复正常的OSPF邻接关系。GR机制能够将OSPF进程重启对业务的影响降至最低,提升网络的整体可用性。
15.3 GR的关键参数与命令
| 参数 | 说明 |
|---|---|
| GR Restarter | 执行GR操作的路由器,主动发起平滑重启 |
| GR Helper | 协助GR Restarter保持邻接关系的邻居路由器 |
| GR Period | GR持续时间,整数形式,取值范围是1~1800秒,缺省值为120秒 |
| Planned GR / Unplanned GR | 缺省情况下,设备同时支持Planned GR和Unplanned GR两种模式。参数planned-only指定设备仅支持Planned GR |
| Opaque LSA(Type 9) | OSPF通过Type 9 LSA支持OSPF GR功能,需通过opaque-capability enable使能 |
15.4 GR配置示例
bash
# 使能Opaque LSA能力(配置GR的前置条件)
[Huawei] ospf 1
[Huawei-ospf-1] opaque-capability enable
# 使能GR能力
[Huawei-ospf-1] graceful-restart
# 配置IETF模式下Helper端GR的会话参数
[Huawei-ospf-1] graceful-restart helper-role
# 使能Non-IETF模式下Helper端GR会话
[Huawei-ospf-1] graceful-restart non-ietf
# 配置GR Period为180秒
[Huawei-ospf-1] graceful-restart period 180
# 指定设备仅支持Planned GR
[Huawei-ospf-1] graceful-restart helper-role planned-only
15.5 Planned GR与Unplanned GR
| GR类型 | 说明 |
|---|---|
| Planned GR | 管理员主动执行重启操作(如reset ospf process graceful-restart),设备提前通知邻居进入Helper模式 |
| Unplanned GR | 设备因故障等原因被动重启,无法提前通知邻居,邻居通过超时检测后承担Helper角色 |
声明:本文档主要基于华为官方技术文档和RFC标准进行编写,具体部署和故障排查请以华为官方最新发布的产品文档为准。本文内容仅供参考学习,实际网络部署时应结合具体设备型号和软件版本进行验证。