Prerequisite – Basics of CSMA/ CD, Collision Detection in CSMA/CD
Back-off algorithm is a collision resolution mechanism which is used in random access MAC protocols (CSMA/CD). This algorithm is generally used in Ethernet to schedule re-transmissions after collisions.
If a collision takes place between 2 stations, they may restart transmission as soon as they can after the collision. This will always lead to another collision and form an infinite loop of collisions leading to a deadlock. To prevent such scenario back-off algorithm is used.
Let us consider an scenario of 2 stations A and B transmitting some data:
After a collision, time is divided into discrete slots (T_{slot}) whose length is equal to 2t, where t is the maximum propagation delay in the network.
The stations involved in the collision randomly pick an integer from the set K i.e {0, 1}. This set is called the contention window. If the sources collide again because they picked the same integer, the contention window size is doubled and it becomes {0, 1, 2, 3}. Now the sources involved in the second collision randomly pick an integer from the set {0, 1, 2, 3} and wait that number of time slots before trying again. Before they try to transmit, they listen to the channel and transmit only if the channel is idle. This causes the source which picked the smallest integer in the contention window to succeed in transmitting its frame.
So, Back-off algorithm defines a waiting time for the stations involved in collision, i.e. for how much time the station should wait to re-transmit.
Waiting time = back–off time Let n = collision number or re-transmission serial number. Then, Waiting time = K * T_{slot} where K = [0, 2^{n} – 1 ]
Example –
Case-1 :
Suppose 2 stations A and B start transmitting data (Packet 1) at the same time then, collision occurs. So, the collision number n for both their data (Packet 1) = 1. Now, both the station randomly pick an integer from the set K i.e. {0, 1}.
- When both A and B choose K = 0
–> Waiting time for A = 0 * T_{slot} = 0
Waiting time for B = 0 * T_{slot} = 0Therefore, both stations will transmit at the same time and hence collision occurs.
- When A chooses K = 0 and B chooses K = 1
–> Waiting time for A = 0 * T_{slot} = 0
Waiting time for B = 1 * T_{slot} = T_{slot}Therefore, A transmits the packet and B waits for time T_{slot} for transmitting and hence A wins.
- When A chooses K = 1 and B chooses K = 0
–> Waiting time for A = 1 * T_{slot} = T_{slot}
Waiting time for B = 0 * T_{slot} = 0
Therefore, B transmits the packet and A waits for time T_{slot} for transmitting and hence B wins.
- When both A and B choose K = 1
–> Waiting time for A = 1 * T_{slot} = T_{slot}
Waiting time for B = 1 * T_{slot} = T_{slot}Therefore, both will wait for the same time T_{slot} and then transmit. Hence, collision occurs.
Probability that A wins = 1/4 Probability that B wins = 1/4 Probability of collision = 2/4
Case-2 :
Assume that A wins in Case 1 and transmitted its data(Packet 1). Now, as soon as B transmits its packet 1, A transmits its packet 2. Hence, collision occurs. Now collision no. n becomes 1 for packet 2 of A and becomes 2 for packet 1 of B.
For packet 2 of A, K = {0, 1}
For packet 1 of B, K = {0, 1, 2, 3}
Probability that A wins = 5/8 Probability that B wins = 1/8 Probability of collision = 2/8
So, probability of collision decreases as compared to Case 1.
Advantage –
- Collision probability decreases exponentially.
Disadvantages –
- Capture effect: Station who wins ones keeps on winning.
- Works only for 2 stations or hosts.
GATE Practice Question –
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.
Recommended Posts:
- Slow Start Backoff Algorithm for Ad-Hoc
- kasai’s Algorithm for Construction of LCP array from Suffix Array
- EdgeRank Algorithm - Algo behind Facebook News Feed
- Klee's Algorithm (Length Of Union Of Segments of a line)
- Quickhull Algorithm for Convex Hull
- RSA Algorithm in Cryptography
- Computer Network | Leaky bucket algorithm
- Program for Least Recently Used (LRU) Page Replacement algorithm
- Implementation of Diffie-Hellman Algorithm
- HMAC Algorithm in Computer Network
- Peterson's Algorithm in Process Synchronization
- Program for SSTF disk scheduling algorithm
- Move To Front Data Transform Algorithm
- Dekker's algorithm in Process Synchronization
- Bakery Algorithm in Process Synchronization
- Probabilistic shortest path routing algorithm for optical networks
- RSA Algorithm using Multiple Precision Arithmetic Library
- RC4 Encryption Algorithm
- Computer Organization | Booth's Algorithm
- Restoring Division Algorithm For Unsigned Integer
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.