Early Collisions
Introduction
We are
going to have a look at a step-by-step early
collision example to help everyone (including myself
!) understand what it's all about.
Early Collisions
In this
example, we will refer to an imaginary Ethernet
network consisting of Stations A and B and any
number of other stations. The status of the network
is such that the wire is idle (nobody is talking)
and 9.6 microseconds have passed since anybody last
talked on the wire.
An early
collision is any collision that occurs before 512
bits of the frame have been put onto the wire. The
rationale behind this is discussed in the next
essay.
The
following is an outline of a normal or "early"
collision event:
Station A,
detecting that the wire has been idle for 9.6
microseconds, begins to transmit its data frame,
beginning with the 64 bit preamble. While Station A
is transmitting, it is also listening for abnormal
voltage on the wire -- a signal that a collision has
occurred. (Stage 1)
Some
period of time later, but before the signal from
Station A has had time to propagate down the wire to
Station B, Station B also detects that the wire has
been idle for 9.6 microseconds and begins to
transmit its data frame beginning with the 64 bit
preamble. Station B is also listening for a
collision on the wire. (Stage 2)
At some
point on the wire in between Station A and Station B
the electrical signals overlap, creating a point of
abnormal voltage. As the signals continue to
propagate, this abnormal voltage travels down the
wire towards both Station A and Station B. (Stage 3)
Whichever
station is closest to the physical point on the wire
where the two signals overlapped will detect the
collision first. For the sake of this discussion, we
will say that Station A detects the collision first.
(Stage 4)
Station A,
detecting the abnormal voltage on the wire and
realizing that a collision has occurred, immediately
stops transmitting data and transmits a 32 bit "jam"
onto the wire. (Stage 5)
The 32
bit jam consists of any combination of values that
is not a valid CRC for the frame that was just
interrupted by the collision. Most Ethernet cards
today just send 32 ones and know that there is only
a 1/(2^32) chance that that will be the checksum --
pretty good odds. The purpose of the 32 bit jam is
to fully propagate the wire with voltage, preventing
anybody else from talking.
Station
A will then implement an algorithm known as the
Truncated Binary Exponential Backoff Algorithm,
which determines how long it will wait before it
attempts to retransmit the frame that was just
interrupted. The interrupted frame is referred to as
a Runt.
Next,
Station B will detect the collision. Station B will
also send a 32 bit jam and implement the Truncated
Binary Exponential Backoff Algorithm. (Stage 6)
Early
collisions occur regularly in a normally operating
Ethernet network. There is no hardware malfunction
or misbehaving station -- it just so happens that
two NICs start to talk at the same time. Generally,
after the talkers implement the backoff algorithm
which is specially designed to not have both NICs
attempt to talk at the same time again, both talkers
will successfully put their frame onto the wire. It
typically takes no longer than 2-3 milliseconds for
a station to recover from a collision and
successfully retransmit its frame. |