组网第二课:X.25 与帧中继——第一次让带宽“拼车“

组网第二课:X.25 与帧中继------第一次让带宽"拼车"

上次讲完 DDN,有位老装维师傅打电话来:"你说的那个 DDN 我用了十几年,确实稳,但有个事我一直想不通------我那条 64K 线,白天网点忙的时候也就跑个十几 K,晚上整个楼都下班了,线路还亮着灯,64K 一比特没少占。这不是白花钱吗?"

我说:师傅,您说到点子上了。DDN 的死穴就是这个------独占的管道,闲着也占着。九十年代运营商算过一笔账:DDN 骨干中继的平均利用率不到 30%,70% 的带宽在"空跑"。这要搁今天,叫"资源浪费";但在当时,这是唯一的选择。

直到有人琢磨出:能不能让大家"拼车",谁有数据谁上路?于是,分组交换登场了。

一、DDN 的死穴:独占 = 浪费

上一课讲透了 DDN 的端到端原理:半永久连接、固定带宽、透明传输。它什么都好,就一条死穴------

独占的管道,闲着也占着。

银行网点下午五点下班,专线空跑到第二天早上八点;税务大厅周末没人办事,专线照常亮着灯。运营商的骨干中继上,A 客户闲着、B 客户忙着,但 A 的 64K 时隙谁也抢不走,B 的数据只能排队等自己的份额。带宽利用率低,是 DDN 最致命的伤。

而且 DDN 还有两个硬伤:

  • 2M 封顶:再想快?没门,E1 接口的天花板就在那;
  • 按距离计费:64K 从县里到省城,和 64K 从县里到北京,价格差好几倍------因为独占的物理资源一路占过去。

工程师们开始琢磨一个新思路:能不能不独占物理通路,让数据"打包"上路,多家共享一条中继,谁有数据谁走?

二、分组交换:从"包车"到"拼车"的范式革命

这就是**分组交换(Packet Switching)**的核心思想。和 DDN 的电路交换对比,本质区别就一条:

电路交换(DDN)= 包车:先通路再传数据,全程独占物理资源。不管您用不用,路都占着。

分组交换(X.25/帧中继)= 拼车:数据切成小块(分组/帧),每块贴个标签,网络边走边转。多家共享一条中继,谁有数据谁上路,闲时不占。

这个范式转变带来三个根本变化:

  1. 中继利用率飙升:同一条骨干中继上,A、C、D 三个客户的数据分组排队发送------A 闲了 C 上,C 闲了 D 上,统计复用,中继利用率从 30% 提到 70%+;
  2. 带宽可以"承诺+超额":不再像 DDN 死守固定带宽,而是给您一个"承诺速率"(保证的最低带宽),允许临时超额(有空就多跑),忙时再收回------这就是后面帧中继 CIR/EIR 的雏形;
  3. 需要信令和拥塞管理:DDN 不用信令(局端配好就常通),分组交换不行------得有协议来建连接、管流量、防拥塞。

三、X.25:分组交换的开创者

X.25,1976 年 ITU-T 发布的国际标准,是人类第一个真正商用的分组交换协议。它定义了三层,和 OSI 七层模型的前三层完美对应:

X.25 层 对应 OSI 功能 通俗解释
分组层(Packet Layer) 网络层(L3) 虚电路建立、路由、流控 "选哪条路走、怎么排队"
链路层(Link Layer, LAPB) 数据链路层(L2) 帧封装、差错控制、重传 "包包裹、检查有没有丢"
物理层(Physical Layer) 物理层(L1) 电气接口(X.21/V.35) "用什么线插"

X.25 有两个开创性设计:

虚电路(Virtual Circuit) :不像 DDN 占一条物理通路,而是建一条"逻辑通道"------数据从 A 到 B,中间经过的交换机都记一张表,知道"这个编号的数据走哪个方向"。编号就是 DLCI/LCN(后面帧中继叫 DLCI,X.25 叫 LCN,本质一样)。

虚电路分两种:

  • PVC(永久虚电路):局端配好,常通,类似 DDN 的半永久连接------这是政企专线最常用的;
  • SVC(交换虚电路):按需建立,用完拆除,类似打电话拨号------X.25 时代用的多,帧中继后来基本只用 PVC。

逐跳差错控制+流控 :X.25 在每一跳(每两台交换机之间)都做差错检测和重传。帧到了交换机,先校验 CRC,错了就要求上一跳重传;同时用滑动窗口 控制流量------发太快了就让你等一等。这种"每一跳都检查"的机制,保证了可靠性,但也带来了高时延。

为什么 X.25 要做得这么"小心"?因为七十年代的传输线路质量差------模拟线路上跑数据,误码率高得吓人(10⁻⁴ 量级),不做逐跳差错控制,数据根本到不了。X.25 的设计哲学是:线路不可靠,所以协议来补救。

四、帧中继:X.25 的"瘦身版"

到了九十年代,传输线路质量大幅改善------光纤开始普及,数字线路误码率降到 10⁻⁹ 以下。这时候 X.25 那套"每一跳都校验+重传"就显得太啰嗦了:线路已经够可靠,何必每一跳都查?

于是出现了帧中继(Frame Relay, FR)------X.25 的"瘦身版"。核心思路就一条:

去掉逐跳差错控制和流控,把可靠性交给终端来做,网络只管"快速转发"。

对比一下 X.25 和帧中继的区别:

对比项 X.25 帧中继
协议层 三层(物理+链路+分组) 两层(物理+链路)
差错控制 逐跳校验+重传 只检错不重传,错的丢掉
流控 每跳滑动窗口 没有(靠拥塞通知)
时延 高(逐跳处理) 低(只转发不处理)
速率 低(64K~2M) 中高(64K~2M,后期到 34M)
设计前提 线路不可靠 线路可靠

帧中继做了一次大胆的"减法":把差错控制和流量控制从网络层移到了终端。交换机收到帧,只做 CRC 检测------对了就转发,错了就丢弃,不重传。重传的事交给终端的 TCP 来管。

这就像快递从"每到一个中转站都拆箱检查"改成了"一路狂奔,到站直接分拣"------速度上去了,时延降下来了。这个思路一路传到今天的 IP 网:网络只管转发,可靠性交给 TCP,这是整个互联网的设计哲学。追根溯源,帧中继是第一个这么干的。

五、虚电路与 DLCI:一条中继跑多条逻辑通道

帧中继的核心机制是虚电路+DLCI。这是它和 DDN 最大的区别------DDN 独占物理通路,帧中继共享物理中继但用逻辑通道隔离。

看这张图,用户 A 和用户 C 各自有一条 PVC 到对端的用户 B 和用户 E。关键是:A 和 C 的数据走的是同一条物理中继 (交换机1 到交换机2 之间那根线),靠 DLCI(Data Link Connection Identifier,数据链路连接标识符) 来区分。

DLCI 是什么?打个比方------它是"车票号"。每个帧在链路层帧头里带一个 DLCI,交换机收到帧后查 DLCI 表,决定从哪个端口送出去。DLCI 只在两台交换机之间有意义------同一条虚电路,在不同段上的 DLCI 可以不一样。

以图为例:

  • 用户 A 到交换机1:DLCI = 100
  • 交换机1 到交换机2:这一段中继上,A 的帧带 DLCI 100,C 的帧带 DLCI 200,统计复用
  • 交换机2 到用户 B:DLCI 从 100 "翻译"成 300
  • 交换机2 到用户 E:DLCI 从 200 "翻译"成 400

交换机里维护的转发表,核心就两列:入口端口 + 入口 DLCI → 出口端口 + 出口 DLCI。这就是帧中继交换机做"交叉连接"的全部逻辑------比 DDN 的时隙交叉更灵活,因为它是"按帧头查表",不是"按时隙分配"。

统计复用的好处直接体现在这里:同一条物理中继上,DLCI 100 的帧和 DLCI 200 的帧排队发送,谁有数据谁走。A 闲了,C 的帧就多跑;C 闲了,A 的帧就独占。中继带宽按需分配,利用率大幅提升。

六、带宽承诺:CIR / Bc / Be / EIR

帧中继还引入了一个革命性的概念------承诺带宽+允许超额。这是它和 DDN"固定带宽"最大的区别,也是专线计费模型的一次大变革。

核心概念四个:

  • CIR(Committed Information Rate,承诺信息速率):运营商承诺给您的最低带宽------无论网络多忙,这个速率保证送达,不丢帧;
  • Bc(Committed Burst Size,承诺突发量):在时间间隔 Tc 内,保证传送的最大数据量。CIR = Bc ÷ Tc;
  • EIR(Excess Information Rate,超额信息速率) :超出 CIR 的部分------网络有空就帮您传,忙了就丢。这部分的帧会被打上 DE=1(Discard Eligibility,丢弃指示位) 标记,交换机拥塞时优先丢这些帧;
  • Be(Excess Burst Size,超额突发量):Tc 时间内允许超出的最大数据量。超过 Bc+Be 的部分,交换机直接丢。

举一个政企实战的例子:某银行网点帧中继专线,CIR = 128K,EIR = 128K。

  • 平时:网点速率 100K,低于 CIR 128K → 保证送达;
  • 月底结算:峰值 200K,在 128K~256K 之间 → 超出 128K 的部分打 DE=1,尽力传送,拥塞时可能丢;
  • 极端突发:300K,超过 256K(CIR+EIR) → 超出部分直接丢。

对比 DDN:DDN 开 128K 就永远 128K,闲也占着、忙也不能超。帧中继是"承诺 128K 保证送达,有空允许超额,忙了收回"------这就是统计复用省成本的根源:运营商不用给每个客户都"真金白银"地预留峰值带宽,按 CIR 之和规划中继即可(因为不会所有客户同时峰值)。

七、端到端原理:帧中继怎么把一帧数据送到对端

把上面几个概念串起来,看一次完整的端到端转发过程:

第一步:用户侧封装。用户路由器(FRAD,帧中继接入设备)把 IP 包封装成帧中继帧------帧头里填 DLCI、DE 位、FCS 校验,帧体装数据。

第二步:接入交换机查表。帧到达交换机1,交换机查转发表:入口端口1 + DLCI 100 → 出口端口2 + DLCI 100。交换机把帧头里的 DLCI 翻译成中继段的 DLCI,从对应端口送出。

第三步:中继统计复用。在中继线上,这个帧和其他客户的帧排队发送。交换机不做差错重传------只做 CRC 校验,错了就丢,不负责重传。

第四步:对端交换机再查表。帧到达交换机2,查表:入口 DLCI 100 → 出口 DLCI 300。翻译 DLCI,送到用户 B 的端口。

第五步:终端收到、解封装。用户 B 的 FRAD 收到帧,解开封装拿到数据。如果中间有帧丢了?TCP 层面负责重传------帧中继网络不管。

整个过程中,交换机只做三件事:查表、翻译 DLCI、转发。不校验内容、不重传、不流控------这就是帧中继"轻装上阵"的秘密,也是它比 X.25 快的原因。

八、装维排障:帧中继的"三层排查法"

帧中继排障比 DDN 复杂一点,因为它有协议了。按三层排查:

故障层 典型症状 排查手段 常见原因
物理层 接口 down、LOS 告警 查接口灯、线缆测试 线缆断裂、接头松动
链路层 PVC 状态 inactive 查 LMI 协议是否正常 DLCI 配错、PVC 未激活
网络层 ping 不通、时延大 查路由、测 CIR 是否达标 超出 CIR 导致丢帧、拥塞

帧中继有个独特机制叫 LMI(本地管理接口) ------用户侧和交换机之间定期"打招呼",报告 PVC 状态。如果 LMI 不通,PVC 状态就会变成 inactive,数据自然走不通。这是帧中继排障的第一个检查点:先看 LMI 状态。

九、遗产与谢幕

帧中继在九十年代到两千年初是政企联网的主力------银行、税务、证券的多网点互联,大量跑在帧中继上。但它也有短板:

  • 2M 封顶:和 DDN 一样,E1 接口是天花板,后期虽然出了 FRF.5 做到 34M,但终究跟不上需求;
  • 无 QoS 保障:DE=1 的帧"尽力传",拥塞时直接丢,语音、视频这种实时业务跑不了;
  • 被 IP + MPLS 取代:IP 一统天下后,MPLS VPN 提供了更好的多节点互联方案。

但帧中继留了三样遗产,至今活在网络里:

  1. 虚电路+标签转发的思路:帧中继靠 DLCI 查表转发,这个思路一路进化到 MPLS 的标签交换------MPLS 标签就是"DLCI 的升级版";
  2. CIR/EIR 带宽承诺模型:今天云专线的"承诺带宽+峰值带宽"计费模型,根源就是帧中继的 CIR/EIR;
  3. "网络只管转发,可靠性交给终端"的设计哲学:这是整个互联网 TCP/IP 的设计基础,帧中继是第一个把这件事落到商用网络里的技术。

一句话:帧中继死了,但它的思想活在 MPLS 里、活在云专线里、活在整个互联网的设计哲学里。

小结

  • DDN 的死穴是"独占=浪费",分组交换用"拼车"思路解决:数据打包、共享中继、统计复用;
  • X.25 是第一个分组交换标准,三层协议、逐跳差错控制------为不可靠线路而设计;
  • 帧中继是 X.25 的瘦身版:去掉差错控制和流控,网络只管快速转发,可靠性交给终端;
  • 虚电路+DLCI 是帧中继的核心:一条物理中继上跑多条逻辑通道,靠 DLCI 查表转发;
  • CIR/EIR/Bc/Be 是带宽承诺模型:承诺带宽保证送达,超额带宽尽力传送,这是云专线计费的鼻祖;
  • 帧中继的遗产:标签转发→MPLS、CIR/EIR→云专线带宽模型、"转发与可靠性分离"→互联网设计哲学。

思考题:帧中继把差错控制从网络移到了终端(TCP),这叫"端到端原则"。但今天 AIDC 智算网络里,RoCEv2 又把"可靠传输"从 TCP 拉回了网络层(PFC+ECN)。为什么"端到端原则"在智算场景不灵了?(提示:想想大模型训练时,一个梯度包丢了,TCP 重传的时延开销有多大,GPU 集群等得起吗?)

下期预告

X.25 和帧中继解决了"带宽拼车"的问题,但它们都有个天花板------2M 封顶 。再往上走,需要一种全新的技术:不仅带宽更大,还要能做 QoS、能跑语音视频。于是,53 字节的信元 登场了。下一课讲:ATM------53 字节信元的故事,以及它为什么输了。

相关推荐
阿钱真强道2 小时前
33 嵌入式操作系统 | 模块七验收:端到端一键验收 + 项目答辩
网络·网络协议·粘包·回归测试·uloop
网络小江6 小时前
上网第三十二课:NAT——让 IPv4 地址“够用“的魔法
网络协议
傲世仙尊7 小时前
HTTP深水区-重定向状态码与GETPOST的传参之路
网络·网络协议·http
网络小江8 小时前
上网第三十五课:第五周复盘——IP 与 DNS 快问快答
网络协议
可乐鸡翅yeah_8 小时前
hls.js 配置 loadStartPosition,点播起始播放位置踩坑
开发语言·javascript·网络协议·ecmascript·m3u8在线
一条破秋裤9 小时前
TCP 缓冲区:用户空间 stdio 与内核 Socket 缓冲
arm开发·网络协议·tcp/ip
web打印社区9 小时前
JS 静默打印怎么做:纯前端为什么不行,以及最小可跑通写法
开发语言·前端·javascript·websocket·网络协议·http·pdf
自己的九又四分之三站台10 小时前
TCP 与 UDP:从可靠字节流到无连接数据报,怎么选、怎么测
网络协议·tcp/ip·udp
wangbing112511 小时前
开发指南147-WebSocket-前端
前端·websocket·网络协议