Skip to main content

15. Virtual Links (虚拟链路)

虚拟链路是 OSPF 中的特殊机制,用于连接物理上不直接与骨干区域(Area 0)相连的区域边界路由器(ABR)到骨干区域。


章节概述 (Chapter Overview)

核心概念

  • 虚拟链路提供逻辑连接到骨干区域
  • 通过传输区域(Transit Area)建立
  • 允许非骨干区域通过另一个区域连接到骨干

定义

虚拟链路 (Virtual Link)

  • 逻辑的点到点链路
  • 连接两个 ABR
  • 穿越传输区域
  • 视为属于骨干区域(Area 0)

使用场景

场景 1:分区的骨干区域

  • 骨干区域因故障分成多个分区
  • 使用虚拟链路重新连接骨干

场景 2:新区域连接

  • 新区域无法直接连接到骨干
  • 通过虚拟链路间接连接

配置参数

参数说明
Transit Area ID传输区域的 Area ID
Virtual Neighbor Router ID虚拟链路另一端的 Router ID
HelloIntervalHello 间隔(默认 10 秒)
RouterDeadInterval死亡间隔(默认 40 秒)
RxmtInterval重传间隔(默认 5 秒)
Authentication认证类型和密钥

配置约束

传输区域要求

  • 必须是正常区域(不能是末梢区域)
  • 必须启用了区域内路由
  • 两个端点都必须是该区域的 ABR

对称配置

  • 虚拟链路两端必须配置相同
  • Transit Area ID 必须匹配
  • Router ID 必须互相指向对方

建立过程

步骤 1:发现虚拟邻居

  • 在传输区域运行 SPF
  • 计算到虚拟邻居的路径
  • 验证虚拟邻居可达

步骤 2:建立邻接

  • 通过传输区域发送 Hello 包
  • 使用单播到虚拟邻居的 IP 地址
  • 建立 Full 邻接关系

步骤 3:交换 LSA

  • 交换骨干区域的 LSA
  • 泛洪骨干区域的更新
  • 同步链路状态数据库

数据包传输

封装

  • OSPF 包封装在 IP 包中
  • 源地址:本地端 ABR 接口地址
  • 目的地址:虚拟邻居 IP 地址
  • 通过传输区域的常规路由转发

TTL 设置

  • 不设置 TTL=1
  • 允许多跳传输

15.4 虚拟链路路由计算 (Routing Calculation)

传输区域 SPF

虚拟链路代价计算

  1. 在传输区域运行 SPF
  2. 计算到虚拟邻居的区域内代价
  3. 虚拟链路代价 = 区域内代价

可达性检查

  • 虚拟邻居必须在 SPF 树中
  • 虚拟邻居必须是 ABR(B-bit 设置)
  • 必须有区域内路径

骨干 SPF

虚拟链路作为骨干链路

  • 虚拟链路参与骨干区域 SPF
  • 代价使用传输区域计算的值
  • 视为点到点链路

接口特性

接口类型

  • Type = Virtual Link
  • Area = 0.0.0.0(骨干区域)
  • State = Point-to-Point

接口地址

  • 使用传输区域中连接虚拟邻居的接口地址
  • 没有独立的 IP 地址

邻居状态

虚拟邻居

  • State: 从 Down → Full
  • IP Address: 从传输区域路由获取
  • Inactivity Timer: RouterDeadInterval

15.6 虚拟链路 Hello 协议 (Hello Protocol)

Hello 包发送

发送规则

  • 每 HelloInterval 发送一次
  • 单播到虚拟邻居
  • 通过传输区域路由

Hello 包内容

  • Router ID: 本地路由器
  • Area ID: 0.0.0.0(骨干)
  • Network Mask: 0.0.0.0(虚拟链路)
  • Options: E-bit 设置

Hello 包接收

接收验证

  • Area ID = 0.0.0.0
  • Network Mask = 0.0.0.0
  • Router ID 匹配配置

邻居维护

  • 重置 Inactivity Timer
  • 更新邻居状态
  • 检测双向通信

15.7 虚拟链路 LSA 处理 (LSA Processing)

泛洪范围

通过虚拟链路泛洪的 LSA

  • Router-LSA (Type 1) - 骨干区域
  • Network-LSA (Type 2) - 骨干区域
  • Summary-LSA (Type 3, 4) - 骨干区域
  • AS-external-LSA (Type 5) - 如果骨干非末梢

不通过虚拟链路泛洪

  • 传输区域的 Type 1, 2 LSA
  • 其他非骨干区域的 LSA

LSA 确认

通过虚拟链路确认

  • 使用 LS Acknowledge 包
  • 单播到虚拟邻居
  • 可靠传输机制

拓扑示例

Area 0 (Backbone)
|
R1 (ABR)
|
Area 1 (Transit Area)
|
R2 (ABR) -------- Virtual Link -------- R3 (ABR)
| |
Area 2 Area 3

配置示例

R2 配置

Virtual Link:
Transit Area: 1
Virtual Neighbor: R3 Router ID
HelloInterval: 10
RouterDeadInterval: 40

R3 配置

Virtual Link:
Transit Area: 1
Virtual Neighbor: R2 Router ID
HelloInterval: 10
RouterDeadInterval: 40

工作流程

  1. R2 和 R3 在 Area 1 中运行 SPF

    • 计算彼此的区域内路径
  2. 建立虚拟邻接

    • R2 → R3: Hello(单播)
    • R3 → R2: Hello(单播)
    • 邻接状态 → Full
  3. 交换骨干 LSA

    • R2 和 R3 交换 Area 0 的 LSA
    • 同步骨干区域数据库
  4. Area 3 连接到骨干

    • R3 通过虚拟链路到达骨干
    • Area 3 的路由通告到骨干

15.9 虚拟链路故障处理 (Failure Handling)

故障检测

虚拟邻居不可达

  • 传输区域 SPF 中无路径
  • 邻居状态 → Down
  • 删除虚拟邻接

Hello 超时

  • RouterDeadInterval 内未收到 Hello
  • 邻居状态 → Down

故障恢复

路径恢复

  • 传输区域路径恢复
  • 重新计算虚拟链路代价
  • 重新建立邻接

自动重连

  • 检测到邻居可达
  • 发送 Hello 重建邻接

15.10 虚拟链路与认证 (Authentication)

认证配置

虚拟链路特定认证

  • 可以与传输区域不同
  • 独立配置认证类型
  • 独立配置认证密钥

认证类型

  • Null Authentication(无认证)
  • Simple Password(简单密码)
  • Cryptographic Authentication(加密认证)

认证处理

Hello 包认证

  • 按照配置的认证类型
  • 使用虚拟链路密钥
  • 验证失败丢弃包

15.11 设计考虑 (Design Considerations)

虚拟链路最佳实践

使用场景

  • 临时解决方案(网络重组期间)
  • 避免长期依赖虚拟链路
  • 优先规划物理骨干连接

性能影响

  • 虚拟链路增加路由计算复杂度
  • 传输区域故障影响骨干连接
  • 额外的 LSA 泛洪延迟

传输区域选择

理想的传输区域

  • 稳定可靠
  • 低延迟
  • 充足带宽
  • 不是末梢区域

避免

  • 不稳定的区域
  • 多跳虚拟链路
  • 链式虚拟链路

15.12 虚拟链路限制 (Limitations)

拓扑限制

不支持的配置

  • 末梢区域作为传输区域
  • NSSA 作为传输区域(某些情况)
  • 虚拟链路的虚拟链路(嵌套)

功能限制

限制

  • 不支持广播
  • 不支持多路访问
  • 仅支持单播
  • 不能承载数据流量(仅 OSPF)

技术要点总结 (Technical Summary)

关键概念

  1. 虚拟链路是逻辑连接

    • 穿越传输区域
    • 属于骨干区域
    • 点到点类型
  2. 依赖传输区域

    • 通过传输区域路由
    • 代价从传输区域计算
    • 传输区域必须稳定
  3. 临时解决方案

    • 用于网络过渡
    • 不应长期依赖
    • 有性能影响

实现要点

配置管理

  • 对称配置验证
  • 传输区域检查
  • ABR 验证

状态维护

  • 虚拟邻居可达性监控
  • Hello 协议实现
  • 故障快速检测

路由计算

  • 传输区域 SPF
  • 虚拟链路代价计算
  • 骨干 SPF 集成

┌─────────┐
│ Down │ ← 初始状态
└────┬────┘
│ 虚拟邻居可达

┌─────────┐
│ Init │ ← 收到 Hello
└────┬────┘
│ 双向通信

┌─────────┐
│2-Way │ ← 开始邻接
└────┬────┘


┌─────────┐
│ExStart │ ← 协商主从
└────┬────┘


┌─────────┐
│Exchange │ ← 交换 DBD
└────┬────┘


┌─────────┐
│Loading │ ← 请求 LSA
└────┬────┘
│ 数据库同步

┌─────────┐
│ Full │ ← 完全邻接
└────┬────┘
│ 故障

Down

参考资料 (References)


注意 (Note):虚拟链路是强大但应谨慎使用的功能。它增加了网络复杂度和故障点。在可能的情况下,应该设计网络拓扑使所有区域都能直接物理连接到骨干区域。