Contention window is random, so hopefully only a node starts transmitting at the same time. The backoff clock is randomly chosen between [0, CW-1], where CW represents a contention window.
The first station whose clock expires starts transmission. Other terminals sense the new transmission and freeze their clocks to be restarted after the completion of the current transmission in the next contention period. Length of backoff time is exponentially increased (doubled) as the station goes through successive retransmissions.
![[Pasted image 20241002234319.png]]
By using different IFS sizes, we can prioritize some packets.
- SIFS is used for immediate responses (ACK, CTS, polling response)
- PIFS (Point coordination function IFS): medium priority, for real time services, is SIFS + 1 time slot
- DIFS (Distributed coordination funcion IFS): lowest priority, for async data service, is SIFS + 2 time slots
#### DFC CSMA/CA with ACK
- stations has to wait for DIFS before sending data
- receiver ACKs immediately (after waiting for SIFS) if the packet was received correctly (CRC is valid)
- ACK is transmitted without sensing the medium
- if ACK is lost, retransmission will be done
![[Pasted image 20241002235016.png]]
#### Problems
- Hidden terminal
- Exposed terminal
We fix both of them with RTS/CTS:
- transmitter sends an RTS (request to send) after medium has benn idle for time interval more than DIFS
- receiver responds with CTS (clear to send) after medium has been idle for SIFS
- data is transmitted
- RTS/CTS is used for **reserving channel** for data transmission so that the collision can only occur in control message.
![[Pasted image 20241002235259.png]]
Both of the problems are solved!
However, collisions are still possible as RTS packets can collide. But RTS packets are small, RTS collisions are not as bad as data collisions.
### Network Allocation Vector (NAV)
- provides *Virtual Carrier sensing*
- most 802.11 frames carry a duration field
- transmitter sets the NAV to the time for which it expects to use the medium
- other stations starts counting down from NAV to 0
- If NAV > 1, transmission is delayed. When NAV = 0, carrier is sensed.
![[Pasted image 20241002235837.png]]
##### CSMA/CA with RTS/CTS (NAV)
- receiver receives RTS and sends CTS after SIFS
- CTS again contains duration field
- all the stations receiving the CTS need to adjust their NAV
- a broadcast pattern is generally used by a base station (sink) to transmit information to all sensor nodes of the network
- **Convergecast or data gathering (all/many to 1)**
- all or a group of sensors comunicate to the sink
- typically used to collect sensed data
## S-MAC protocol
S-MAC: Sleep MAC
As idle listening consumes significant energy (50-100% of the energy required for receiving), the solution is to periodic listen and sleep, with a listen duty cycle of about 10% (e.g. listen 200ms and sleep 2s).
![[Pasted image 20241011175026.png]]
- Duration of sleep and listen cycles are the same for all nodes
- All nodes are free to choose their own listen/sleep schedules
- to reduce control overhead, **neighbor nodes are syncronized together**
- neighboring nodes form **virtual clusters** so as to set up a common sleep schedule
- each node maintaines a table with neighbors’ schedule
- table entries are filled when the node receives sync packets
- SYNC packets are exchanged periodically to maintain schedule synchronization
- they are sent every SINCHRONYZATION PERIOD
- Receivers will adjust their timer counters immediately after they receive the SYNC packet
- If there are no neighbors, the node will chose a random schedule. These nodes will be called **synchronizers**, nodes who receive a schedule are called **followers**.
- In a large network we cannot guarantee that all nodes follow the same schedule
- node on the border will follow both schedules
- they need to broadcast packet twice, for schedule 1 and 2
![[Pasted image 20241011180413.png]]
#### Collision avoidance
- RTS/CTS with duration is used (so NAV is used for backoff)
- carrier sense before initiating a transmission
- neighbor nodes of both sender and receiver sleeps during transmission to save power
- listen time is divided into minislots
- sender selects a minislot to end carrier sense
- if channel is free it transmits SYNC in the next minislot
### S-MAC Performance evaluation
- Topology: Two-hop network with two sources and two sinks
- Sources periodically generate a sensing message which is divided into fragments
- Traffic load is changed by varying the inter-arrival period of the messages: (for inter-arrival period of 5s, a message is generated every 5s by each source. Here it varies between 1-10s)
![[Pasted image 20241011182036.png]]
- In each test, there are 10 messages generated on each source node
- Each message has 10 fragments, and each fragment has 40 bytes (200 data packets to be passed from sources to sinks)
- The total energy consumption of each node is measured for sending this fixed amount of data
![[Pasted image 20241011182343.png]]
- S-MAC consumes much less energy than 802.11-like protocol without sleeping
- At heavy load, idle listening rarely happens, energy savings from sleeping is very limited
- At light load, periodic sleeping plays a key role
Conclusions:
- A mainly static network is assumed
- Trades off latency for reduced energy consumption
- Redundant data is still sent with increased latency