
BGP属性全景9大核心属性与选路规则邻居建好了路由怎么传靠属性。属性决定路由的命运传不传、怎么传、选哪条。文章目录BGP属性全景9大核心属性与选路规则一、为什么你要搞懂BGP属性二、属性分类速查三、公认必遵属性3 个3.1 Origin 属性——路由的出身证明3.2 AS-Path 属性——路由的旅行记录3.3 Next-Hop 属性——路由的下一站地址四、公认自决属性1 个4.1 Local Preference 属性——出向流量控制的方向盘五、可选属性5 个5.1 MED 属性——入向流量控制的建议信5.2 Community 属性——路由的标签5.3 Weight 属性——Cisco 私有的本地优先权5.4 Atomic-Aggregate 与 Aggregator——路由聚合的出生证明六、属性传递规则总结七、出向与入向流量控制八、小结参考资料系列文章一、为什么你要搞懂BGP属性在上一章我们学会了如何建立 BGP 邻居。但邻居建好只是第一步——路由器之间怎么交换路由怎么选最优路径怎么控制流量走向答案全在 BGP 属性里。BGP 定义了 9 大核心属性每条路由都携带这些属性。属性决定了传不传某些属性控制路由能否传给其他邻居怎么传某些属性在传递过程中会被修改选哪条某些属性用于选路决策类比理解BGP 属性就像快递包裹的标签。Origin “发货地”路由从哪来AS-Path “运输路线”经过哪些中转站Next-Hop “下一站地址”包裹下一站去哪Local Preference “优先配送标记”优先处理这个包裹MED “建议配送时间”建议什么时候送二、属性分类速查BGP 属性按识别要求和传播行为分为 4 大类分类识别要求传播行为包含属性公认必遵必须识别必须携带Origin、AS-Path、Next-Hop公认自决必须识别可选携带Local Preference可选传递可不识别不认识也传Community可选非传递可不识别不认识就丢MED、Atomic-Aggregate、Aggregator9 大属性速查表属性分类eBGPiBGP跨 AS选路优先级WeightCisco 私有❌❌❌第 1 优先级越大越优Local Preference公认自决✅✅❌第 2 优先级越大越优Origin公认必遵✅✅✅第 5 优先级i e ?AS-Path公认必遵✅ 追加✅ 不变✅第 4 优先级越短越优Next-Hop公认必遵✅ 更新✅ 不变✅前置条件不可达则丢弃MED可选非传递✅✅⚠️第 6 优先级越小越优Community可选传递✅✅✅不直接用于选路Atomic-Aggregate可选非传递✅✅⚠️不直接用于选路Aggregator可选非传递✅✅⚠️不直接用于选路关键概念公认 所有 BGP 实现必须认识必遵 每条路由必须带自决 每条路由可以不带传递 不认识也原样转发非传递 不认识就丢弃三、公认必遵属性3 个公认必遵属性是 BGP 的基础语言每条 UPDATE路由更新报文BGP 用来传递路由信息的核心报文必须携带所有 BGP 实现必须识别。3.1 Origin 属性——路由的出身证明Origin 标记路由是如何进入 BGP 的有 3 种值Origin 值显示字符含义产生方式IGPi内部起源network命令注入EGPeEGP 协议起源通过 EGP 学到已基本淘汰Incomplete?起源不明import-route从其他协议引入选路优先级IGP(i) EGP(e) Incomplete(?)实战场景用network 10.1.1.0 mask 255.255.255.0注入路由 → Origin i用import-route ospf 1引入 OSPF 路由 → Origin ?可以手工修改route-policy SET_ORIGIN permit → apply origin igp华为/route-map SET_ORIGIN permit 10 → set origin igpCisco注意network命令要求路由精确匹配前缀 掩码长度import-route可以批量引入但 Origin 变为 ?3.2 AS-Path 属性——路由的旅行记录AS-Path 记录路由沿途经过的 AS 号列表是 BGP 防环的核心机制。工作原理每经过一个 eBGP 邻居AS 号自动追加到 AS-PathiBGP 传递时不修改 AS-Path选路规则AS-Path 越短越优第 4 优先级防环机制若 AS-Path 包含自身 AS 号则拒绝实战应用场景命令作用隐藏私有 AS 号peer x.x.x.x public-as-only华为neighbor x.x.x.x remove-private-asCisco向 eBGP 对等体发送路由时剥离私有 AS 号64512-65534AS 迁移过渡peer x.x.x.x fake-as 伪AS华为用伪造 AS 号建立邻居隐藏真实 AS允许自身 AS 出现allowas-in允许 AS-Path 中包含自己的 AS 号MPLS VPN 场景AS-Path Prependapply as-path 65001 65001 65001华为set as-path prepend 65001 65001 65001Cisco人为加长路径影响入向流量私有 AS 号问题私有 AS 号64512-65534不能直接发布到 Internet向 ISP 发布路由时用public-as-only剥离私有 AS 号避免环路AS-Path Prepend 效果3.3 Next-Hop 属性——路由的下一站地址Next-Hop 记录 BGP 路由的下一跳 IP 地址有 3 条核心规则规则场景Next-Hop 变化规则 1本地始发路由通告给所有对等体设为本端建立 BGP 邻居的接口地址规则 2向eBGP对等体发布路由设为本端与对端建立邻居的接口地址规则 3向iBGP对等体发布从 eBGP 学到的路由不修改保持从 eBGP 学到的下一跳iBGP Next-Hop 问题规则 3 会导致 iBGP 路由器收到的路由 Next-Hop 是外部 AS 的 IP本端可能无法到达。企业 AS65001 ←──eBGP──→ ISP AS4666 边界路由器收到 ISP 路由Next-Hop ISP 接口 IP 边界路由器通过 iBGP 传给内部路由器 内部路由器收到路由Next-Hop 还是 ISP 接口 IP 问题来了内部路由器不知道怎么去 ISP 接口 IP → 路由不可达 ❌iBGP Next-Hop 问题示意图解决方案方案配置适用场景方案 Anext-hop-local华为next-hop-selfCisco边界路由器向 iBGP 邻居通告路由时把 Next-Hop 改为自己推荐方案 B在 IGP 中通告外部下一跳把 eBGP 下一跳网段通告进 OSPF四、公认自决属性1 个4.1 Local Preference 属性——出向流量控制的方向盘Local PreferenceLP影响 AS 内的出口选择值越大越优先。传播范围✅ 在 iBGP 内传播AS 内所有路由器都能看到❌不传出 AS发给 eBGP 邻居时丢弃应用场景多出口场景下控制流量从哪个出口出去。出向流量 100% 可控因为你改的是自己路由器上的属性。实战场景双 ISP 主备企业 AS65001 ├── 专线1 ── 电信 AS4134 ── 主用LP200 └── 专线2 ── 联通 AS4837 ── 备用LP100 出站流量怎么控制 → 给电信路由设 LP200联通路由设 LP100 → 整个 AS 的流量都优先走电信专线出去 ✅配置示例Cisco! 主 ISP 链路优先 route-map ISP1-POLICY permit 10 set local-preference 200 ! 备 ISP 链路 route-map ISP2-POLICY permit 10 set local-preference 100 ! 应用到邻居入向设置 neighbor 1.1.1.1 route-map ISP1-POLICY in neighbor 2.2.2.2 route-map ISP2-POLICY in华为# 主 ISP 链路优先 route-policy ISP1-POLICY permit 10 apply local-preference 200 # 备 ISP 链路 route-policy ISP2-POLICY permit 10 apply local-preference 100 # 应用到邻居入向设置 bgp 65001 peer 1.1.1.1 route-policy ISP1-POLICY import peer 2.2.2.2 route-policy ISP2-POLICY import五、可选属性5 个5.1 MED 属性——入向流量控制的建议信MEDMulti-Exit Discriminator告诉相邻 AS从哪条链路进来值越小越优先。传播范围⚠️ 仅传给直接相邻的 AS❌ 相邻 AS不会继续转发给第三个 AS关键限制默认只比较来自同一 AS的路由的 MED 值。跨 AS 比较需要开启特殊配置但多 provider 场景下谨慎使用。与 Local Preference 的区别LP 控制出向“我从哪个出口出去”MED 建议入向“你从哪个链路进来”MED 被忽略的 3 个原因1. RFC 规范留了口子RFC 4271 规定MED 的默认比较范围是同一个 AS 发出的路由。如果两条候选路由来自不同的 AS对端可以不比较 MED直接跳到下一条规则。你的 AS 65001 连了两条 ISP 电信 AS4134设 MED50 联通 AS4837设 MED200 对端 AS9000 收到两条路由 来自 AS4134 的路由MED50 来自 AS4837 的路由MED200 对端一看两条路由来自不同 AS → 不比较 MED → 跳到第 7 条规则eBGP iBGP 你的 MED50 白设了 ❌2. 厂商默认行为不一致厂商默认行为开启跨 AS 比较Cisco只比较来自同一 AS的路由的 MEDbgp always-compare-med华为只比较来自同一 AS的路由的 MEDcompare-different-as-medJuniper默认不比较 MED需在 policy 里显式配置3. 中国运营商的实践电信/联通/移动通常不比较 MED原因他们从成百上千个客户 AS 收到路由这些路由来自不同 AS如果比较 MED可能导致流量从非最优入口进入他们更信赖 AS-Path 长度第 4 优先级RFC 强制比较最佳实践场景建议双 ISP 入向控制首选AS-Path PrependRFC 强制比较100% 可靠同一 ISP 多个入口可以用MED同 AS 内比较默认就生效必须跨 AS 比较 MED开启always-compare-med要求所有对等方都配置一句话总结MED 是建议对端可以不采纳AS-Path Prepend 是事实对端必须尊重。入向流量控制首选 AS-Path PrependMED 只在你能确认对端会比较时才用。5.2 Community 属性——路由的标签Community 给路由打标签用于灵活的路由策略控制。类型可选传递Optional Transitive预定义 CommunityCommunity作用no-export不传出本 ASno-advertise不通告给任何邻居no-export-subconfed不传出联盟Confederation关键配置必须配send-communityCisco/apply community华为否则 Community 不会传给邻居additive关键字在已有 Community 基础上追加而非覆盖部分 ISP 会过滤 Community使用前需确认5.3 Weight 属性——Cisco 私有的本地优先权类型Cisco 私有作用仅影响本台路由器的选路不传给任何邻居。选路第 1 优先级Weight 越大越优。与 Local Preference 的区别Weight 只影响本台路由器Cisco 私有Local Preference 影响整个 ASRFC 标准适用场景单台路由器多 ISP 接入快速控制本机出口。5.4 Atomic-Aggregate 与 Aggregator——路由聚合的出生证明Atomic-Aggregate可选非传递标记路由被聚合过聚合前的详细信息丢失Aggregator可选非传递记录谁做了聚合AS 号 Router ID两者配套出现排查路由聚合来源时用到。实战场景路由聚合运营商 AS64512 内部 10.1.1.0/24 ←── 客户 A 10.1.2.0/24 ←── 客户 B 10.1.3.0/24 ←── 客户 C 运营商做路由聚合 aggregate 10.1.0.0/16 向上游发布 10.1.0.0/16 Atomic-Aggregate Aggregator(AS64512, Router-ID 1.1.1.1)路由聚合场景示意图这两个属性有什么用Atomic-Aggregate告诉对端这条路由是聚合后的原始明细路由信息已丢失。如果对端想精确控制需要知道这一点。Aggregator记录谁做了聚合AS 号 Router ID。排查路由来源时可以通过这个信息找到聚合点。配置示例华为# 配置路由聚合只聚合一跳 AS-Path 以 64512 结尾的路由 ip as-path-filter 1 permit _64512$ route-policy AGGREGATE permit node 10 if-match as-path-filter 1 bgp 64512 aggregate 10.1.0.0 16 origin-policy AGGREGATE as-set detail-suppressed # origin-policy AGGREGATE只聚合匹配 route-policy 的路由 # as-set保留明细路由的 AS-Path 信息防环用 # detail-suppressed抑制明细路由只发布聚合路由说明华为aggregate命令会自动添加Atomic-Aggregate属性聚合丢失明细信息时自动标记但不会自动添加 Aggregator 属性这个属性记录谁做的聚合华为默认不填。Cisco! 配置路由聚合 aggregate-address 10.1.0.0 255.255.0.0 summary-only ! summary-only只发布聚合路由不发布明细 ! 如需保留原始 AS-Path 信息去掉 summary-only 并加 as-set ! aggregate-address 10.1.0.0 255.255.0.0 as-set什么时候需要关注这两个属性多提供商场景不同 ISP 的聚合策略可能不同影响路由选择路由泄漏排查通过 Aggregator 追踪聚合来源精确选路Atomic-Aggregate 表示信息已丢失可能需要更细粒度的控制六、属性传递规则总结属性传播行为速查属性eBGPiBGP跨 AS作用Origin✅✅✅标记路由起源如何进入 BGPAS-Path✅ 追加 AS 号✅ 不变✅记录路由经过的 AS 列表防环核心Next-Hop✅ 更新为自己✅ 不变✅记录到达目标网络的下一跳 IPLocal Pref✅出 AS 丢弃✅❌ AS 内控制出站流量从哪个出口出去MED✅✅⚠️ 相邻 AS建议对端从哪个入口进来Community✅✅✅可配给路由打标签控制传播策略Weight❌❌❌本地路由器选路优先级选路优先级速查前 8 条必须记住优先级规则值作用域1Weight越大越优本地路由器2Local Preference越大越优AS 内部3本地发起network⚠️优先本地4AS-Path 长度越短越优AS 间5Origin 类型⚠️IGP EGP Incomplete全局6MED越小越优相邻 AS7eBGP iBGPeBGP 优先全局8IGP Metric to Next-Hop越小越优全局⚠️ 优先级 3 和 5 的区别容易混淆优先级 3判断路由是不是本路由器用network命令始发的是则直接优先优先级 5比较路由携带的Origin 属性值i e ?跟谁始发的无关简单说优先级 3 看身份是不是我注入的优先级 5 看标签路由带的 Origin 值。七、出向与入向流量控制出向流量控制你 AS 内的流量从哪个出口出去由你决定。手段作用域传播性值使用场景Weight仅本地❌ 不传播越大越优单设备多 ISPLocal PreferenceAS 内部✅ AS 内传播越大越优控制整个 AS 出口出向控制 100% 可控因为你改的是自己路由器上的属性。入向流量控制外部流量从哪个入口进你的 AS你只能「建议」不能强制。手段可靠性对端是否尊重值使用场景AS-Path Prepend⭐⭐⭐⭐⭐ 最可靠✅ 所有 BGP 实现必须尊重路径越短越优入站首选方案MED⭐⭐⭐ 看对端❌ 对端可能忽略值越小越优精细控制需对端配合Community⭐⭐⭐ 需 ISP 配合取决于 ISP各 ISP 自定义大型 ISP 有文档支持实战场景双专线主备的选路工具选择场景一双专线到不同 AS双 ISP如电信 联通企业 AS65001 ├── 专线1 ── 电信 AS4134 ── 主用 └── 专线2 ── 联通 AS4837 ── 备用方向推荐工具原因出站企业 → ISPLocal Preference出向 100% 可控LP200 vs 100 最直观入站ISP → 企业AS-Path PrependMED 跨 AS 可能被忽略Prepend 100% 可靠配置示例! 出站控制 route-map OUT permit 10 match ip address prefix-list TELECOM_ROUTES ! prefix-list 匹配电信路由定义略 set local-preference 200 ! 电信主用 route-map OUT permit 20 match ip address prefix-list UNICOM_ROUTES ! prefix-list 匹配联通路由定义略 set local-preference 100 ! 联通备用 ! 入站控制 route-map LONG_PATH permit 10 set as-path prepend 65001 65001 65001 router bgp 65001 neighbor TELECOM_VBR route-map OUT in neighbor TELECOM_VBR route-map DEFAULT out ! 主正常宣告 neighbor UNICOM_VBR route-map OUT in neighbor UNICOM_VBR route-map LONG_PATH out ! 备加 Prepend场景二双专线到同 AS双 VBR 接入同一朵云什么是 VBRVBRVirtual Border Router虚拟边界路由器是云厂商提供的物理边界路由器用户通过专线连接 VBR实现本地 IDC 与云 VPC 的互通。每条专线对应一个 VBR 实例。方向推荐工具原因出站企业 → 云Local Preference出向 100% 可控入站云 → 企业MED同 AS 下 MED 天然生效不需要额外配置同 AS 场景下 MED 和 Prepend 都可以选择 MED 的考量两条专线都连到同一个 ASMED 同 AS 默认比较100% 生效MED50 vs 200 表达优先级语义清晰当需要多级优先级如 3 级以上分流时MED 值域更灵活三种场景选路工具总结场景出站入站关键差异双专线到不同 ASLPAS-Path PrependMED 跨 AS 可能无效双专线到同 ASLPMED同 AS 下 MED 天然生效单专线无冗余——不需要选八、小结BGP 的 9 大属性可以分为 4 类分类属性作用公认必遵Origin、AS-Path、Next-Hop路由的基础身份证公认自决Local Preference出向流量控制的方向盘可选传递Community路由的标签可选非传递MED、Atomic-Aggregate、Aggregator入向流量建议信、聚合出生证明速记口诀Origin 路由从哪来AS-Path 路由经过哪Next-Hop 路由下一站Local Preference 出向选哪条MED 入向建议信Community 路由贴标签下一篇BGP 选路规则——13 条规则的决策逻辑与实战应用。参考资料RFC 4271: A Border Gateway Protocol 4 (BGP-4) - BGP 协议核心标准RFC 1997: BGP Communities Attribute - BGP 社区属性规范RFC 8092: BGP Large Communities Attribute - 4 字节 AS 号的 Large CommunityIP Routing Configuration Guide, Cisco IOS XE 17.x - Cisco IOS XE BGP 配置指南Huawei BGP Configuration Guide - 华为 NE5000E BGP 配置指南系列文章上一篇01-原理篇-BGP状态机详解-六状态转换与邻居建立全流程|BGP状态机六状态转换与邻居建立当前文章BGP属性全景9大核心属性与选路规则下一篇[[03-原理篇-BGP选路规则详解-13条规则的决策逻辑与实战应用|BGP选路规则13条规则的决策逻辑]]