Just by attempting to halve the schedule length seems to be insufficient to meet DCF’s performance.
In order to circumvent this issue, I propose a little more drastic approach towards the schedule reduction in CSMA/ECA. In this case, we are going to attempt to reduce it as much as possible.
We saw that CSMA/ECA + Hysteresis was unable to reduce its schedule length sufficiently via the halving technique. Resulting in an increased time between successful transmissions, under-utilization of the channel and therefore lower throughput than CSMA/CA.
What if instead of trying to halve it, we try to reset it? After all, CSMA/CA resets its window after a successful transmission.
How we do it?
As with the halving technique[1,2], the node should already be in a collision-free schedule if it wants to reduce its cycle length. We achieve this condition by ensuring that the node has performed as many successful transmissions as possible inside the whole schedule. That is, t successful transmissions. Where t = C / Bd; C is the maximum deterministic backoff, and Bd is the current deterministic backoff of the node.
After t consecutive successful transmissions, the node will start to listen all the slots until its next transmission. That is, if the node’s next transmission will be in slot Bd = 16, it will listen to slots 0–15. With slot 0 containing the node’s first transmission. If slot s[x] contains a transmission or collision, it will register s[x] = 1 in a bitmap, and s[x] = 0 otherwise.
After the bitmap is complete the node will analyse it. It will look for availability for the shortest schedule or any schedule shorter than the one it has. If it exists, it will change its backoff parameters and switch to that shorter schedule. This new schedule starts with the node’s next transmission attempt.
With the schedule reduction, we increase the node’s stickiness in one. This stickiness increase is a measure to ensure that the change of schedule resists an additional collision before the node falls-back to a random backoff. Because we only listen to the slots between a node’s transmissions, we increase the level of stickiness after the schedule reduction to compensate for not listening to all the slots in the complete schedule C.
The Fig. 1 below shows the achieved throughput with a pc = 0.1.
As we can see, CSMA/ECA+Hyst is able to outperform CSMA/CA when in a crowded scenario. Further, as we can see in Fig. 2 the average time between successful transmissions is also comparable to CSMA/CA’s. In fact, it is even lower when N > 15. This is because collisions are reduced and the channel is used more efficiently.
UPDATE (Apr. 10):
How do collisions look?
Well, our channel is modelled as explained in Part II. That is, we define a period T and a probability that a given transmission attempt would result in a collision, pc. The period T determines the seconds in which the channel will have either pc or pc = 0. By doing this, we have a changing channel; which is perfect for T seconds and has a pc for other T seconds.
Figure 3 below shows the number of collisions seen from the channel perspective. This simulation is performed with 20 nodes (N = 20), pc = 10% and T = 10s. Each point represents the number of collisions in the last 1000 slots.
As we can see, the resetting of the schedule does not add collisions when the channel is perfect. On the other hand, when we are in a period T with pc > 0, collisions are mostly related to the channel errors. One can assume from Fig. 3 that when pc = 0 the Collisions in the last 1000 slots will be zero for CSMA/ECA. This is confirmed by Figure 4.