5. 路径属性
5. 路径属性 (Path Attributes)
本节讨论 UPDATE 消息的路径属性 (path attribute).
路径属性分为四个不同类别:
- 众所周知的强制属性 (Well-known mandatory).
- 众所周知的自愿属性 (Well-known discretionary).
- 可选可传递属性 (Optional transitive).
- 可选不可传递属性 (Optional non-transitive).
BGP 实现 MUST 识别所有众所周知 (well-known) 属性. 其中一些属性是强制 (mandatory) 的, MUST 包含在每个包含 NLRI 的 UPDATE 消息中. 其他属性是自愿 (discretionary) 的, 可以在给定 UPDATE 消息中发送, 也可以不发送.
BGP 对等体一旦更新众所周知属性, MUST 在其发送给对等体的所有更新中传递这些属性.
除众所周知属性外, 每条路径 MAY 包含一个或多个可选属性. 不要求也不期望所有 BGP 实现支持所有可选属性. 对未识别可选属性的处理由属性标志 (Attribute Flags) 字节中可传递位 (Transitive bit) 的设置决定. 带有未识别可传递可选属性的路径 SHOULD 被接受. 如果带有未识别可传递可选属性的路径被接受并传播给其他 BGP 对等体, 则该路径的未识别可传递可选属性 MUST 随路径一起传播给其他 BGP 对等体, 且属性标志字节中的部分位 (Partial bit) 设置为 1. 如果带有已识别可传递可选属性的路径被接受并传播给其他 BGP 对等体, 且属性标志字节中的部分位已由前一个 AS 设置为 1, 则当前 AS MUST NOT 将其重置为 0. 未识别不可传递可选属性 MUST 被静默忽略, 且不传播给其他 BGP 对等体.
新的可传递可选属性 MAY 由发起者 (originator) 或路径中任何其他 BGP 系统附加到路径. 如果不是由发起者附加, 则属性标志字节中的部分位设置为 1. 附加新的不可传递可选属性的规则取决于具体属性的性质. 每个新的不可传递可选属性的文档预期会包含此类规则 (MULTI_EXIT_DISC 属性的描述给出了一个示例). 所有可选属性 (可传递和不可传递) MAY 由路径中的 BGP 系统在适当时更新.
UPDATE 消息的发送方 (sender) SHOULD 按属性类型 (attribute type) 升序在 UPDATE 消息内排列路径属性. UPDATE 消息的接收方 (receiver) MUST 准备好处理未按正确顺序出现于 UPDATE 消息中的路径属性.
同一属性 (相同类型的属性) 不得在给定 UPDATE 消息的 Path Attributes 字段中出现超过一次.
强制 (mandatory) 类别指当 UPDATE 消息中包含 NLRI 时, 在 IBGP 和 EBGP 交换中都 MUST 存在的属性. 为协议扩展机制 (protocol extension mechanism) 目的而被归类为可选的属性, 在特定上下文中可以是纯自愿, 自愿, 必需或不允许的.
| Attribute | EBGP | IBGP |
|---|---|---|
| ORIGIN | mandatory | mandatory |
| AS_PATH | mandatory | mandatory |
| NEXT_HOP | mandatory | mandatory |
| MULTI_EXIT_DISC | discretionary | discretionary |
| LOCAL_PREF | 见 5.1.5 节 | required |
| ATOMIC_AGGREGATE | 见 5.1.6 和 9.1.4 节 | |
| AGGREGATOR | discretionary | discretionary |