CSMA/CD总线以太网和交换式以太网

在规划一群计算机如何使用网络介质传输数据包而不是一群人如何使用电话线实时通话的时候,不得不换一种思路。html

为何以太网最初没有采用TDM或者FDM或者随便别的什么xxDM,而是采用随机统计分时复用的CSMA/CD呢?web

  • 以太网流量是突发的
  • 以太网流量不要求实时
  • 以太网无链接

其实,甚至 冲突检测 都是次要的,它只是优化,而并不是核心。有冲突就要有退避,因此,紧随着冲突,以太网采用的二进制指数退避,也并不是核心!若是把全部的冲突检测以及退避机制都交给上层,那么保留一个核心的简洁以太网模型来分析是必要的。算法

只须要假定以太网流量符合泊松分布就足够了。在基于这个假设的结论进行分析以前,必须先来看一下 为何冲突并不是核心。 否则就不敢随意抛弃它。缓存

若是一个站点已经检测到信道空闲,那为何还会有冲突呢?由于数据帧的传输是有传播时延的,数据帧传输速度有上限,即光速 c c ,也就是说对于每个站点的冲突检测机制来说,它有一个所谓的 视界 视界外面的东西,站点是检测不到的。网络

  • 站点只能检测到数据帧到达目的地以前 L c \dfrac{L}{c} ( L L 为线缆长度)时间的冲突!

因此说,冲突是由光速极限引发的,这种物理世界的局限,或者你说缺陷也行,冲突并不是由算法致使,因此冲突并不是核心。app

然而,平常物理世界诺大的光速到了纳秒,微秒,毫秒计时的计算机网络世界,倒是一个很是平常的参数。因此,虽然它不是算法的核心,可是引起的冲突致使的重传将会极大影响以太网的效率。分布式


按照假设,以太网的流量符合泊松分布,忽略复杂的二进制指数退避,再假设重传几率是常数,那么信号的效率 E E 能够表示为:svg

E = 1 1 + 2 B L e c l E=\dfrac{1}{1+\dfrac{2 B Le}{cl}} 优化

其中, B B 为带宽, L L 为线缆长度, l l 为帧长度, e c e,c 为常数。spa

由此, L L 越长, B B 越大,CSMA/CD的效率就越低,反之,帧长 l l 越长,效率就越高!所谓的以太网最小帧长度64B,普通帧长度1500B,理论上都是能够从这公式里算出来的,之因此咱们如今都接受1500B是以太网卡的广泛MTU,实际上是由于这样在泊松分布的假设下效率最高。

因此说,随着对带宽需求的提升,对距离的需求提升,CSMA/CD逐渐变得再也不适用,也所以,后来的千兆,万兆以太网,干脆再也不支持CSMA/CD了。固然,CSMA/CD时代的1500B这个默认MTU值,做为以太网的标志依然被兼容性地保留了下来。


因为CSMA/CD的冲突是光速固有极限带来的,因此在时间域上咱们没有办法消除。

要想消除冲突,必须将时间域上的统计分时复用转换到空间域上的统计缓存复用。

在时间域的CSMA/CD时代,统计分时复用机制是分布在每个站点上被实现的,这就是 介质访问子层 的做用,若是转换到了空间域的缓存统计复用,那么介质访问子层便再也不须要,有帧就直接发,全部的分布式介质访问子层的功能将统一集中于交换节点的队列管理系统。

这就是交换式以太网,在纯交换式以太网中,已经再也不须要CSMA/CD,交换机取代了介质访问子层的做用。固然,在工程上,兼容是必须的,因此,支持CSMA/CD并不意味着必定就采用了它。


说回冲突。

在时间域上,同一个时间槽,只能有一个帧在传输,若是别的帧也传输了,就会形成冲突,二者皆退避。

在空间域上,发生着彻底相同的事情。

同一个缓存位置,只能有一个帧占据,若是同时来了两个帧,针对该位置,那就是冲突了。然而队列机制能够将此次冲突暂时 积累 下来,使用 下一个位置 ,和时间域不一样,时间只能纵向延展,而空间域则能够横向扩展。

最终,当空间域用尽了整个缓存后,须要将积累的冲突进行一次性惩罚,即积累式退避,这就是AIMD中MD的意义,其实就是空间域的积累式指数退避。积累式退避也是空间域的,便可发送字节数的MD,而不是等待时间MD。

介质访问子层功能在交换式以太网时代已经被架空了,事实上它也控制不了 何时发送 ,它只须要知道能发多少就是了。


这就是总线式以太网向交换式以太网进化过程当中背后的故事。

值得一提的是,不要纠结于为何以太网流量符合泊松分布,事实上,以太网流量根本就不符合泊松分布,之因此采用这个泊松分布假设,是由于在数学上比较容易处理,其背后的假设也是合理的:

  • 数据帧的发送是独立的随机事件。

浙江温州皮鞋湿,下雨进水不会胖。