OSPF 最佳实践

Router ID

  • 使用 router-id 命令为指定进程手动指定 router-id。
  • 如果 router-id 需要路由可达,配置具有相同 IP 地址的 loopback 接口,并将其宣告在 OSPF 进程下。
  • 在本区域的地址空间中选择一个地址作为 router-id 及 loopback 接口,便于路由发布;或者全网使用单独的网段来配置 router-id
  • 如果其他协议或者功能等需要使用 loopback 接口,尽量使用新的地址

Process ID

OSPF process id 是本地有效的,用来区分不同的 OSPF 进程,但是仍然建议在单进程的情况下全网配置保持一致,这样有利于自动化配置。

认证

邻居路由器两端接口的验证模式必须一致,如果设置了密钥,需要保证密钥一致,认证分为接口认证和区域认证两种。

参考配置:

1
2
3
4
5
6
7
# 区域认证
ospf 1 router-id 1.1.1.1
area 0
authentication-mode md5 1 plain area0-auth
# 接口认证
interface GigabitEthernet1/0/1
ospf authentication-mode md5 1 plain interface-auth

建议为每个邻居设置不同的验证口令。

接口

  • 如果要使 OSPF 路由信息不被某一网络中的路由器获得,可以禁止接口收发 OSPF 报文,然后再按需启用。

    参考配置:

    1
    2
    3
    ospf 1 router-id 1.1.1.1
    silent-interface all
    undo silent-interface GigabitEthernet1/0/1
  • 如果在广播网络中(如以太网)中只有两个邻居,并且不会添加其他邻居,建议将这两个邻居的接口配置为 P2P 网络类型。

    参考配置:

    1
    2
    interface GigabitEthernet1/0/1
    ospf network-type p2p
  • 如果在广播网络中(如以太网)中有多个邻居,建议通过优先级指定 DR 和 BDR。

    参考配置:

    1
    2
    interface GigabitEthernet1/0/1
    ospf dr-priority 100
  • 宣告路由时,建议宣告精确的网络,如互联接口地址使用 30 位掩码。

  • 调整 OSPF 开销计算参考带宽为当前网络环境中的最高带宽,而不是使用默认的 100Mbps(10^8)且保证全网一致。

    参考配置:

    1
    2
    3
    # 默认单位为 Mbits/s
    ospf 1 router-id 1.1.1.1
    bandwidth-reference 100000

区域

  • 骨干区域使用高性能的设备。

  • 骨干区域使用冗余的物理链路进行连接以防止骨干区域不连续(建立多个骨干区域邻居关系)。

  • 如果无法保证骨干区域物理链路冗余,可以使用虚连接(最好不要使用)。

  • 在有冗余链路的情况下,建议在骨干区域中宣告 loopback 接口,防止骨干路由器断开时,ABR 的状态发生变化从而造成流量路径的变化。

  • 合理规划特殊区域(Stub、Totally Stub、NSSA、Totally NSSA)以减少路由条目。

路由引入

路由引入也称为路由重分发。

  • 避免在多个节点相互进行路由引入;如果出现这种情况,使用前缀列表和标签的方式控制路由,以避免将相同的路由条目发回源域
  • 使用路由策略引入路由,即使是静态路由、直连路由

聚合

聚合路由,也称为汇总路由,路由汇总等。

  • 建议手动设置聚合路由的开销值,以防止开销值因区域内的网络变化而改变。

  • 配置区域间路由聚合

    OSPF 区域间路由聚合是指 ABR 将具有相同前缀的路由信息聚合,只发布一条路由到其它区域,这样可以减少路由信息,减小路由表的规模,提高路由器的运算速度。

    参考配置:

    1
    2
    3
    4
    5
    6
    7
    ospf 1 router-id 1.1.1.1
    area 0
    # 宣告本区域网段
    network 10.1.1.0 0.0.0.255
    network 10.1.2.0 0.0.0.255
    # 聚合本区域路由
    abr-summary 10.1.0.0 16
  • 配置外部路由聚合

    ASBR 引入外部路由后,每一条路由都会放在单独的一条 Type-5 LSA 中向外宣告,在 ASBR 上配置路由聚合后,将对聚合地址范围内的 Type-5 LSA 进行聚合;如果 ASBR 在 NSSA 区域里面,将对聚合地址范围内的 Type-7 LSA 进行聚合。

    参考配置:

    1
    2
    3
    4
    5
    6
    7
    8
    # 外部路由
    ip route-static 100.64.1.0 24 12.1.1.1
    ip route-static 100.64.2.0 24 13.1.1.1
    ospf 1 router-id 1.1.1.1
    # 引入外部路由
    import-route static
    # 对外部路由进行聚合
    asbr-summary 100.64.0.0 16
  • 建议为 OSPF 区域划分多个 ABR 以实现冗余,但应该保证数量合理(2~4)以限制域内汇总 LSA 的数量。

  • 如果一个区域内部有多个 ABR,应该该区域中的所有 ABR 上配置相同掩码长度的聚合路由。

  • 为聚合的地址段配置指向 NULL0 的黑洞路由,以避免在某些情况下出现路由环路。

    参考配置:

    1
    2
    ip route-static 100.64.0.0 16 null 0
    ip route-static 10.1.0.0 16 null 0

    注:在一些新的设备上面,会默认产生引入聚合 NULL0 路由和区域间聚合 NULL0 路由,且 NULL0 路由优先级为 255,如下:

    image-20220410193127230

快速收敛

  • 调整接口物理类型为 P2P

  • 调整 Hello/Dead 时间为 1s / 4s

  • 调整 OSPF 路由计算时间间隔(网络变化不频繁的情况下调小,否则会占用大量系统资源)

    参考配置:

    1
    2
    3
    ospf 1 router-id 1.1.1.1
    # 单位为毫秒,默认为最大为 5 秒,最小为 50 ms,惩罚值为 200ms
    spf-schedule-interval 50 50 100
  • 开启增量最短路径优先算法,对OSPF中最短路径树的增量计算,默认开启

    参考配置:

    1
    2
    ospf 1 router-id 1.1.1.1
    ispf enable
  • 配置与 BFD 联动,下层链路出现故障时 BFD 能够快速感知并通告给 OSPF 协议

    参考配置:

    1
    2
    3
    4
    5
    interface GigabitEthernet1/0/1
    ospf bfd enable
    bfd min-transmit-interval 500
    bfd min-receive-interval 500
    bfd detect-multiplier 6