跳到主要内容

4. 操作 (Operations)

4.1. NEW BGP Speaker 之间的交互 (Interaction between NEW BGP Speakers)

支持四字节 AS 号的 BGP speaker SHALL 使用 BGP Capabilities Advertisements 向其对等体通告这一能力. 该 BGP speaker 的 AS 号 MUST 承载在 "support for four-octet AS number capability" 的 Capability Value 字段中.

当 NEW BGP speaker 处理来自另一个 NEW BGP speaker 的 OPEN 消息时, 它 MUST 使用 "support for four-octet AS number capability" 的 Capability Value 字段中编码的 AS 号, 代替 OPEN 消息的 "My Autonomous System" 字段.

如果一个 BGP speaker 向某个特定对等体通告了此能力, 并且也从该对等体接收到此能力通告, 则它在发送给该对等体的更新中, MUST 在 AS_PATH 属性和 AGGREGATOR 属性内将 AS 号编码为四字节实体, 并且 MUST 假定从该对等体接收的更新中这些属性也以四字节实体编码 AS 号.

新的属性 AS4_PATH 和 AS4_AGGREGATOR MUST NOT 在 NEW BGP speaker 之间的 UPDATE 消息中承载. 如果 NEW BGP speaker 在来自另一个 NEW BGP speaker 的 UPDATE 消息中收到 AS4_PATH 属性或 AS4_AGGREGATOR 属性, 它 MUST 丢弃该路径属性并继续处理 UPDATE 消息.

4.2. NEW 与 OLD BGP Speaker 之间的交互 (Interaction between NEW and OLD BGP Speakers)

4.2.1. BGP 对等 (BGP Peering)

请注意, 只有当 NEW BGP speaker 具有二字节 AS 号时, NEW BGP speaker 与 OLD BGP speaker 之间才可能建立对等关系. 但是, 本文档并不假定包含 NEW BGP speaker 的 Autonomous System 必须具有全局唯一的二字节 AS 号: 当 NEW BGP speaker 没有二字节 AS 号时, MUST 使用 AS_TRANS (即使多个 Autonomous System 会使用它).

4.2.2. 生成更新 (Generating Updates)

与 OLD BGP speaker 通信时, NEW BGP speaker MUST 在 AS_PATH 属性中发送以二字节 AS 号编码的 AS 路径信息. NEW BGP speaker 还 MUST 在 AS4_PATH 属性中发送 AS 路径信息 (以四字节 AS 号编码), 除非所有 AS 路径信息都仅由可映射的四字节 AS 号组成. 在这种情况下, NEW BGP speaker MUST NOT 发送 AS4_PATH 属性.

在以二字节 AS 号编码的 AS_PATH 属性中, 不可映射的四字节 AS 号由众所周知的二字节 AS 号 AS_TRANS 表示. 这将保留 AS 路径信息的路径长度属性, 并且如下一节所述, 也有助于更新 NEW BGP speaker 从 OLD BGP speaker 接收的 AS 路径信息.

NEW BGP speaker 根据 AS 路径信息构造 AS4_PATH 属性. 每当 AS 路径信息包含 AS_CONFED_SEQUENCE 或 AS_CONFED_SET 路径段时, NEW BGP speaker MUST 从正在构造的 AS4_PATH 属性中排除这些路径段.

AS4_PATH 属性作为 optional transitive 属性, 会在一系列 OLD BGP speaker 之间不经修改地承载, 并有助于保留 AS 路径信息中的不可映射四字节 AS 号.

类似地, 如果 NEW BGP speaker 必须发送 AGGREGATOR 属性, 且执行聚合的 Autonomous System 的 AS 号是不可映射的四字节 AS 号, 则该 speaker MUST 使用 AS4_AGGREGATOR 属性, 并将现有 AGGREGATOR 属性中的 AS 号字段设置为保留 AS 号 AS_TRANS. 注意, 如果 AS 号是可映射的, 则 MUST NOT 发送 AS4_AGGREGATOR 属性.

4.2.3. 处理收到的更新 (Processing Received Updates)

当 NEW BGP speaker 从 OLD BGP speaker 接收更新时, 它 MUST 准备好在现有 AS_PATH 属性之外接收 AS4_PATH 属性. 如果也收到了 AS4_PATH 属性, 则两个属性都将用于构造精确的 AS 路径信息, 因此两个属性承载的信息都会被纳入 AS 路径环路检测.

请注意, 一条路由可能只穿越了一系列使用二字节 AS 号且只有 OLD BGP speaker 的 Autonomous System. 在这种情况下, 如果该路由携带 AS4_PATH 属性, 则自路由离开最后一个 NEW BGP speaker 以来, 该属性会一直保持未修改. 尾部 AS 路径信息 (仅表示使用二字节 AS 号且只有 OLD BGP speaker 的 Autonomous System) 只包含在当前 AS_PATH 属性中 (编码在 AS_PATH 属性的前导部分).

在某些条件下, 可能无法从一条路由的 AS_PATH 和 AS4_PATH 属性重构全部 AS 路径信息. 例如, 当携带 AS4_PATH 属性的两条或更多路由由 OLD BGP speaker 聚合, 且其中至少一条路由的 AS4_PATH 属性携带至少一个四字节 AS 号 (而不是编码在 4 个字节中的二字节 AS 号) 时, 就会出现这种情况. 取决于实现方式, AS4_PATH 属性可能会在路由聚合期间丢失, 或者 AS_PATH 属性和 AS4_PATH 属性都会包含有效但部分的信息, 且这些信息无法无缝组合, 从而在这些情况下导致 AS 路径信息不完整.

NEW BGP speaker 还 MUST 准备好从 OLD BGP speaker 接收 AGGREGATOR 属性以及 AS4_AGGREGATOR 属性. 当两个属性都收到时, 如果 AGGREGATOR 属性中的 AS 号不是 AS_TRANS, 则:

  • AS4_AGGREGATOR 属性和 AS4_PATH 属性 SHALL 被忽略,
  • AGGREGATOR 属性 SHALL 被视为关于聚合节点的信息, 并且
  • AS_PATH 属性 SHALL 被视为 AS 路径信息.

否则,

  • AGGREGATOR 属性 SHALL 被忽略,
  • AS4_AGGREGATOR 属性 SHALL 被视为关于聚合节点的信息, 并且
  • AS 路径信息需要像所有其他情况一样进行构造.

为了构造 AS 路径信息, 需要先使用 [RFC4271] 第 9.1.2.2 节和 [RFC5065] 中为路由选择规定的方法, 计算 AS_PATH 和 AS4_PATH 属性中的 AS 号数量.

如果 AS_PATH 属性中的 AS 号数量小于 AS4_PATH 属性中的 AS 号数量, 则 AS4_PATH 属性 SHALL 被忽略, AS_PATH 属性 SHALL 被视为 AS 路径信息.

如果 AS_PATH 属性中的 AS 号数量大于或等于 AS4_PATH 属性中的 AS 号数量, 则 SHALL 通过从 AS_PATH 属性的前导部分取出所需数量的 AS 号和路径段, 并将其前置到 AS4_PATH 属性中来构造 AS 路径信息, 使 AS 路径信息具有与 AS_PATH 属性相同数量的 AS 号. 注意, 如果一个有效的 AS_CONFED_SEQUENCE 或 AS_CONFED_SET 路径段是前导路径段, 或与被前置的路径段相邻, 则该路径段 SHALL 被前置.