The Token Tagging Ring

Copyright © 1996 DJ Greaves.

One way to connect a number of low-rate, dumb peripherals to a single duplex ATM switch port is to wire them in a ring or loop. Each device has both an input and output connection with the input side of the first device connected to the output side of the switch port, the input sides of each of the following devices connected to the output of the previous device and the output of the final device connected to the switch input side. This pattern of wiring is easily achieved when using UTP cables, as used in the ATM25.6 standard.

Clearly the devices must pass on cells received on their input side to their output side in order for the switch to have full connectivity with each device. By operating in the manner of a token ring, the ATM Token Tagging scheme described in this appendix provides this. It allows the devices to use simple hardware forwarding of the passing through cells without the use of FIFOs. The maximum number of devices on a loop will depend on the addressing range available, which will be 256 if the VPI field of a UNI format cell header is used, and by the accumulation of regenerative clock jitter through the transceivers. Noting that the ATM25 standard uses conventional 802.4 token ring transceivers, we realise that loops of about 32 devices are a sensible maximum design size.

By using the VPI identifier for device addressing, each attached device has access to its own VC space, including its own set of reserved VCCs (in the range 1 to 31). However, given the likely low-complexity of the attached devices, many devices would only need one or a few VCCs and then might only exchange single cell messages using a custom AAL, in which case the VCI identifier or a set of bits from it could equally be used. Here we just use the term `address' to refer to the bits in the cell header that are significant in an implementation.

A device on the token tagging ring only transmits cells in response to a token cell transmitted by the switch. These token cells are generated by a polling station which may be part of a switch, but most likely is a process running on a computer elsewhere in the ATM network. The token cells and all other cells on the token tagging section can be forwarded to and from that ring-wired section over conventional ATM VCs and intermediate ATM switches. Bundling all of the cells onto one VPC for this part of their journey would be helpful, and is achieved without effort when a section of the VCI is used for addressing within the loop: otherwise switches which can encapsulate and de-encapsulate VPs are needed (such as the ATML Virata switches).

All cells received by a device (on its receive side) are forwarded on by the device on its transmit side. The token cell therefore makes a rotation of the loop and must then be discarded either at the switch, or forwarded back to the polling station where it can be detected as a loop integrity indicator and/or dropped.

There are two ways a station may transmit. In the first, which is most suitable for simple hardware implementation without FIFOs, a station transmits by tagging a cell into the next free cell slot after the polling cell is received, thereby building up a chain of response cells following the token. On a non-slotted physical layer, such as used by ATM25 and ATM100, the station may detect one (or some small number) of idle characters after the current end of the chain, before transmitting. Note that it must actually detect an idle character and convert it to a SOC otherwise we are not doing a resource allocation!

In the second transmission method, a station receives the token cell into a FIFO while sending its own data onwards, giving essentially a register insertion ring. It forwards the FIFO and whatever else was received after its own data. This approach can be implemented on existing network interfaces for processor-based systems. No modification of the hardware is required.

In both cases, the polling station must make sure that it leaves space between token cells which is sufficiently large for all envisaged replies to be transmitted before it sends the next token cell. This can be usefully be achieved by the source rate pacing function of many NICs.

Stations receive simply by filtering cells that they are interested in. Such cells are transmitted by the polling station when needed, either periodically or occasionally. The polling station can allow bandwidth on the loop for these cells, if needed, by simply holding off the transmission of the next token, or using any other scheduling algorithm.

Stations with built-in identifiers may be addressed by putting the identifier in the cell header.

Stations without built-in identifiers may be addressed using algebraic manipulation of cell headers. To do this, each station receives and transmits cells only on a fixed hardwired address (such as 128). As cells are forwarded through a station, the forwarding logic always adds one to the address (note the cell HEC is then recalculated). Therefore a station can be addressed explicitly by starting using an address a number less than 128 by the position along the chain. Received response cells are similarly distinguished by the increment their address has received when cells arrive at the polling station.

If a token cell is defined as any cell with address in the range 192 to 255, and the polling station always transmits the token cell with address 192 (or at least that is the value after final header translation in the switch connected to the head of the loop), then the polling station may detect the loop length by the received token address.

Under either scheme, a station may also respond to or transmit on a promiscuous address or set of addresses which are hardwired and not translated by the forwarding logic.