跳到主要内容

5. Path Attribute

5. Path Attribute (Path Attributes)

本节讨论 UPDATE message 的 path attribute.

path attribute 分为四个不同类别:

  1. Well-known mandatory.
  2. Well-known discretionary.
  3. Optional transitive.
  4. Optional non-transitive.

BGP implementation MUST 识别所有 well-known attribute. 其中一些 attribute 是 mandatory 的, MUST 包含在每个包含 NLRI 的 UPDATE message 中. 其他 attribute 是 discretionary 的, 可以在给定 UPDATE message 中发送, 也可以不发送.

BGP peer 一旦更新 well-known attribute, MUST 在其发送给 peer 的所有 update 中传递这些 attribute.

除 well-known attribute 外, 每个 path MAY 包含一个或多个 optional attribute. 不要求也不期望所有 BGP implementation 支持所有 optional attribute. 对未识别 optional attribute 的处理由 Attribute Flags octet 中 Transitive bit 的设置决定. 带有未识别 transitive optional attribute 的 path SHOULD 被接受. 如果带有未识别 transitive optional attribute 的 path 被接受并传播给其他 BGP peer, 则该 path 的未识别 transitive optional attribute MUST 随 path 一起传播给其他 BGP peer, 且 Attribute Flags octet 中的 Partial bit 设置为 1. 如果带有已识别 transitive optional attribute 的 path 被接受并传播给其他 BGP peer, 且 Attribute Flags octet 中的 Partial bit 已由前一个 AS 设置为 1, 则当前 AS MUST NOT 将其重置为 0. 未识别 non-transitive optional attribute MUST 被静默忽略, 且不传播给其他 BGP peer.

新的 transitive optional attribute MAY 由 originator 或 path 中任何其他 BGP speaker 附加到 path. 如果不是由 originator 附加, 则 Attribute Flags octet 中的 Partial bit 设置为 1. 附加新的 non-transitive optional attribute 的规则取决于具体 attribute 的性质. 每个新的 non-transitive optional attribute 的文档预期会包含此类规则 (MULTI_EXIT_DISC attribute 的描述给出了一个示例). 所有 optional attribute (transitive 和 non-transitive) MAY 由 path 中的 BGP speaker 在适当时更新.

UPDATE message 的 sender SHOULD 按 attribute type 升序在 UPDATE message 内排列 path attribute. UPDATE message 的 receiver MUST 准备好处理未按正确顺序出现于 UPDATE message 中的 path attribute.

同一 attribute (相同 type 的 attribute) 不得在给定 UPDATE message 的 Path Attributes 字段中出现超过一次.

mandatory 类别指当 UPDATE message 中包含 NLRI 时, 在 IBGP 和 EBGP 交换中都 MUST 存在的 attribute. 为 protocol extension mechanism 目的而被归类为 optional 的 attribute, 在特定上下文中可以是纯 discretionary, discretionary, required 或 disallowed.

AttributeEBGPIBGP
ORIGINmandatorymandatory
AS_PATHmandatorymandatory
NEXT_HOPmandatorymandatory
MULTI_EXIT_DISCdiscretionarydiscretionary
LOCAL_PREF见 Section 5.1.5required
ATOMIC_AGGREGATE见 Section 5.1.6 和 9.1.4
AGGREGATORdiscretionarydiscretionary