跳到主要内容

3.18 CSMA/CD 协议的原理和吞吐量的计算

3.18.1 CSMA/CD 协议的原理

(P89 3.3.2)使用 CSMA/CD 协议时,一个站不可能同时进行发送和接收(但必须一边发送一边监听信道),因此使用 CSMA/CD 协议的以太网不可能进行全双工通信,只能进行半双工通信

(P88 3.3.2)CSMA/CD 协议特点如下:

  • 多点接入:指总线型网络。
  • 载波监听:指边发送边监听,无论是发送数据还是发送数据之前,每个站都必须不停的检测信道。
  • 碰撞检测:指适配器边发送数据边检测信道上信号电压的变化情况。当两个站同时在总线上发送数据时,总线上的信号电压变化幅度会增大(互相叠加),因此当适配器检测到信号电压变化幅度超过一定门限值时,则认为总线上至少有两个站在同时发送数据,即产生了碰撞

(P91 3.3.2)当产生碰撞时则立即停止发送数据,并继续发送 32 比特或 48 比特的人为干扰信号(Jamming Signal),即强化碰撞,以便让让所有用户都知道现在已发生碰撞。

(P89 3.3.2)若记总线上单程端到端传播时延τ\tau,则最迟要经过两倍的总线端到端传播时延(或端到端往返传播时延,即 2τ2 \tau)才能断定自己发送的数据没有发生碰撞,这段时间被称为争用期(Contention Period),又称碰撞窗口(Collision Window)

其中,τ\tau 的计算公式为:

τ=信道长度(m)×信号传播速率(m/s)\tau=\text{信道长度}(m) \times \text{信号传播速率}(m/s)

因此,使用 CSMA/CD 协议的网络,最小帧长不得小于 FminF_{min}

Fmin=2×τ×数据传输速率(bit/s)F_{min}=2 \times \tau \times \text{数据传输速率}(bit/s)

若接收到长度小于 FminF_{min} 的帧,则必为由于冲突而异常终止的帧,应当立即丢弃

IEEE 规定争用期为 51.2 μs51.2\ \mu s,即 10 Mbps10\ Mbps 网络发送 512 比特也就是 64 字节的时间。以当时的计算机网络技术,一个网络最远的两端之间的往返延迟不会高于 51.2 μs51.2\ \mu s,因此此争用期完全足以发现所有所有可能的碰撞。这也是 MAC 帧最小长度为 64 字节的原因。

(P90 3.3.2)也就是说,每个站在自己开始发送数据后的一小段时间内,存在遭遇碰撞的风险,这一特点被称为发送的不确定性

(P90 3.3.2)以太网使用截断二进制指数退避(Truncated Binary Exponential Backoff) 算法来确定碰撞重传的时机,又称动态退避。这种算法让发生碰撞的站在停止发送数据时,在等待信道空闲后退避一个随机的时长。若记重传的次数为 tt,则退避的时隙数从闭区间 [0, 2k1][0,\ 2^k-1] 中的整数中随机选择,其中 kk 使用以下公式计算:

k=min{t,10}k=min\{t,10\}

以太网中,常见的时隙时长为 512 位的时间。

若重传次数达 16 次仍不能成功,则表明当前打算发送数据的站太多,以至于接连发生碰撞,则丢弃该帧,并向上层报告。

3.18.2 吞吐量的计算

吞吐量取决于链路中最小带宽。

相关词条:

  • (P22 1.6.1)吞吐量(Thronghput)

    吞吐量是指单位时间内通过某个网络(或信道、接口)的实际数据率,以 bit/s 为单位。