Asynchronous Transfer Mode (ATM)
Asynchronous Transfer Mode (ATM) is a cell relay network protocol which encodes data traffic into small fixed-sized (53 byte; 48 bytes of data and 5 bytes of header information) cells. It is a connection-oriented technology, in which a connection is established between the two endpoints before the actual data exchange begins.
ATM sought to resolve the conflict between circuit-switched networks and packet-switched networks by mapping both bitstreams and packet-streams onto a stream of small fixed-size ‘cells’ tagged with virtual circuit identifiers. The cells are typically sent on demand within a synchronous ‘time-slot’ pattern in a synchronous bit-stream: what is asynchronous here is the sending of the cells, not the low-level bitstream that carries them.
Why cells?
The motivation for the use of small data cells was the reduction of jitter (delay variance, in this case) in the multiplexing of data streams; reduction of this (and also end-to-end round-trip delays) is particularly important when carrying voice traffic.
This is because the conversion of digitized voice back into an analog audio signal is an inherently real-time process, and to do a good job, the codec that does this needs an evenly spaced (in time) stream of data items. If the next data item is not available when it is needed, the codec has no choice but to produce silence - and if the data does arrive, but late, it is useless, because the time period when it should have been converted to a signal has already passed.
Now consider a speech signal reduced to packets, and forced to share a link with bursty data traffic (i.e. some of the data packets will be large). No matter how small the speech packets could be made, they would always encounter full-size data packets, and under normal queuing conditions, might experience maximum queuing delays.
ATM was designed to implement a low-jitter network interface. However, to be able to provide short queueing delays, but also be able to carry large datagrams, it had to have cells. ATM broke all packets, data, and voice streams up into 48-byte chunks, adding a 5-byte routing header to each one so that they could be reassembled later. The choice of 48 bytes was, as is all too often the case, political instead of technical. When the CCITT was standardizing ATM, parties from the United States wanted a 64-byte payload because having the size be a power of 2 made working with the data easier and this size was felt to be a good compromise between larger payloads optimized for data transmission and shorter payloads optimized for real-time applications like voice; parties from Europe wanted 32-byte payloads because the small size (and therefore short transmission times) simplify voice applications with respect to echo cancellation.
Most of the interested European parties eventually came around to the arguments made by the Americans, but France and a few allies held out until the bitter end. With 32 bytes, France would have been able to implement an ATM-based voice network with calls from one end of France to the other requiring no echo cancellation. 53 bytes was chosen as a compromise between the two sides, but it was ideal for neither and everybody has had to live with it ever since. 5-byte headers were chosen because it was thought that 10% of the payload was the maximum price to pay for routing information. ATM multiplexed these 53-byte cells instead of packets. Doing so reduced the worst-case queuing jitter by a factor of almost 30, removing the need for echo cancellers.
Why virtual circuits?
ATM is a channel-based transport layer. This is encompassed in the concept of the Virtual Path (VP) and Virtual Circuit (VC). Every ATM cell has an 8- or 12-bit Virtual Path Identifier (VPI) and 16-bit Virtual Circuit Identifier (VCI) pair defined in its header. The length of the VPI varies according to whether the cell is sent on the user-network interface (on the edge of the network), or if it is sent on the network-network interface (inside the network).
As these cells traverse an ATM network, switching is achieved by changing the VPI/VCI values. Although the VPI/VCI values are not necessarily consistent from one end of the connection to the other, the concept of a circuit is consistent (unlike IP, where any given packet could get to its destination by a different route than the others).
Another advantage of the use of virtual circuits is the ability to use them as a multiplexing layer, allowing different services (such as voice, Frame Relay, n*64 channels, IP, SNA, etc.) to share a common ATM connection without interfering.

