跳到主要内容

5.1.3. NEXT_HOP

5.1.3. NEXT_HOP

NEXT_HOP 是 well-known mandatory attribute, 定义到 UPDATE message 中列出的 destination 时 SHOULD 用作 next hop 的 router IP address. NEXT_HOP attribute 按如下方式计算:

  1. 当 message 发送给 internal peer 且 route 不是本地创建时, BGP speaker SHOULD NOT 修改 NEXT_HOP attribute, 除非它被显式配置为将自己的 IP address 通告为 NEXT_HOP. 当本地创建的 route 通告给 internal peer 时, BGP speaker SHOULD 使用到达所通告 network 时对该 speaker 可达的 router interface address 作为 NEXT_HOP. 如果该 route 直接连接到 speaker, 或者到达所通告 network 时对该 speaker 可达的 router interface address 是 internal peer 的 address, 则 BGP speaker SHOULD 使用自己的 IP address 作为 NEXT_HOP attribute (即用于到达该 peer 的 interface address).

  2. 当 message 发送给 external peer X, 且该 peer 距 speaker 一个 IP hop 时:

    • 如果所通告 route 是从 internal peer 学到或本地创建的, BGP speaker 可以使用 internal peer router (或 internal router) 的 interface address 作为 NEXT_HOP attribute, 该 router 是所通告 network 对该 speaker 可达所经由的 router, 前提是 peer X 与该 address 共享同一 subnet. 这是 "Third Party" NEXT_HOP attribute 的一种形式.

    • 否则, 如果所通告 route 是从 external peer 学到的, speaker 可以在 NEXT_HOP attribute 中使用任意相邻 router 的 IP address (从接收的 NEXT_HOP attribute 得知), 且该 router 是 speaker 自身用于本地 route calculation 的 router, 前提是 peer X 与该 address 共享同一 subnet. 这是 "Third Party" NEXT_HOP attribute 的第二种形式.

    • 否则, 如果接收 route 通告的 external peer 与通告 BGP speaker 的某个 interface 共享同一 subnet, speaker MAY 在 NEXT_HOP attribute 中使用与该 interface 关联的 IP address. 这称为 "First Party" NEXT_HOP attribute.

    • 默认情况下 (如果上述条件均不适用), BGP speaker SHOULD 在 NEXT_HOP attribute 中使用该 speaker 用于建立到 peer X 的 BGP connection 的 interface IP address.

  3. 当 message 发送给 external peer X, 且该 peer 距 speaker 多个 IP hop 时 (也称为 "Multihop EBGP"):

    • speaker MAY 被配置为传播 NEXT_HOP attribute. 在这种情况下, 当通告 speaker 从其某个 peer 学到的 route 时, 所通告 route 的 NEXT_HOP attribute 与所学 route 的 NEXT_HOP attribute 完全相同 (speaker 不修改 NEXT_HOP attribute).

    • 默认情况下, BGP speaker SHOULD 在 NEXT_HOP attribute 中使用 speaker 用于建立到 peer X 的 BGP connection 的 interface IP address.

通常选择 NEXT_HOP attribute 以使用可用的最短 path. 为处理 imperfectly bridged media, BGP speaker MUST 能够支持禁用 Third Party NEXT_HOP attribute 的通告.

BGP speaker 创建的 route SHALL NOT 使用该 peer 的 address 作为 NEXT_HOP 通告给该 peer. BGP speaker SHALL NOT 安装以自己作为 next hop 的 route.

NEXT_HOP attribute 由 BGP speaker 用于确定实际 outgoing interface 和 immediate next-hop address, 它们 SHOULD 用于将 transit packet 转发到相关 destination.

immediate next-hop address 通过对 NEXT_HOP attribute 中的 IP address 执行 recursive route lookup operation 来确定, 该操作使用 Routing Table 内容, 并在存在多个 equal-cost entry 时选择其中一个. 解析 NEXT_HOP attribute 中 IP address 的 Routing Table entry 始终指示 outgoing interface. 如果该 entry 指示 connected subnet 但不指示 next-hop address, 则 SHOULD 使用 NEXT_HOP attribute 中的 address 作为 immediate next-hop address. 如果该 entry 也指示 next-hop address, 则 SHOULD 使用该 address 作为 packet forwarding 的 immediate next-hop address.