BGP知识点解析

张开发
2026/4/3 21:04:21 15 分钟阅读
BGP知识点解析
BGP中的Next_Hop1. 核心思想记住这一句就够了IBGP 默认不改下一跳是为了让内部路由器知道真正的出口在哪。但前提是内部路由器得能找到那个出口地址。找不到怎么办用next-hop-local把下一跳改成自己人。2. 用一个图讲清楚AS100 AS200 AS300 ┌──────┐ ┌───────────┐ ┌──────┐ │ R4 │────EBGP───────│ R1 │────IBGP───────│ R3 │────EBGP───────│ R5 │ └──────┘ 10.1.14.4 └─────┬─────┘ 1.1.1.1 └──────┘ └──────┘ │ ┌─┴─┐ │R2 │ (OSPF 内部) └───┘问题出在哪步骤发生什么下一跳是谁1R4 告诉 R1 路由4.4.4.0/2410.1.14.4(R4 的接口)2R1 传给 R3 (IBGP)默认不改还是10.1.14.43R3 查路由表找10.1.14.4找不到 (因为这是外部地址OSPF 里没有)4结果路由无效流量丢弃 ❌怎么修在R1上配一句peer R3 next-hop-local步骤发生什么下一跳是谁1R4 告诉 R1 路由4.4.4.0/2410.1.14.42R1 传给 R3 (IBGP)改成 R1 自己1.1.1.13R3 查路由表找1.1.1.1找到了 (OSPF 里有 R1 的地址)4结果路由有效流量正常 ✅3. 为什么默认不改一句话因为有时候不改更好——如果内部路由器能直接找到原始出口就可以选最近的路出去不用绕路。但现网中为了简单稳定我们通常直接配next-hop-local保证路由一定能用。4. 常见误区只记这 3 个误区正确理解IBGP 像 OSPF 一样会自动改下一跳❌ IBGP 默认不改必须手动配next-hop-local配在 R3 上❌ 配在 R1 上发布路由的人只要配了就一定能通❌ 还要保证 R3 到 R1 的 IGP 是通的BGP 的Next_Hop属性逻辑GP 的Next_Hop属性逻辑非常清晰它本质上就是为了解决一个问题“数据包到了我这下一步该给谁”我们可以把这三种情况归纳为“换个新地标”和“保持旧地标”两种逻辑。核心逻辑图解你可以把 BGP 路由器想象成“转信站”Next_Hop就是信封上写的“下一个投递点”。场景动作下一跳变成什么简单记忆发给 EBGP修改自己的接口 IP跨越边界我是出口本地始发 - IBGP修改自己的接口 IP我是源头找我EBGP 学到 - IBGP不修改 (默认)保持外部 IP 不变保持原样直达出口这样理解是不是清晰多了核心就在于默认情况下BGP 希望内部路由器知道真正的出口在哪里除非出口不可达需要 next-hop-local 修正。黑洞产生的原因以及两种解决方法的原理。1. 实验拓扑与配置回顾2. 路由传递过程以 10.10.4.4 → 10.10.5.5 方向为例3. 为什么 R2 会产生路由黑洞IBGP全互联为什么不建议在 OSPF 中引入 BGP 路由核心设计原则IGP 与 BGP 职责分离。BGP 可以承载海量路由如互联网全表约 100 万条。OSPF 的LSA链路状态通告泛洪机制要求每台 OSPF 路由器都必须收到、存储、计算所有 LSA。若将 BGP 路由引入 OSPF每条外部路由都会生成一个Type 5 LSAAS 外部 LSA并在整个 OSPF 域内泛洪。假设引入 50 万条路由 → 每台路由器都要维护 50 万个 LSALSDB 急剧膨胀SPF 计算开销巨大可能导致CPU 飙升设备响应变慢内存耗尽路由器宕机邻居关系震荡网络不稳定收敛时间剧增故障恢复缓慢。为什么即使只有少量外部路由也不推荐即使外部路由少但一旦引入就打破了分层设计。随着网络发展外部路由可能增多最终演变为不可控状态。遵循最小权限原则IGP 只承载内部拓扑信息BGP 承载外部路由信息互不干扰。IBGP 全互联是什么为什么能解决问题1. 背景回顾之前的实验拓扑中R1、R3 运行 BGPIBGP 邻居R2 只运行 OSPF。导致 R2 没有外部路由如 10.10.4.4/32、10.10.5.5/32产生路由黑洞。2. IBGP 全互联的定义IBGP 全互联是指在同一个 AS 内部所有运行 BGP 的路由器之间两两建立 IBGP 对等体关系形成一张全连接的 IBGP 网络。3. 为什么需要 IBGP 全互联BGP 有一个关键规则从 IBGP 邻居学到的路由不会再传递给其他 IBGP 邻居防止环路。因此如果 AS 内部有多个 BGP 路由器它们必须两两直连逻辑上才能确保所有路由器都能学到完整的外部路由。IBGP 全互联IBGP Full Mesh1. 核心思想一句话说透本质IBGP 全互联是指在一个自治系统AS内部所有运行 BGP 的路由器之间两两直接建立 IBGP 邻居关系形成一个逻辑上完全连接的拓扑确保每台路由器都能从“源头”直接学到全部外部路由从而避免因 BGP 路由传递规则导致的路由缺失黑洞。2. 底层原理 设计逻辑2.1 为什么要全互联BGP 有一条铁律从 IBGP 邻居学到的路由不能再传递给其他 IBGP 邻居。这条规则是为了防止 AS 内部出现路由环路但它带来了一个严重副作用路由信息在 IBGP 域内“传不远”。假设 AS 内部有 3 台 BGP 路由器R1、R2、R3。R1 从 EBGP 学到了外部路由 10.0.0.0/8。R1 可以把这个路由告诉 R2IBGP 邻居也可以告诉 R3IBGP 邻居。但是R2 不能再把这个路由告诉 R3R3 也不能告诉 R2。结果R2 和 R3 都只知道 R1 直接告诉他们的那些路由。如果 R1 只告诉了 R2那么 R3 就永远学不到这条路由。为了让 R1、R2、R3 都能学到所有外部路由唯一的办法是让每一对路由器都直接建立 IBGP 邻居关系。这样每台路由器都能从所有其他路由器那里直接获取路由信息就能在整个 AS 内同步。2.2 全互联如何解决黑洞回到我们之前的实验R1、R3 是边界路由器与外部 AS 相连R2 是纯内部路由器。如果不做全互联R2 不运行 BGP则 R2 没有外部路由 → 黑洞。如果做全互联R2 也加入 BGP并与 R1、R3 分别建立 IBGP 邻居R1 将从 R4 学到的10.10.4.4/32通过 IBGP 直接告诉 R2 和 R3。R3 将从 R5 学到的10.10.5.5/32通过 IBGP 直接告诉 R1 和 R2。R2 的 BGP 路由表中就有了这两条外部路由并写入 IP 路由表。数据包到达 R2 时能查到目的地址的路由黑洞消失。2.3 全互联的物理与逻辑物理上路由器之间不需要直连只要 IP 可达即可通常通过 IGP 提供。逻辑上每一对路由器之间都有一条 BGP 会话TCP 连接形成一个逻辑上的“全连接”网。3. 深度辨析 常见误解误解 1IBGP 全互联 物理直连纠正IBGP 邻居不要求直连只要路由可达。全互联是指逻辑上的邻居关系而不是物理拓扑。比如 R1 和 R3 可以通过 R2 中转建立 IBGP 会话只要 OSPF 让它们互通。误解 2只要运行 BGP 就自动全互联纠正BGP 邻居需要手动配置。如果不配置路由器之间就没有 BGP 会话自然不会自动同步路由。误解 3全互联可以解决所有问题纠正全互联解决了路由传递问题但带来了新的问题——n² 邻居数。当 BGP 路由器数量较多时配置和维护非常复杂资源消耗大。因此大型网络使用路由反射器替代全互联。基础配置 实验排障拓扑以我们之前的实验为例AS200 内三台路由器R1、R2、R3。R1 与 R4AS100EBGPR3 与 R5AS300EBGP。要求R1、R2、R3 都运行 BGP并两两建立 IBGP 邻居。配置要点# R1 bgp 200 router-id 1.1.1.1 peer 192.168.12.2 as 200 # 与 R2 IBGP peer 192.168.23.3 as 200 # 与 R3 IBGP注意R1 与 R3 没有直连但通过 OSPF 互通 # R2 bgp 200 router-id 2.2.2.2 peer 192.168.12.1 as 200 # 与 R1 IBGP peer 192.168.23.3 as 200 # 与 R3 IBGP # R3 bgp 200 router-id 3.3.3.3 peer 192.168.12.1 as 200 # 与 R1 IBGP peer 192.168.23.2 as 200 # 与 R2 IBGP验证邻居状态每台路由器上执行display bgp peer应看到其他两台邻居均为Established。BGP 路由表display bgp routing-table应看到从 EBGP 学到的外部路由并且这些路由在每台路由器上都有。IP 路由表display ip routing-table外部路由已加入R2 能转发到外部。连通性测试在 R4 上ping -a 10.10.4.4 10.10.5.5应通。EBGP的直连检测机制EBGP的直连检测机制是通过IP报文头中的TTL字段实现的一种防环防攻击机制。默认要求EBGP邻居之间必须是直连的物理链路不允许跨设备建立邻居从而确保路由交换发生在真实的边界上提高网络的可靠性。EBGP的默认行为两台路由器建立EBGP邻居时发出的TCP报文用于建立BGP会话中TTL字段默认设置为1。TTL1意味着这个报文只能经过0次转发即只能到达直连的设备。如果对方不在直连网段报文经过中间路由器时TTL减为0被丢弃TCP三次握手失败EBGP邻居无法建立。为什么要这样设计目的解释防止路由环路确保EBGP邻居必须是直连的避免跨AS形成环路。AS_PATH虽然能防环但直连检测是第一道防线防止攻击攻击者如果不在直连链路上无法伪造BGP报文建立邻居降低了BGP会话被劫持的风险保证可靠性强制边界路由器之间的连接是物理直连链路状态更可控、更稳定深度辨析 常见误解误解一EBGP邻居必须物理直连纠正默认要求直连但可以通过配置ebgp-multihop命令突破这个限制。ebgp-multihop允许你设置一个更大的TTL值如255让报文可以穿越多台路由器到达对端。误解二直连检测是为了检查IP地址是否在同一网段纠正检测的核心是TTL值是否为1而不是检查IP网段。两台路由器即使配置了同一网段的IP但如果中间隔着其他设备比如通过二层交换机直连TTL1的报文仍然能到达因为二层转发不改变TTL所以可以建立EBGP邻居。直连检测的本质是限制跳数而非网段。误解三IBGP也默认要求直连纠正IBGP的默认TTL是255允许跨设备建立邻居。因为IBGP在同一AS内部防环机制靠的是不传递IBGP路由规则而不是TTL。BGP的四个原则BGP的四个核心路由传递原则是确保互联网路由稳定、高效和无环路的关键设计它们共同构建了AS间路由传递的可靠框架。1. 核心思想BGP通过严格的路由发布规则确保网络无环路、路由可达且高效稳定其中最优路由选择、EBGP全传播、IBGP水平分割和同步机制是四大支柱。2. 底层原理 设计逻辑原则一只发布最优且有效即下一跳地址可达路由原理BGP路由器在向邻居发布路由前必须确认该路由是最优通过BGP属性比较得出且有效下一跳地址可通过IGP或静态路由到达。设计逻辑BGP路由表中同时存在*有效和最优标志的路由才会被发布。若下一跳不可达如IGP中无此路由即使BGP表中存在该路由也不会发布给邻居。生活类比快递公司只配送地址明确且可达的包裹避免无效投递浪费资源。原则二从EBGP邻居获取的路由会发布给所有邻居原理从外部ASEBGP学习到的路由会传递给所有EBGP和IBGP邻居。设计逻辑EBGP路由默认优先级高于IBGP和IGP确保外部路由优先传播。传递给IBGP邻居时下一跳地址不变仍为EBGP邻居的地址需依赖IGP确保下一跳可达。现网视角若不传播EBGP路由AS内部无法访问外部网络互联网将碎片化。原则三从IBGP邻居获取的路由不会发送给其他IBGP邻居IBGP水平分割原理IBGP学习到的路由仅用于自身路由决策不会传递给其他IBGP邻居。设计逻辑防止AS内部形成路由环路如R1→R2→R3→R1的无限循环。IBGP设计为一跳传递避免AS内部路由震荡影响全局。生活类比公司内部会议纪要仅限参会者知晓避免信息在部门间无限转发导致失真。原则四BGP同步原则原理从IBGP邻居学习到的路由必须先通过IGP验证其可达性才能发布给EBGP邻居。设计逻辑防止路由黑洞AS内部部分路由器未运行BGP导致流量到达后无法转发。同步检查若IGP中无对应路由则认为不同步不向EBGP发布。现网视角若不检查同步外部AS可能将流量导入本AS但内部路由器无法转发造成流量黑洞。为什么“IBGP传给IBGP”会导致环路你必须抓住一个核心前提IBGP在传递路由时不会修改AS_PATH属性。1. 核心差异EBGP有“记号”IBGP是“盲传”BGP的四个原则——深度解析要把 BGP 这四条路由传递原则讲透核心先抓住BGP 的设计定位它是运行在骨干网如联通省 / 地市骨干云、公网骨干链路的外部网关协议EGP面对的是海量路由条目、跨自治系统AS的复杂组网其设计核心不是 “快速收敛”这是 OSPF/ISIS 等 IGP 的事而是绝对避免路由环路、防止无效路由传递、消除路由黑洞、提升骨干网路由传递的稳定性和效率。这四条原则都是围绕这个核心目标展开的且相互配合形成闭环。先铺垫核心概念AS自治系统可以理解为一个独立的网络管理域比如周口联通属于一个 AS、河南联通省网是一个 AS、阿里云 / 腾讯云各是一个独立 ASAS 之间用EBGP互通AS 内部用IBGP互通最优有效路由BGP 有一套完整的选路规则如本地优先级、AS 路径长度、下一跳等会从多条可达路由中选唯一最优的且下一跳 IP 在本地路由表中可达通过 IGP / 静态路由学到路由黑洞数据包到达某台设备后设备有该目的地址的路由但下一跳不可达导致数据包被丢弃这是骨干网运维的核心故障点比如你负责的骨干云云网关路由黑洞会直接导致政企客户云服务中断。第一条原则只发布最优且有效下一跳可达的路由规则本身BGP 设备在向邻居发布路由时只会从自己的 BGP 路由表中选择「最优路由」且该路由的下一跳地址必须在本地 IP 路由表中可达无效 / 非最优路由一律不发。核心设计原因杜绝无效路由传递减少骨干网资源浪费避免 “无效路由占用网络资源”骨干网如联通省际链路、骨干云跨节点链路的带宽和设备 CPU / 内存都是核心资源BGP 路由条目动辄上万条如果允许发布下一跳不可达的无效路由邻居设备接收后不仅用不了还会占用其路由表空间、处理资源甚至可能让邻居选到这条无效路由形成路由黑洞。✅ 贴合工作你负责的骨干云云网关设备的 BGP 路由下一跳如果是云服务器的网关若该网关不可达比如云主机宕机这条路由就不会被发布避免其他云网设备走这条无效路径。避免 “多路由冗余传递”BGP 设备可能从多个邻居学到同一条目的地址的路由但只会选最优的一条比如 AS 路径更短、本地优先级更高如果把所有路由都发布会导致骨干网路由泛洪大幅降低路由传递效率。工程意义这是 BGP 的基础过滤规则也是运维中排查 BGP 路由发布故障的第一检查点如果某条路由没发布先看是否是「非最优」或「下一跳不可达」。第二条原则从 EBGP 邻居获取的路由会发布给所有邻居IBGP / 其他 EBGP 都发规则本身从不同 AS 的 EBGP 邻居学到的路由会无差别发布给本设备的所有 IBGP 邻居和其他 EBGP 邻居只要满足第一条的 “最优有效”让 AS 内所有设备都知道外部路由EBGP 路由是跨 AS 的外部路由比如周口联通从阿里云 EBGP 学到的云服务路由、从省联通 EBGP 学到的省网路由AS 内的所有 BGP 设备如骨干云的核心节点、公网 PE 设备、信创云网关都需要知道这条路由才能实现AS 内任意节点访问外部 AS因此必须发给所有 IBGP 邻居。让本 AS 成为外部路由的 “转发节点”骨干网的 AS 通常是路由中转节点比如省联通是各地市联通和全国骨干网的中转从一个 EBGP 邻居学到的路由需要发给其他 EBGP 邻居实现跨 AS 的路由互通比如周口联通从本地广电 EBGP 学到路由再发给省联通 EBGP让全省联通都能访问广电网络。工程意义这条原则是跨 AS 路由互通的基础也是运营商骨干网网间互联、云网融合的核心规则比如你负责的骨干云云服务商的 EBGP 路由进入联通 AS 后能快速传递到 AS 内所有云网设备。第三条原则IBGP 水平分割从 IBGP 邻居获取的路由不会再发送给其他 IBGP 邻居规则本身从同 AS 的 IBGP 邻居学到的路由绝对不会再发布给其他 IBGP 邻居但可以发给 EBGP 邻居只要满足其他原则这是 BGP 最核心的防环路规则之一。核心设计原因彻底避免 AS 内的路由环路减少冗余路由传递这是运维中最需要理解的原则AS 内的 IBGP 邻居通常是「全连接」或通过「路由反射器 / 联邦」组网如果没有水平分割会直接引发两个致命问题AS 内路由无限环路导致设备瘫痪假设周口联通 AS 内有三台 IBGP 设备A骨干云网关→B核心交换机→C信创云网关三者两两 IBGP 互联。如果 A 把路由发给 BB 再发给 CC 又发给 A就会形成A→B→C→A 的无限路由环路骨干网设备的 CPU 会被无限循环的路由更新占满直接引发设备宕机。✅ 水平分割从根源上杜绝了这种情况B 从 AIBGP学到路由不会发给 CIBGP环路无法形成。减少 AS 内的冗余路由传递AS 内的 BGP 路由本就该通过全连接 / 路由反射器实现全网同步而非通过邻居 “接力转发”。如果允许 IBGP 之间转发路由会导致同一条路由在 AS 内多次传递占用骨干网链路带宽和设备资源。工程意义IBGP 水平分割是AS 内 BGP 组网的基础但它也带来一个问题AS 内非直连的 IBGP 邻居无法通过接力转发学到路由。因此实际运维中我们不会让 AS 内所有设备两两 IBGP 全连接设备多了会导致邻居数爆炸而是通过路由反射器RR解决这个问题第四条原则BGP 同步原则规则本身先明确很多人会模糊这个规则核心是「IBGP 路由与 IGP 同步」如果一台 BGP 设备从 IBGP 邻居获取了一条路由那么在将这条路由发布给 EBGP 邻居之前必须确保这条路由的目的网络已经在本 AS 的 IGP如 OSPF/ISIS联通骨干网常用 ISIS中存在且可达。简单说IBGP 路由要先被 IGP “认可”才能对外EBGP发布。核心设计原因防止跨 AS 的路由黑洞这是同步原则的唯一核心目标周口联通 AS 内设备 A骨干云节点IBGP给设备 B核心 PE 设备IBGP一条云路由10.0.0.0/24云主机网段但周口联通的 IGPISIS中没有 10.0.0.0/24 的路由设备 B 的 IGP 路由表中查不到这个网段。若没有同步原则设备 B 会直接把这条 10.0.0.0/24 的路由发布给省联通的 EBGP 邻居省联通设备发送数据包到 10.0.0.0/24 时会把数据包发给设备 B但设备 B 的 IGP 中没有这条路由的下一跳数据包直接被丢弃形成跨 AS 的路由黑洞省联通到骨干云的业务直接中断。同步原则通过强制 IBGP 路由与 IGP 同步确保本 AS 能通过 IGP 到达该路由的目的网络再对外发布从根源上避免了跨 AS 的路由黑洞。关键补充现在运维中几乎都会「关闭同步原则」同步原则虽然能防黑洞但有个致命缺陷IGPOSPF/ISIS的设计目标是小范围、快速收敛无法承载骨干网海量的 BGP 路由。如果强制所有 IBGP 路由都在 IGP 中发布会导致 IGP 路由表爆炸引发 IGP 收敛故障。现在运营商 / 云厂商的骨干网中我们通过两个技术替代了同步原则的作用因此会直接配置no synchronization关闭同步路由反射器RR让 AS 内的 IBGP 路由高效同步确保所有 BGP 设备都能学到最优路由MPLS L3VPN骨干网通过 MPLS 承载 BGP 路由IGP 只负责传递设备节点的 32 位主机路由不承载业务路由既避免了 IGP 路由爆炸又能保证下一跳可达。四条原则的核心配合围绕 BGP 核心目标形成 “防环 防黑洞 高效传递” 的闭环把四条原则串起来就能看到 BGP 的设计巧思 ——所有规则都不是孤立的而是相互配合解决骨干网路由传递的核心问题1、第一条是基础过滤从源头杜绝无效路由为后续所有规则打下基础2、第二条 第三条是防环核心EBGP 路由全网发实现跨 AS 互通IBGP 路由不转发杜绝 AS 内环路兼顾「互通」和「防环」3、第四条是防黑洞补充针对 IBGP 路由对外发布的场景防止跨 AS 黑洞现在虽被技术替代但设计初衷是 BGP 稳定性的重要保障。二层环路和路由环路的联系与区别二层环路和路由环路是网络中两类最核心的环路故障二者虽本质都是数据包无限转发导致网络资源耗尽但分属不同网络层次在产生原因、传播范围、故障表现、防环逻辑上有本质区别同时在实际组网中二者会相互影响、叠加故障二层环路会直接引发三层路由故障路由环路也会加剧二层网络负担。一、核心联系两类环路的共性本质相同故障连锁本质一致都是网络设备对数据包 / 路由信息的无限转发 / 循环传递最终导致网络资源带宽、CPU、内存被耗尽故障传播性二者都不是单点故障会从故障点向周边网络扩散小范围环路可能引发整网瘫痪比如云接入层二层环路会蔓延到骨干三层网关骨干网 BGP 路由环路会导致省 / 地市间链路拥塞叠加触发二层环路会直接引发三层路由故障甚至间接导致路由环路路由环路会加剧二层网络的转发压力形成 “二层故障→三层异常→二层更拥堵” 的恶性循环防护逻辑相通防环的核心思路都是 **“限制转发范围 / 次数”“切断循环链路”**只是不同层次的实现手段不同。二、核心区别分属两层天差地别最关键表格清晰对比二层环路属于数据链路层L2故障路由环路属于网络层L3故障转发依据的地址、产生范围、故障表现是二者的根本区别以下表格结合运营商 / 云网运维场景做精准对比覆盖你日常工作会接触的所有核心维度对比维度二层环路L2路由环路L3所属层次数据链路层网络层转发依据MAC 地址设备根据 MAC 地址表转发数据帧无 MAC 表时泛洪IP 地址设备根据路由表转发数据包按目的网段匹配下一跳产生范围同一广播域 / VLAN内如信创云接入层交换机、骨干云主机所在 VLAN、地市联通接入层跨网段 / 跨 AS / 跨路由协议域如骨干网 BGP/OSPF 区域、省 / 地市联通三层骨干、云网互联路由环路对象数据帧二层封装的以太网帧无 TTL 字段IP 数据包三层封装有 TTL 字段路由更新信息如 BGP 路由、OSPF LSA核心成因二层链路物理 / 逻辑冗余未做防环配置如交换机级联未开 STP、云内 VLAN 配置错误路由协议配置疏漏 / 规则违背如 BGP 水平分割未遵守、OSPF 区域配置错、路由重分发无过滤 静态路由配置不当典型故障表现1. 广播风暴ARP / 组播包无限泛洪2. MAC 地址表震荡MAC 地址反复漂移3. 同广播域内设备断网、端口流量跑满1. 路由表震荡路由条目反复增删、下一跳频繁变化2. 数据包逐跳循环TTL 逐跳减 1最终丢弃3. 跨网段 / 跨 AS 业务中断、链路拥塞防环核心思路切断物理 / 逻辑循环链路阻塞冗余端口限制广播泛洪限制路由信息循环传递协议自身防环规则限制数据包转发次数TTL过滤无效路由云网运维典型防环手段STP/RSTP/MSTP运营商主流 MSTP、EVPN VXLAN 防环、端口隔离、VLAN 精细规划BGP 水平分割 / AS_PATH / 同步原则、OSPF 区域划分 / LSA 老化、路由策略 / 过滤、TTL 机制、路由反射器对你的影响场景信创云主机接入层、骨干云交换机级联、地市联通接入层 VLAN骨干云网关三层路由、省 / 地市联通 BGP/ISIS 骨干、云网互联 EBGP 路由、信创云跨节点三层组网

更多文章