Full- vs. Half-duplex and the Collision Window

The problem of ``network diameter''

This issue is the real reason hubs, and all hub-like things that implement a broadcast domain have no future. By ``broadcast domain'' I mean a slice of bandwidth shared by multiple transmitters that can't transmit concurrently. Examples are: AlohaNet, traditional 10Base2 Ethernet, PCI, the old 50- or 68-pin parallel SCSI, 802.11b

Gigabit Ethernet is at the edge of what you could use a hub for, because at 1Gbit/s, consider:

We figured above that the speed of light implies a 64-byte collision window limits the maximum network diameter to 50 meters at 1Gbit/s. Remember, this is not the 100 meter maximum distance between repeaters we have for 100BaseTX. This maximum distance applies whether you use repeaters or not.

For 10Mbit/s Ethernet, ignoring repeater-induced delays, the maximum diameter---say the maximum length of a single half-duplex FOIRL segment---is 2.8km. This is rather theoretical, becuase there's no good reason not to run a single unrepeated FOIRL segment full-duplex (and full-duplex means no collisions, no collision window, no network diameter limit). You would only need to run it half-duplex if the FOIRL segment is being repeated onto some other kind of segment, and in that case the repeater's delay makes the maximum allowed FOIRL length shorter.

For half-duplex 100BaseFX, the maximum length is 200 - 400m, though I'm not sure what are the various official limits and rules. I think 200m is safe even with repeaters.

The delay introduced by repeaters and PHYs brings the practical value I found on the Interweb down from speed-of-light-theoretical 50 meters to about 20 meters for half-duplex 1Gbit/s Ethernet with a 64-byte collision window. For 10Gbit/s Ethernet, now we're down to two meters.

There actually is a half-duplex 1000BaseT standard. 802.3z uses 512-byte collision windows (and thus a 512-byte minimum packet size) to work around this problem. By making the collision window eight times bigger, they make the network diameter about the same as it was with 100BaseTX, but such a large collision window makes the cable become almost all noise when there is any contention, compared to 100BaseTX. Getting good cable utilization depends on the ``carrier sense'' characteristic---normal data packets need to be fairly long compared to the collision window. The large minimum packet size also has the odd effect that, for a unidirectional TCP flow, the stream of TCP ACKs will consume on the wire about 1/6 the raw bits of the stream they're acknowledging, but considering that ACKs will now collide with the data a lot more often it's really much worse than 1/6th. I've never heard of anyone actually using half-duplex 1000BaseT, or seen a 1000BaseT hub for sale anywhere. Clearly, for high-speed moderate-distance networks, we need something that's full-duplex, and that means some kind of switch.

With full duplex, there are no collisions and no collision window, so the 70km links of 1550nm/1000BaseZX don't run into the problems we're discussing here. However, the 140km of fiber you need to make that round trip will hold about 50 kBytes of in-flight data (or 500kBytes at 10Gbit/s), so you'd better have TCP windows at least that large if you want to fill the pipe with a single TCP circuit. :)

There's another sneaky way around this problem used by celfones and cable Internet service.

Some of these radio tricks might be useful for designing extremely high-speed busses on printed circuit boards, but I think these are tending towards full-duplex, point-to-point topologies (PCIe, RAMBUS, HyperTransport), just like Ethernet.


L3 switches / map / carton's page / Miles Nordin <carton@Ivy.NET>
Last update (UTC timezone): $Id: switch-collisionwindow.html,v 1.1 2008/01/11 03:31:01 carton Exp $