内部网关协议IGP、外部网关协议EGP防止环路的方案

内部网关协议IGP(如RIP、OSPF、ISIS)的防止环路的方案:

1、RIP协议

机制 作用 收敛加速效果
周期性更新(30秒) 基线更新 慢(秒~分钟级)
触发更新 检测到变化后立即发送 显著加速(收敛时间缩短到数秒内)
触发更新 + 抑制计时器 + 毒性逆转 避免环路等 更可靠,但收敛时间仍在秒级

结论 :触发更新是RIP加速收敛的关键手段之一 ,让RIP能较快响应网络故障,但仍无法突破其固有局限。对于需要亚秒级 收敛和大规模网络的场景,OSPF或IS-IS仍然是更合适的选择。

"毒性逆转":主动"撒谎"来快速同步信息

"毒性逆转"是为像RIP这样的距离矢量协议设计的防环机制,它通过"主动通告坏消息"来加速网络收敛。

  • 核心思想 :当路由器发现某个网段不可达 时,它不会沉默,而是会主动 在更新路由时,将这个失效网段的跳数设置为 16 (即RIP协议定义的"无穷大"或"不可达"),并通告给它的邻居。
  • 工作原理:这个"16"就是一个有毒的信号。当它的邻居B收到这个更新时,就能立刻知道该网段已失效并更新自己的路由表(通过触发更新将信息传遍全网),无需再等待长达180秒的无效计时器计时。
  • 与水平分割的区别
    • 水平分割:是避免"事物重复"的简单规则。A从接口X学到某条路由,就不会再从X接口把它通告回去。
    • 毒性逆转:是水平分割的加强版,会主动通告"有毒"的坏消息,能更主动地打破环路风险。

问:rip总共16跳,收敛的速度慢,如果设置成8跳或者10跳不是更好吗?现在的网络设备性能、吞吐量越来越强,足够处理大多数局域网段的数据包收发了。更大的广域网就用ospf协议就行。

答:RIP的最大跳数限制,本质上是为它的"距离矢量"算法兜底的安全机制,而不是因为设备性能不够

如果RIP的最大跳数被设为8 ,那么一个网络直径就不能超过8。这在今天很多稍微大一点的局域网里都不够用(比如一个大学校园网可能轻松超过10跳)。所以8或10会过度限制网络规模,让RIP连普通中型网络都覆盖不了。历史上RIP选择15跳,是因为在80年代末期15跳已经能覆盖绝大多数局域网和校园网,并且与"16作为无穷大"的二进制表示(4位)契合,实现简单。

如果简单地把最大跳数提高到32,确实能让RIP覆盖更大的网络,但代价是收敛时间会急剧恶化。不仅不能提升RIP的实用性,反而会暴露它的算法缺陷。

  • "数到无穷"时间延长 :当网络出现故障(比如某条链路断开),RIP依靠"16跳=不可达"来终结环路的传播。如果最大跳数变成32,那么一个失效的路由需要被递增到33跳才能被判定为不可达。在默认30秒更新周期下,最坏情况下需要 33 × 30秒 = 990秒(16.5分钟) 才能从所有路由器上彻底清除!这期间网络会持续存在路由环路,几乎不可用。
  • 触发更新也不能完全解决问题:虽然触发更新可以加速,但在复杂的网络拓扑中,仍然可能因为丢包或更新传播延迟,导致部分路由器陷入"慢收敛"状态。跳数上限越大,潜在的环路持续风险就越高。
  • RIP的度量值只有跳数:它无法像OSPF那样考虑带宽、延迟等更丰富的指标。在大网络中,15跳可能已经代表极长的物理距离或极低的带宽,再增加跳数只会让路由选择更不合理。

2、OSPF协议

OSPF协议主要依赖以下机制来避免路由环路:

  1. SPF算法(最短路径优先算法,也称Dijkstra算法)
    OSPF属于链路状态路由协议,每台路由器都维护整个区域(Area)的精确链路状态数据库(LSDB)。基于这个数据库,每台路由器独立以自己为根,计算出到所有目的地的最短路径树。由于每台路由器都使用同一份完整拓扑数据计算,且计算出的路径是树状结构(从根出发无分叉返回),因此天然不会产生环路
  2. 区域间必须经过骨干区域(Area 0)
    OSPF规定所有非骨干区域(Area 1,2,...)都必须与骨干区域Area 0直连,区域间的路由传递需通过Area 0。这种星型架构避免了区域间的潜在环路。如果试图在非骨干区域之间直接传递路由(例如通过虚链路不当配置),OSPF会利用防止区域间环路的机制(如要求ABR只通告从Area 0学到的区域间路由)来阻止。
  3. 水平分割原则
    在某些特定场景(如LSA泛洪),OSPF通过接口上的水平分割来避免重复发送和可能造成的临时环路。例如,从某个接口收到的LSA不会再从同一接口发回。

总结 :OSPF避免环路的根本手段是链路状态数据库 + SPF树计算,而不是距离矢量协议那种靠"最大跳数"或"毒性逆转"等被动防环措施。这就是OSPF能在大型复杂网络中实现快速、无环收敛的原因。

3、IS-IS协议

和 OSPF 一样,都是一种链路状态路由协议 ,其避免环路的核心原理也相似,都依赖于SPF(最短路径优先)算法。每台 IS-IS 路由器都拥有一份描述整个网络拓扑的精确地图(LSDB),并独立以自身为根计算出一棵无环的"最短路径树"。基于同一张全网拓扑信息计算出整个路径树,拓扑结构和计算过程本身天然无环。但在实际设计中,IS-IS 还有自己的一套防环机制:

🧱 分层架构

OSPF的分层依赖Area 0骨干区域,而IS-IS的L2区域本身就是骨干,所有L1区域必须通过L1/L2路由器连接到L2区域,这种设计自然地将整个域分成了"源汇聚域"(L1)和"传输骨干"(L2)两层,从架构上避免了跨区域的潜在环路。

  • Level-1 (L1):相当于OSPF的普通区域,只知道本区域的拓扑细节。
  • Level-2 (L2):相当于骨干区域,拥有区域间的完整拓扑。
  • Level-1-2 (L1/L2):连接L1和L2区域的边界路由器。

🔑 关键机制:为路由泄漏加装"警报器"

为了让L1区域能选择最优路径去往外部,可以配置"路由泄露"(Route Leaking),即把L2区域的部分路由"泄露"到L1区域中 。为了防止泄露后的路由信息又被传回L2形成环路,IS-IS利用LSP(链路状态协议数据单元)报文中的 Up/Down 比特位 来标记路由来源。

  • 当路由器将一条来自 L2区域 的路由泄露到 L1 区域时,会在该LSP中将 Up/Down 比特位 置位为 "Down"
  • 当 L1/L2 路由器收到来自 L1 区域的路由信息时,如果发现 Up/Down 比特位 已经为 "Down" ,表示这条路由是从L2泄露过来的"外来户",就不会再将它重新通告回 L2 区域。

简单来说,"Up/Down"位就像一个单向闸门,允许L2的路由单向流入L1,但禁止它们被重新注入回L2,从而有效防止了数据流在两个层级间来回"震荡"形成环路。

🩹 微环避免

无论是 OSPF 还是 IS-IS,在网络拓扑发生变化的瞬间,不同路由器收敛速度不一,也可能产生短暂的、微秒至毫秒级的瞬时环路。对此,IS-IS 有多种应对机制:

  • TI-LFA :在故障发生时,利用SR(Segment Routing)快速将流量切换到一条预先计算好、绝对无环的备份路径上。
  • 收敛后路径延迟安装 :让路由器在确定新的无环主路径前,等待一段预设的延迟时间,以确保所有路由器都刷新了路由表。

二、外部网关协议EGP(如BGP协议)防环机制

1、BGP的防环机制是分层设计的:AS之间依靠 AS_PATH 检查,AS内部依靠 IBGP水平分割 ,并通过**路由反射器(Route Reflector,RR)联盟(Confederation)**来优化内部防环机制。

🌐 AS之间 (EBGP):基于AS_PATH的"路径记录"

当路由在AS之间传递时,BGP依靠 AS_PATH属性 来防止环路。

  • 工作原理 :BGP路由每经过一个AS,该AS的编号就会被添加到AS_PATH列表的最左侧 (也叫追加 )。当一个路由器收到一条EBGP路由时,会立刻检查其AS_PATH:如果AS_PATH中包含了自身的AS编号,就说明这条路由曾经来过,构成了环路,于是会直接丢弃该路由,从而从根本上避免了环路。

🏢 AS内部 (IBGP) 的基础防环:水平分割与全互联

在同一个AS内部,AS_PATH在IBGP邻居间传递时不会改变,这意味着无法再用AS_PATH来检测环路。因此BGP定义了严格的 IBGP水平分割规则任何一个BGP路由器,从它的一个IBGP邻居学到的路由,都不能再通告给其他任何IBGP邻居

  • 如何生效 :这一规则有效防止了路由在AS内部"绕圈",但代价是路由信息在AS内部无法传递。为确保每台路由器都能学到完整路由,必须在AS内部建立一个全互联(Full-mesh)的IBGP邻居关系 ,但这(N个路由器的会话数是 N(N-1)/2)在大型网络中会带来巨大的资源开销。

📡 优化IBGP防环:如何打破水平分割

为了解决IBGP全互联的可扩展性问题,BGP在水平分割的基础上引入了两种打破限制的机制,同时配备了相应的防环措施。

1. 路由反射器
  • 核心思路 :在AS中设置若干台路由反射器 (Route Reflector, RR) 作为路由交换中心,允许它们有选择地将从IBGP学到的路由反射给其他IBGP邻居。
  • 防环措施
    • Originator_ID (发起者ID):由RR在反射路由时创建,值为路由发起者的Router ID。当该路由被传递时,如果其他路由器发现Originator_ID与自己的Router ID相同,就知道是自己发出的路由,从而将其丢弃。
    • Cluster_List (集群列表) :将多个RR和它们的客户机组成的集群(Cluster)进行标识。路由反射时,RR会将自身集群ID (Cluster ID) 添加到Cluster_List。当一条路由的Cluster_List中已包含某个RR的集群ID,该RR就不会再接收此路由,从而防止了集群间的环路。
2. 联盟 (Confederation)
  • 核心思路 :将一个大的AS划分为多个相互独立的子AS (Sub-AS) 。子AS内部保持IBGP全互联,而子AS之间则建立一种特殊的 联盟EBGP (Confederation EBGP) 连接。
  • 防环措施 :联盟利用了改进的AS_PATH机制:
    • 内部防环:路由在联盟内传递时,经过的子AS编号会被记录到AS_PATH中,有效防止了路由在子AS间环路。
    • 对外透明 :联盟对外部AS只通告大AS的编号,联盟内部的子AS编号不会被泄露,确保路由的简洁和稳定。

💎 总结

BGP通过一套分层协作的机制来防止路由环路:

  • AS之间 (EBGP) :靠 AS_PATH 属性实现"路径追溯"。
  • AS内部 (IBGP) :有两大优化方案:路由反射器 (RR) 凭借 Originator_IDCluster_List 两个属性进行防环;联盟 (Confederation) 则依靠特殊的 联盟AS_PATH 机制来检测环路。

2、外部网关协议(EGP)是一个协议类别。虽然边界网关协议(BGP)是其中最主流、甚至是当代唯一在用的标准,但并不是唯一一个,历史上还存在着它的"前任"------EGP协议,现在也有一些旨在替代BGP的新兴方案出现。

⏳ EGP:BGP的"前任"

在BGP成为行业标准之前,就有一种被称为EGP的协议。它是指一个特定的、已淘汰的协议,全称也叫外部网关协议(Exterior Gateway Protocol)。

它于20世纪80年代早期被开发出来,用于在当时还相对简单的互联网中连接不同的自治系统(AS),但存在不少问题:

  • 📏 拓扑限制:只能用于树状拓扑结构,适应性差。
  • 🚫 无环路避免:缺乏有效的机制,容易产生路由环路。
  • ⚙️ 功能简单:主要通告可达信息,不能进行路由优选。
  • 🥾 技术笨拙:依靠周期性更新,收敛慢,资源消耗大。

正是由于这些缺陷,它从20世纪90年代中期起,就被我们现在熟知的BGP所取代。

💡 探索BGP可能的继任者

目前业界已经有了一些旨在解决BGP固有缺陷(尤其是安全问题)的新兴方案,但大多还处于实验或小范围部署阶段。

  • SCION:由苏黎世联邦理工学院(ETH Zürich)开发的全新互联网路由架构。它对安全性的重新设计,能更有效地抵御路径劫持和路由泄露等攻击,已在银行、医疗等部分行业得到应用。
  • noBGP:面向云环境的网络平台。旨在通过创建私有且安全的网络,彻底消除对BGP和传统公网IP地址的依赖,让多云等环境下的网络连接变得更快、更强、更安全。
  • BIGP:一个早期的研究性建议,未曾推广。

📊 总结

协议分类 具体名称 全称/说明 当前状态
通用类别 External Gateway Protocol (EGP) 外部网关协议,AS间的路由协议类别 "活化石":活跃于80-90年代,现已淘汰
当前事实标准 Border Gateway Protocol (BGP) 边界网关协议,互联网基石 现行标准:迄今仍是唯一被广泛使用的EGP协议
未来探索方案 SCION 新一代安全路由架构 探索中:已在部分行业部署
noBGP BGP替代云网络平台 探索中:已在部分行业部署
相关推荐
上海云盾王帅1 小时前
网站被攻击了怎么办?三步走应急响应与长效防护方案
网络·安全·web安全
其实防守也摸鱼1 小时前
软件安全与漏洞--实验 软件安全设计
开发语言·网络·python·安全·软件安全·实验·软件安全设计
H_z_q24011 小时前
HCIP的OSPF接口网络类型
网络
数智化精益手记局1 小时前
设备管理与维护包括哪些内容?详解设备管理与维护的流程
网络·数据库·人工智能
HehuaTang2 小时前
IPOIB TCP ROCE IB 性能比较
网络·云计算
七夜zippoe2 小时前
OpenClaw 记忆维护:自动整理与归档
大数据·网络·数据库·openclaw·记忆维护
水煮白菜王2 小时前
Claude Code 全方位使用手册
java·开发语言·网络
minji...2 小时前
Linux 网络基础(三)HTTP的请求方法(GET/POST),HTTP表单、临时和永久重定向状态码、Cookie、查询参数、Web根目录
linux·运维·服务器·网络·c++·http
wefg12 小时前
【计算机网络】IP 协议(IP划分/公私IP/NAT/路由/分片组装/mac帧/MTU/MSS/ARP协议)
网络·tcp/ip·计算机网络