在华为 eNSP模拟环境 及现网环境中“路由黑洞”是指数据包在转发过程中由于路由表缺失明细、路由环路或中间节点未同步路由信息导致数据包被无声丢弃的现象。本文档将深入解析两种最典型的路由黑洞场景静态路由汇总引发的环路黑洞与BGP IBGP 引发的转发黑洞。场景一静态路由汇总与 NULL0 防环1. 概念与作用路由汇总Route Summarization将多个连续的明细子网聚合成一条大网段路由发布用于减小路由表规模、隐藏网络拓扑变化。路由黑洞成因当汇总网段中包含了实际不存在的子网时如果目的地址属于该不存在的子网数据包会被引流到汇总始发路由器。若始发路由器没有防环机制且配置了缺省路由数据包将在两台路由器之间来回转发形成路由环路最终因 TTL 耗尽而被丢弃。NULL0 接口华为设备上的虚拟“黑洞”接口。任何发往 NULL0 接口的数据包都会被立即静默丢弃常用于防止路由环路和缓解 DDoS 攻击。2. 实验拓扑与现象[外部网络/AR2] | (WAN: 12.1.1.2/30配置缺省路由指向 AR1) | 12.1.1.0/30 | [AR1] (WAN: 12.1.1.1/30LAN: 192.168.1.254/24) | [PC1] (192.168.1.1/24)网络现状AR1 身后实际只有192.168.1.0/24网段。路由发布AR1 向 AR2 汇总发布192.168.0.0/22包含 192.168.0.0 ~ 192.168.3.0。黑洞触发外部用户访问192.168.3.1属于汇总网段但实际不存在。AR2 匹配汇总路由发给 AR1 ➔ AR1 查不到192.168.3.0/24明细 ➔ AR1 匹配缺省路由发回 AR2 ➔形成环路黑洞。3. eNSP 关键配置AR1汇总始发端配置# 1. 配置接口 IP interface GigabitEthernet0/0/0 ip address 12.1.1.1 255.255.255.252 interface GigabitEthernet0/0/1 ip address 192.168.1.254 255.255.255.0 # 2. 配置指向 NULL0 的汇总防环路由核心 # 作用利用最长匹配原则有明细走明细无明细则命中此条被丢弃防止回灌形成环路 ip route-static 192.168.0.0 255.255.252.0 NULL0 # 3. 配置缺省路由指向外部模拟出口 ip route-static 0.0.0.0 0.0.0.0 12.1.1.2(ip route-static 192.168.1.0 ... LoopBack0属于模拟写法实际实验中 192.168.1.0/24 若为直连网段直接配置在物理接口或 VLANIF 上即可无需额外写静态路由。)AR2对端设备配置# 配置缺省路由指向 AR1或配置指向 AR1 的汇总静态路由 ip route-static 0.0.0.0 0.0.0.0 12.1.1.14. 验证与命令解析验证防环生效AR1 display ip routing-table 192.168.3.1输出结果应显示下一跳为NULL0。当外部访问不存在的192.168.3.1时数据包在 AR1 被直接丢弃环路被打破。结论在执行路由汇总时必须在汇总始发路由器上配置一条指向NULL0接口的同网段静态路由这是标准防环做法。场景二BGP IBGP 转发黑洞HCIP/HCIE 经典案例1. 概念与作用IBGP 防环机制为了防止 AS 内部产生路由环路BGP 规定从 IBGP 邻居学到的路由不会再传递给其他 IBGP 邻居即 IBGP 水平分割原则。BGP 路由黑洞成因在 AS 内部如果 IBGP 邻居没有全互联Full-Mesh且中间 transit transit/转发路由器没有运行 BGP。当边缘 BGP 路由器将数据包发给中间路由器时中间路由器由于没有 BGP 路由表无法转发该数据包从而形成黑洞。解决思路让中间设备获知路由全互联/路由反射器或让数据包绕过中间设备的 IP 路由查找隧道技术。2. 实验拓扑与现象AS 65001 AS 65000 (ISP 内部运行 OSPF) AS 65002 (R1) ─EBGP─ (R2) ─OSPF─ (R3) ─OSPF─ (R4) ─EBGP─ (R5) 1.1.1.1 ↑ IBGP (Loopback 互联) ↑ 5.5.5.5 (R3 不运行 BGP仅运行 OSPF)黑洞触发R5 访问 R1 的1.1.1.1。R4 通过 BGP 获知1.1.1.1下一跳为 R2。R4 递归查找 OSPF 路由将数据包发给 R3。黑洞现象R3 仅运行 OSPF没有 BGP 路由表不知道如何到达1.1.1.1数据包被无声丢弃。3. 基础配置片段eNSPOSPF 配置R2/R3/R4 均需配置确保 Loopback 互通# 以 R2 为例 (R3 用 3.3.3.3R4 用 4.4.4.4) ospf 1 router-id 2.2.2.2 area 0 network 2.2.2.2 0.0.0.0 network 23.1.1.0 0.0.0.3 # 互联接口网段BGP 配置以 R2 为例R4 对称配置bgp 65000 router-id 2.2.2.2 peer 4.4.4.4 as-number 65000 # 建立 IBGP peer 4.4.4.4 connect-interface LoopBack0 peer 10.0.12.1 as-number 65001 # 建立 EBGP (连 R1) # ipv4-family unicast peer 4.4.4.4 enable peer 4.4.4.4 next-hop-local # 【关键】修改下一跳为本地否则 R4 无法递归 peer 10.0.12.1 enable4. 三种解决 BGP 黑洞的方案方案 AIBGP 全互联让 R3 也运行 BGP让 AS 内所有路由器建立 IBGP 邻居使 R3 获知完整 BGP 路由。# R3 配置 BGP bgp 65000 router-id 3.3.3.3 peer 2.2.2.2 as-number 65000 peer 2.2.2.2 connect-interface LoopBack0 peer 4.4.4.4 as-number 65000 peer 4.4.4.4 connect-interface LoopBack0缺点IBGP 邻居数呈 N(N−1)/2N(N−1)/2 增长扩展性差仅适用于小型网络。方案 B路由反射器 RRRoute Reflector现网推荐打破 IBGP 水平分割规则由 RR 将路由反射给其他客户端。# 在 R2 上配置为路由反射器R3 和 R4 作为客户端 bgp 65000 ipv4-family unicast peer 3.3.3.3 reflect-client peer 4.4.4.4 reflect-client优点大幅减少 IBGP 邻居数量同时保证 R3 能够学到 BGP 路由消除黑洞。方案 CMPLS / GRE 隧道现网核心网常用中间设备R3不需要获知 BGP 路由通过隧道技术让数据包直接“穿透”中间网络。# GRE 隧道示例R2 配置R4 对称配置 interface Tunnel0/0/0 tunnel-protocol gre source 2.2.2.2 # R2 的 Loopback destination 4.4.4.4 # R4 的 Loopback ip address 172.16.0.1 255.255.255.252 # 将 BGP 路由的下一跳指向隧道接口或通过 IGP 引入优点核心路由器P 设备只需维护 IGP 和隧道/标签转发表无需承载庞大的 BGP 路由表极大节省设备资源。三、核心概念与排错命令总结1. 概念对照表黑洞类型核心成因触发条件标准解决方案静态汇总黑洞汇总网段包含不存在的子网且设备间存在互指缺省路由。访问汇总网段内不存在的明细 IP。在汇总始发端配置ip route-static [汇总网段] [掩码] NULL0。BGP 转发黑洞IBGP 水平分割导致中间 Transit 路由器未学习到 BGP 路由。跨 AS 流量经过未运行 BGP 的中间 AS 内部路由器。1. IBGP 全互联2. 路由反射器 (RR)3. MPLS LDP / GRE 隧道2. eNSP 常用排错与验证命令命令作用与排查场景display ip routing-table [IP]最常用。查看特定 IP 的精确匹配路由。用于验证 NULL0 防环是否生效或检查中间设备是否有去往目的地的路由。display bgp routing-table [IP]查看 BGP 路由表。用于检查 BGP 路由是否下发、下一跳是否可达Recursive lookup 失败是 BGP 黑洞常见原因。tracert [目的IP]路径追踪。如果 tracert 在中间某台设备后出现* * *或 IP 地址来回交替即可直观判定出现了路由黑洞或环路。display ip routing-table protocol ospf检查 OSPF 路由表。在 BGP 场景中用于验证 BGP 下一跳的 Loopback 地址是否通过 IGP 成功递归。3. 易错点BGP 下一跳不可达在 EBGP 向 IBGP 传递路由时默认不改变下一跳。必须在边界路由器如 R2/R4使用peer [IBGP邻居] next-hop-local命令将下一跳修改为本地否则 IBGP 对等体无法递归查找到下一跳导致路由不活跃Unactive从而引发黑洞。NULL0 路由优先级在华为设备中静态路由的默认优先级为 60。配置 NULL0 静态路由时确保其优先级高于或等于其他可能覆盖该网段的路由如 OSPF 内部路由优先级为 10会优先于静态路由通常汇总网段在本地没有更优的明细 IGP 路由时NULL0 路由才会作为最后的兜底生效。