PPP 转义机制的最坏情况效率

网络工程 协议理论 带宽 pppoe 购买力
2021-07-08 21:59:39

由于转义,仅包含保留字节 0x7E、0xFF、0x03 的 PPP 数据流传输是否会减少 50% 的带宽?

那么不说白痴就显得很愚蠢了。这种糟糕的设计在 PPPOE、PPTP、L2TP 和许多其他链接的网络堆栈中仍然广泛使用。我错过了什么吗?仅传输一个魔术字节的示例似乎是一种极端情况,但在某些时间段内仍然可能。魔术字节可能或多或少地出现在数据流中,但其原理本身令人沮丧。

1个回答

您可能想阅读RFC 1547 “Internet 标准点对点协议的要求”,它解释了如何选择 PPP。我建议您忽略的一点是互操作性是互联网协议的主要驱动力之一,而效率则不那么重要。你把设计 PPP 的才华横溢的工程师描述为“愚蠢/愚蠢/令人沮丧”是一种伤害。他们用一个非常通用的、可扩展的协议解决了一类非常大的问题——而且更困难的是,让每个人都同意。许多系统仍然使用PPP,并且在30多年后发现了许多新用途,这是对其质量的致敬。

来自RFC 1134的动机部分,“点对点协议:通过点对点链路多协议传输数据报的建议”:

点对点 IP 链路数量少的一个原因是缺乏标准的封装协议。有很多可用的非标准(和至少一种事实上的标准)封装协议,但没有一个被认可为 Internet 标准。相比之下,标准封装方案确实存在用于通过最流行的 LAN 传输数据报。

为了直接回答您的问题,异步串行上的 PPP 确实会进行八位字节填充(即,0x7e 被编码为 0x7d、0x5e)。它为标志序列 (0x7e)、控制转义 (0x7d) 和控制字符 (0-0x1f) 执行此操作。这在RFC 1549 “HDLC 类帧中的 PPP”中定义需要转义的控制字符可以通过链路控制协议选项协商Async-Control-Character-Map

:完全由需要转义的八位字节组成的帧在大帧上确实会减少接近 50% 的带宽。我不清楚你为什么用这种贬低的术语来描述它:它是一种非常普通的帧机制,旨在与许多不同的串行链路兼容、跨实现的互操作性和可靠性。你还建议怎么做?

但是不:通过以太网没有八位字节填充。请参阅RFC 2516 “通过以太网传输 PPP (PPPoE) 的方法”