📜  CSMA/CD 的回退算法

📅  最后修改于: 2021-09-27 15:10:35             🧑  作者: Mango

先决条件 – CSMA/CD 基础知识,CSMA/CD 中的碰撞检测
退避算法是一种冲突解决机制,用于随机访问 MAC 协议 (CSMA/CD)。该算法一般用于以太网中,用于调度冲突后的重传。

如果两个站之间发生冲突,它们可以在冲突后尽快重新开始传输。这将始终导致另一次碰撞并形成导致死锁的无限碰撞循环。为了防止这种情况,使用了退避算法。

让我们考虑两个站 A 和 B 传输一些数据的场景:

碰撞后,时间被划分为离散时隙( T slot ),其长度等于 2t,其中 t 是网络中的最大传播延迟。

参与碰撞的站点从集合 K 中随机选取一个整数,即 {0, 1}。这个集合称为争用窗口。如果源因为选择了相同的整数而再次发生冲突,则争用窗口大小将增加一倍,变为 {0, 1, 2, 3}。现在,第二次碰撞中涉及的源从集合 {0, 1, 2, 3} 中随机选择一个整数,并在再次尝试之前等待该数量的时隙。在它们尝试传输之前,它们侦听信道并且仅在信道空闲时才进行传输。这会导致在争用窗口中选择最小整数的源成功传输其帧。

因此,Back-off 算法定义了参与冲突的站点的等待时间,即站点应该等待多长时间重新传输。

Waiting time = back–off time
Let n = collision number or re-transmission serial number. 
Then, 
Waiting time = K * Tslot
where K = [0, 2n – 1 ]  

例子 –

情况1 :
假设 2 个站点 A 和 B 同时开始传输数据(数据包 1),那么就会发生冲突。因此,它们的数据(数据包 1)的碰撞次数 n = 1。现在,两个站都从集合 K 中随机选择一个整数,即 {0, 1}。

  • 当 A 和 B 都选择 K = 0
    –> A = 0 * T slot = 0 的等待时间
    B = 0 * T slot = 0 的等待时间

    因此,两个站将同时传输,因此发生冲突。

  • 当 A 选择 K = 0 且 B 选择 K = 1
    –> A = 0 * T slot = 0 的等待时间
    B = 1 * T slot = T slot 的等待时间

    因此,A 发送数据包,B 等待时间 T时隙进行发送,因此 A 获胜。

  • 当 A 选择 K = 1 而 B 选择 K = 0
    –> A = 1 * T slot = T slot 的等待时间
    B = 0 * T slot = 0 的等待时间

    因此,B 发送数据包,A 等待时间 T时隙进行发送,因此 B 获胜。

  • 当 A 和 B 都选择 K = 1
    –> A = 1 * T slot = T slot 的等待时间
    B = 1 * T slot = T slot 的等待时间

    因此,两者都将等待相同的时间 T时隙然后发送。因此,发生碰撞。

Probability that A wins = 1/4
Probability that B wins = 1/4
Probability of collision  = 2/4

案例2:
假设 A 在案例 1 中获胜并传输了它的数据(数据包 1)。现在,一旦 B 发送了它的数据包 1,A 就发送了它的数据包 2。因此,冲突发生了。现在碰撞没有。对于 A 的数据包 2,n 变为 1,对于 B 的数据包 1,n 变为 2。
对于 A 的数据包 2,K = {0, 1}
对于 B 的数据包 1,K = {0, 1, 2, 3}

Probability that A wins = 5/8
Probability that B wins = 1/8
Probability of collision  = 2/8

因此,与案例 1 相比,碰撞概率降低。

优势 –

  • 碰撞概率呈指数下降。

缺点——

  • 捕获效果:胜者站不断胜。
  • 仅适用于 2 个工作站或主机。

GATE 练习题 –

  1. GATE-CS-2004 |第 90 题
  2. GATE-CS-2016(套装2)|第 34 题
  3. GATE-IT-2004 |第 85 题