Skip to main content

5. 路由实现考虑 (Routing Implementation Considerations)

本节讨论与CIDR相关的路由实现的各个方面,包括路由协议要求、转发机制和运营考虑。

5.1. 路由协议支持 (Routing Protocol Support)

CIDR的成功部署需要路由协议能够承载可变长度前缀信息。以下是支持CIDR的主要路由协议:

5.1.1. 外部网关协议 (Exterior Gateway Protocols)

  • BGP-4 (Border Gateway Protocol version 4) [RFC4271]: 互联网的主要域间路由协议,完全支持CIDR并能够承载任意长度的前缀。BGP-4的关键特性包括:
    • 携带前缀长度信息的能力
    • 支持路由聚合
    • 灵活的策略控制机制
    • 路径属性用于流量工程

5.1.2. 内部网关协议 (Interior Gateway Protocols)

支持CIDR的IGP包括:

  • OSPF (Open Shortest Path First) [RFC2328]: 支持可变长度子网掩码 (VLSM) 和路由汇总。
  • IS-IS (Intermediate System to Intermediate System) [RFC1195]: 支持VLSM和灵活的路由汇总。
  • RIPv2 (Routing Information Protocol version 2) [RFC2453]: 扩展了RIP以支持VLSM和CIDR。
  • EIGRP (Enhanced Interior Gateway Routing Protocol): Cisco专有协议,支持VLSM和自动汇总。

5.1.3. 遗留协议限制 (Legacy Protocol Limitations)

不支持CIDR的旧协议包括:

  • RIPv1: 仅支持有类路由 (Classful Routing),不能承载子网掩码信息。
  • EGP (Exterior Gateway Protocol) [RFC904]: 仅支持有类网络号。

这些遗留协议在现代互联网中已被淘汰或严格限制在不需要CIDR功能的遗留环境中。

5.2. 最长前缀匹配 (Longest Prefix Match)

CIDR要求路由器使用最长前缀匹配 (Longest Prefix Match, LPM) 算法进行转发决策。给定一个目标地址和一组可能匹配的前缀,路由器必须选择具有最多特定位 (即最长前缀长度) 的前缀。

5.2.1. LPM算法 (LPM Algorithms)

各种算法已被开发用于高效实现LPM:

  • Trie-based Algorithms: 使用树结构进行快速查找。
  • TCAM (Ternary Content Addressable Memory): 硬件实现允许并行匹配。
  • Hash-based Algorithms: 用于软件路由器的高效哈希表实现。

5.2.2. LPM示例 (LPM Examples)

考虑以下路由表条目:

10.0.0.0/8     → 接口 A
10.1.0.0/16 → 接口 B
10.1.1.0/24 → 接口 C
192.168.0.0/16 → 接口 D

对于不同的目标地址:

  • 10.2.3.4 匹配 10.0.0.0/8 → 转发到接口 A
  • 10.1.2.3 匹配 10.0.0.0/8 和 10.1.0.0/16,选择更长的 → 转发到接口 B
  • 10.1.1.5 匹配所有三个前缀,选择最长的 10.1.1.0/24 → 转发到接口 C
  • 192.168.1.1 匹配 192.168.0.0/16 → 转发到接口 D

5.3. 路由表管理 (Routing Table Management)

CIDR显著影响路由表管理的各个方面:

5.3.1. 内存要求 (Memory Requirements)

  • 增加的表大小 (Increased Table Size): 虽然CIDR通过聚合减少了条目数,但路由器必须能够存储可变长度的前缀和相关的掩码。
  • 数据结构 (Data Structures): 高效的数据结构 (如Patricia tries或radix trees) 对于管理大型路由表至关重要。

5.3.2. 更新处理 (Update Processing)

  • 增量更新 (Incremental Updates): BGP-4允许仅发送已更改的路由,减少了更新流量。
  • 路由振荡 (Route Flapping): 频繁的路由更新可能导致不稳定; 路由阻尼 (Route Dampening) 机制可以减轻这种情况。

5.3.3. 查找性能 (Lookup Performance)

  • 硬件加速 (Hardware Acceleration): 现代路由器使用专用硬件 (ASIC, TCAM) 以线速执行LPM查找。
  • 软件优化 (Software Optimization): 软件路由器使用优化的算法和数据结构来最小化查找时间。

5.4. 默认路由的使用 (Use of Default Routes)

CIDR环境中,默认路由 (0.0.0.0/0) 的使用对于减少边缘路由器的路由表大小至关重要:

  • 客户路由器 (Customer Routers): 通常配置指向其ISP的默认路由,而不是接收完整的全局路由表。
  • ISP边缘路由器 (ISP Edge Routers): 可能使用部分路由表加默认路由的组合。
  • 核心路由器 (Core Routers): 通常需要完整的路由表以进行最佳路径选择。

5.5. 路由聚合的操作问题 (Operational Issues with Route Aggregation)

虽然聚合对于可扩展性至关重要,但它也引入了一些操作挑战:

5.5.1. 黑洞路由 (Black Hole Routing)

当聚合前缀被广告但其某些组件前缀不可达时,可能会发生黑洞路由:

  • 问题 (Problem): 流量被转发到广告聚合的路由器,但该路由器无法到达特定的目标。
  • 解决方案 (Solution): 广告聚合的路由器必须具有到所有组件前缀的路由,或者必须配置为丢弃无法路由的流量。

5.5.2. 路由泄漏 (Route Leaks)

不正确的聚合或过滤配置可能导致路由泄漏:

  • 上行泄漏 (Upward Leak): 将更特定的客户路由泄漏到对等方或上游提供商。
  • 下行泄漏 (Downward Leak): 将上游或对等路由泄漏给客户。

5.5.3. 流量工程限制 (Traffic Engineering Limitations)

聚合可能限制流量工程的灵活性:

  • 粒度 (Granularity): 高度聚合的前缀提供较少的流量控制粒度。
  • 权衡 (Trade-offs): ISP必须在路由表大小和流量工程能力之间取得平衡。

5.6. 路由器配置最佳实践 (Router Configuration Best Practices)

为了支持CIDR并维护可扩展的路由系统,推荐以下配置实践:

5.6.1. 聚合配置 (Aggregation Configuration)

  • 在适当的边界配置聚合 (例如,向上游提供商广告的点)。
  • 使用静态聚合或BGP聚合功能。
  • 确保到所有组件前缀的路由在进行聚合之前存在。

5.6.2. 过滤配置 (Filter Configuration)

  • 实施入站和出站前缀过滤器。
  • 拒绝超过最大可接受长度的前缀 (例如,/24 用于全局路由)。
  • 过滤掉bogon和保留的地址空间。

5.6.3. BGP配置 (BGP Configuration)

  • 配置适当的BGP策略以控制路由传播。
  • 使用路由映射 (Route Maps) 或策略语言进行细粒度控制。
  • 实施路由阻尼以减少路由振荡的影响。

5.6.4. 监控和故障排除 (Monitoring and Troubleshooting)

  • 监控路由表大小和增长率。
  • 跟踪路由更新频率和聚合效率。
  • 使用工具如traceroute和BGP looking glasses进行故障排除。

5.7. IPv4和IPv6共存 (IPv4 and IPv6 Coexistence)

虽然本文档主要关注IPv4 CIDR,但值得注意的是,许多CIDR概念直接应用于IPv6:

  • 更大的地址空间 (Larger Address Space): IPv6的128位地址空间允许更灵活的层次结构分配。
  • 强制聚合 (Mandatory Aggregation): IPv6分配策略强调聚合以避免IPv4的路由扩展问题。
  • 双栈环境 (Dual-Stack Environments): 路由器必须同时管理IPv4和IPv6路由表,每个都有自己的聚合策略。