为什么数据帧不设计TTL机制防止“广播风暴”?

为什么数据帧不设计TTL机制防止“广播风暴”?

读了TCP/IP协议,发现IP协议的数据包中包含一个 TTL 8字节,代表数据包的存活时间。由这个TTL 可以控制数据包在网络传递的次数,进而防止数据包无限在网络传递,产生广播风暴。

然而,数据链路层的传递是以数据帧形式,这个数据帧(可以理解为 ethernet 帧)是没有 TTL 机制的,即交换机这个链路层是以数据帧(包含了数据包)形式传递。若当两个交换机 用两根线连接时,就形成一个网络环路,此时交换机的数据传递就会无限循环,形成一个广播风暴(网络风暴)。

此时,我们就想,为什么数据帧不设计TTL机制防止“广播风暴”?

解答如下:

  • 第一,实际数据帧不光有以太,还有token ring\x.25\hdlc等。这些数据帧都体现在OSI 7层模型中的第二层,而第二层数据链路层的协议是没有STP的概念。上面讲的数据帧,严格来说为 ethernet frame(以太帧)。
  • 其次,ethernet最早设计出来是在一个segment,以csma/cd模式连接几台电脑的组网,这种组网没有环路问题。最早的组网是用50欧姆的同轴电缆,黑色的,家里有线电视那种同轴电缆是65欧的,跟串串香一样,串起来组网,两边还要做堵头,用于信号反射,当然常见的是做成环网。没看错,就是环网。双绞线那都是后面的事情。在早期ethernet这种组网情况下,根本不存在环路的问题,因此没人考虑这个问题。
  • 第三,STP是什么时候才有的事情,STP成为标准那都是90年代的事情。ethernet可是70年代的事情,802.3标准出现都是80年代的事情。所以STP那只是在ethernet大规模使用后,发现环路问题有必要解决,才提出的,属于补丁思路;
  • 第四,环路问题。正如第二条所讲,ethernet最早出现的组网模式,压根没有环路问题。只是后面以太组网复杂了,各种架构出现,才出现环路问题,所以STP出现了;
  • 第五,那为什么不设计TTL机制?原因很简单,ethernet 环路对纯二层交换机基本没有影响,因为交换机都是ASCI芯片处理,基本对广播风暴无感,最坏结局流量爆掉。这点很容易测试,自己找一台最便宜的tplink二层交换机,做个环,tplink绝对没任何影响,设备work很好。

广播风暴真正有危害的是路由器,因为一般的路由器架构,线卡LC对于广播流量、未知单播需要Punt到CPU处理,但是路由器的CPU很弱,所以会导致CPU HIGH。

总之以太技术、IP技术都属于补丁思路,因为这些技术刚开始设计的时候,没有想得很长远,只不过后面火起来了,但是要动最开始的设计很困难,只能打补丁。这个就和2G\3G\4G\5G的技术演进不一样了,3GPP是先把规范研究明白,然后在开始干。而IP是先干了,然后发现有问题,在提出补丁,在规范化。

参考: