Cisco 300-410: BGP 策略、可扩展性和路径选择 — 学习指南
属于 Cisco CCNP Enterprise 300-410 ENARSI — 学习指南. 使用经过验证的答案练习: Cisco 考试中心, 或参加限时模拟考试: ExamRoll.io.
概述
边界网关协议 (BGP) 用于管理域间路由策略和可扩展的可达性信息分发。设计弹性会话、理解下一跳和更新行为、以及在完全了解最佳路径算法的基础上应用策略,这些都是基础。在大规模部署中,iBGP 依赖路由反射器或联邦,而条件通告、默认路由始发、多路径和路由抑制等高级工具则用于优化其行为。本节详细介绍您必须预见的操作机制、设计权衡和故障模式,并为丢失前缀和意外路径选择问题提供系统的排障方法。
会话设计与邻居建立
- eBGP 与 iBGP 邻接关系
- eBGP 对等体位于不同的 ASN 中,默认使用 TTL 1,因此需要单跳邻接,除非另有配置。
- iBGP 对等体位于相同的 ASN 中,需要全互联或扩展方案(路由反射器或联邦)。iBGP 使用 TTL 255,并且会话经常使用环回接口以增强稳定性。
- TCP 可达性与 BGP FSM
- BGP 运行于 TCP 端口 179 之上;会话的建立依赖于通用的 IP/TCP 可达性和 BGP 有限状态机 (Idle → Connect/Active → OpenSent → OpenConfirm → Established)。
- 常见的阻碍因素:针对 TCP/179 的 ACL/防火墙、限制 BGP 速率的控制平面策略 (CoPP),以及破坏 TCP 连接的非对称路由。
- 实践检查:使用 show ip bgp summary;如果出现抖动,检查 show policy-map control-plane 以验证 CoPP。在策略验证期间,将 conform/exceed 操作设置为 transmit,以避免意外丢弃。
- 认证与 TTL 加固
- MD5 认证 (neighbor x password y) 可防止欺骗性会话;密码不匹配会将话保持在 Active 状态。
- GTSM/TTL 安全 (neighbor x ttl-security hops n) 可缓解基于 CPU 的攻击;不要在同一个邻居上将其与 ebgp-multihop 结合使用。
- 环回接口对等、update-source 与 multihop
- 环回接口之间的对等关系对接口故障更具弹性;需要指定唯一的源地址并扩展 TTL:
- neighbor 203.0.113.2 update-source Loopback0
- neighbor 203.0.113.2 ebgp-multihop 2
- 确保通过静态路由或 IGP 能够单播到达环回接口。如果到环回接口的递归路由缺失,将导致会话静默建立失败。
- 环回接口之间的对等关系对接口故障更具弹性;需要指定唯一的源地址并扩展 TTL:
- 下一跳处理与 next-hop-self
- 默认情况下,eBGP 将下一跳设置为通告该路由的邻居。
- 默认情况下,iBGP 不会更改下一跳;边界路由器必须在 iBGP 会话上设置 next-hop-self,以避免第三方下一跳黑洞问题。
- address-family ipv4 neighbor 10.0.0.2 next-hop-self
下一跳处理与最佳路径选择
Cisco 平台上的 BGP 最佳路径选择(优先级从高到低):
- Weight (Cisco 专有,本地路由器有效;值越高越优先)。默认值:本地注入的路由为 32768,其他为 0。
- Local Preference (AS 内部有效;值越高越优先)。默认值为 100;在 iBGP 内部传播。
- 本地始发的路由 (通过 network/aggregate/redistribute 命令) 优于学习到的路由。
- AS-path 长度 (越短越优先)。Prepending 会增加感知的距离。
- Origin code (IGP < EGP < Incomplete)。
- MED (值越低越优先)。除非启用了 bgp always-compare-med,否则仅在来自同一邻居 AS 的路径之间进行比较;bgp deterministic-med 确保在对等体之间进行一致的 MED 比较。
- eBGP 优于 iBGP。
- 到 BGP 下一跳的最低 IGP 度量值 (热土豆路由)。
- 优先选择最老的路由以减少抖动 (如果启用,受路由抑制/多路径影响)。
- 决胜规则:最小的 cluster-list 长度、最低的 originator-ID、最低的邻居 BGP router-ID,最后是最低的邻居 IP 地址。
设计说明与陷阱:
- 下一跳可达性是基础。一条路径即使在 BGP 中胜出,但如果其下一跳无法解析,仍然会导致 CEF 递归失败。
- 从 eBGP 学习到路由并通告给 iBGP 时,不要忘记配置 next-hop-self;否则 iBGP 路由器可能会看到一个不可达的 eBGP 下一跳,从而丢弃流量。
- MED 属性经常被误解;如果没有配置 always-compare-med,来自不同邻居 AS 的路径的 MED 值将不会被比较,导致其值看起来像是“被忽略了”。
策略工具:属性、Community 和过滤
- Local Preference、Weight、AS-path prepending、MED
- 通过为来自低延迟 ISP 的路由提高 LOCAL_PREF(例如,设置 local-preference 200),来优先选择该 ISP。这会改变整个 AS 的出站流量选择,而无需触及 IP 数据平面。
- Weight 仅在本地有效;用于路由器特定的偏好设置(
neighbor 198.51.100.1 weight 50或通过route-map set weight)。 - AS-path prepending(
set as-path prepend 65000 65000 …)通过增加感知距离,使进入您 AS 的路径吸引力降低。应选择性地应用;过度使用会降低可达性。 - MED(
set metric)向您的邻居建议一个进入您 AS 的出口。其效果取决于邻居的策略。
- Community 策略
- 发送 Community 不是自动的;需要使用
neighbor x send-community [both | extended]来启用。 - 公认 Community:
no-export、no-advertise、internet、local-AS和no-export-subconfed(在联盟场景下很有用)。 - 标准 Community 是 32 位值(使用
ip bgp community new-format命令后,格式为 AA:NN)。 - 扩展 Community(64 位)携带额外的语义信息(例如,VPNv4 中的路由目标)。
- 大型 Community(96 位,A:B:C)在 4 字节 ASN 环境下提供了可扩展性和清晰性。
- 示例:匹配 Community 并设置属性
ip community-list standard PREFERED permit 65000:100route-map INBOUND-POLICY permit 10match community PREFEREDset local-preference 200
- 发送 Community 不是自动的;需要使用
- 前缀和 AS-path 过滤
ip prefix-list控制 NLRI 的粒度;as-path access-list使用正则表达式来限制 AS 路径。两者都通过 route-map 或直接使用neighbor … prefix-list/as-path access-group来附加。- 入站 vs. 出站:
- 入站过滤决定了哪些内容进入您的 BGP 表,并影响最佳路径的选择。
- 出站过滤控制您通告的内容;一个错误应用的出站 route-map 可能会意外地改变本地始发路由的属性(例如,在所有通告上都预置本地 AS 会导致外部邻居看到您的前缀距离为两个 AS 跳,而不是一个)。务必使用显式匹配来约束 route-map。
- 最小化、有针对性的策略可以减少抖动并避免黑洞。始终在 prefix-list 的末尾包含一个最终的 permit,以避免意外的拒绝。
简短、有针对性的配置示例:
- 提高来自 ISP-A 路由的 local preference:
route-map SET-LP permit 10set local-preference 200neighbor 203.0.113.1 route-map SET-LP in
- 为特定的出站通告进行 AS-path prepend:
ip prefix-list OUT-ONLY permit 192.0.2.0/24route-map PREPEND permit 10match ip address prefix-list OUT-ONLYset as-path prepend 65000 65000neighbor 198.51.100.1 route-map PREPEND out
iBGP 扩展与高级行为
- 路由反射器 (RR)
- 通过指定 RR 在客户端和非客户端之间反射路由,来替代 iBGP 全互联。使用 originator-ID 和 cluster-list 属性来防止环路。
- 集群 ID (Cluster ID) 默认为 RR 的路由器 ID;当存在多个 RR 时,应使用唯一的集群 ID 来防止持续环路并提高路径多样性。
- 权衡:RR 可能导致次优路径选择(路径隐藏)。可通过客户端部署、多样化集群、add-path 以及调整 bestpath 参数来缓解。
- 联盟 (Confederation)
- 将一个大型 AS 划分为多个子 AS,这些子 AS 内部运行 eBGP,但对外表现为单个 AS。
- 优点:减少 iBGP 网状结构和策略影响范围;缺点:运维复杂,并且跨越子 AS 边界时可能存在 MED/下一跳的细微问题。
- 条件通告与默认路由
- 条件通告允许您仅在某条其他路由存在或不存在时才通告一条路由。
- router bgp 65000 neighbor 198.51.100.1 advertise-map ADV non-exist-map PRIMARY route-map ADV permit 10 match ip address prefix-list DEFAULT route-map PRIMARY permit 10 match ip address prefix-list PRIMARY-PFXS
- 默认路由始发 (Default-origination):
neighbor 198.51.100.1 default-originate [route-map RM]命令会通告 0.0.0.0/0,无论 RIB 中是否存在该路由(可通过 RM 控制通告条件)。作为替代方案,network 0.0.0.0命令则要求 RIB 中必须存在匹配的路由。
- 条件通告允许您仅在某条其他路由存在或不存在时才通告一条路由。
- 多路径 (Multipath)
- 使用
maximum-paths [ebgp|ibgp] n命令在多条等价 BGP 路径上实现负载分担。使用bgp bestpath as-path multipath-relax可以在受控条件下,允许跨不同 AS-path 的 eBGP 多路径。在 MPLS L3VPN 中,maximum-paths ibgp n可启用 PE 到 PE 的 ECMP。
- 使用
- 路由递归与 RIB 故障
- BGP 仅在下一跳可以递归到有效的转发条目,并且没有管理距离 (AD) 更低的路由占用该前缀时,才会安装路径。
- 常见的 RIB 故障原因:
- 存在 AD 更优的路由(直连/静态/IGP)。
- 下一跳不可解析(没有到达下一跳的 IGP/静态路由)。
- 存在更长、更具体的前缀(流量会匹配更具体的路由)。
- 有用的检查命令:
show ip bgp <prefix>、show ip bgp rib-failure、show ip route [vrf NAME] <prefix>,以及用于递归验证的 CEF 查询。
- 路由抑制 (Dampening)
bgp dampening会对抖动的前缀进行惩罚,并将其抑制直至稳定。参数包括:half-life、reuse、suppress、max-suppress-time。- 权衡:可能会隐藏合法的恢复过程并减慢收敛速度。应小范围地应用于不稳定的边缘,避免对核心可达性或客户关键地址空间进行抑制。
系统化故障排查(前缀丢失和路径错误):
- 验证 BGP 会话健康状况:
show ip bgp summary;如果会话抖动,检查 CoPP 和 TCP/179 可达性。 - 确认策略准入:
show ip bgp neighbors x received-routes/advertised-routes;必要时确保启用 soft-reconfiguration 或路由刷新。 - 验证下一跳:
show ip bgp <prefix>和show ip route [vrf NAME] <next-hop>;在调整属性前,先修复 IGP/递归问题。 - 检查过滤器:prefix-lists、as-path access-lists 和 communities;确认邻居配置了
send-community。 - 检查属性:weight/local-pref/AS-path/origin/MED;在适当情况下启用
deterministic-med/always-compare-med。 - 检查 RIB 故障和路由具体性:AD 更低的直连/静态/IGP 路由或更具体的路由将覆盖 BGP 路由。
- 确认扩展机制:在 RR 上,注意路径隐藏和 cluster-list 环路;在联盟中,验证
no-export-subconfed的使用。
实际问题场景
Acme 制造公司运营 AS 65010,拥有两个 ISP:ISP-A(低延迟)和 ISP-B(备份)。Acme 在三台核心路由器上运行 iBGP,配置了两个路由反射器,并通告 203.0.113.0/24。在 ISP-B 边界路由器上添加了一个出向 route-map 后,远程站点报告延迟增加,并且一些路径意外地优选了 ISP-B。
解决方法
← EIGRP 设计、度量值和收敛 · 所有领域 · 路由重分发和策略路由 →
练习这些题目 → · 在 ExamRoll.io 上限时练习 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通过考试 →