内部网关协议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替代云网络平台 探索中:已在部分行业部署
相关推荐
liulilittle18 小时前
为什么采用全局管理缓存及状态:麻将客户端状态管理
服务器·网络·游戏·客户端·异步·mahjong·麻将
酣大智19 小时前
OSPF引入的直连路由在 ospf 路由表中看不到
网络·ospf
2601_9663771319 小时前
等保2.0最新标准新增安全数据处理要求后怎么办?等保一体机数据安全模块来助力
运维·网络·安全·等保一体机
BullSmall19 小时前
window系统上报Cannot assign requested address
网络·功能测试
杨云龙UP19 小时前
MySQL Host is blocked because of many connection errors 导致 JDBC 连接失败排查与解决
linux·运维·网络·数据库·sql·mysql·登录失败
执念WRD19 小时前
Fastjson 1.2.83 RCE 漏洞利用
网络·安全·网络安全
xixiaoyunya19 小时前
局域网多电脑文件互备:从传统痛点到自动化方案的技术路径
网络·安全
Lynne30920 小时前
为什么工业数据越来越需要在现场处理?边缘计算正在解决什么问题?
网络·数据分析·数据
m0_7345717621 小时前
深入理解5g <十二> pucch
网络·5g
闲云野鹤在人间21 小时前
Docker入门|第3章 镜像详解
linux·网络·docker·容器·centos·云计算·php