Linux/ATM - State of Play

05/05/2000

If you use a network that is based on ATM, or have an ATM network being
installed near you, you've probably wondered what Linux support is available
and what you can do with it. The ATM support for Linux has at last been
integrated into the standard kernel and will be a key feature of the 2.4
series Linux kernels.

The "ATM on Linux" project has been running steadily since 1995 under the
leadership of Werner Almesberger. It was originally developed as a research
and teaching resource for the Laboratoire de Réseaux de Communication (LRC)
of the École Polytechnique Fédérale de Lausanne (EPFL). Significant contributions have been made by the Finnish Tampere
University of Technology, the University of Kansas, and a number of
individuals.

The Linux ATM support is a combination of kernel drivers, userspace
utilities, and daemon programs. Any code warranting high performance is
kernel based, while anything complex and called infrequently has been left
in userspace.

What is ATM?

If you're already familiar with ATM, skip ahead; but if you've got no idea
what ATM actually is, then it's worth spending a moment or two reviewing the
basic concepts of it so you can properly appreciate the importance of the
ATM support for Linux.

ATM is an acronym of "Asynchronous Transfer Mode," the name given to a
new network architecture that blends some of the manageability of
traditional circuit-switched networks with the flexibility of packet-switched networks like X.25 and the Internet. The basic unit of data
transfer on an ATM network is the "cell," which is a fixed-length block of
data, always 53 bytes. Data from end users is broken up into chunks, has
some protocol headers added to it, and is transmitted as cells across the network from node to node until it arrives at the intended destination. To
understand how this helps anybody, it is helpful to understand the problems
experienced with other network technologies.

Traditional circuit-switched networks allocate a fixed quantity of network
bandwidth to each "call" or connection between two hosts. This can lead to
gross inefficiencies when used for data transmission because it is common
for there to be significant gaps in data flow for many types of network
application while the end user reads or decides what to do next. Consider
how much time your PPP dial-up service spends idle when you are logged in,
especially in the forward direction. The bandwidth you use when the service
is busy is wasted when it is idle because no one else can make use of it -- it
is reserved for you. While there is no data being transferred, the network
bandwidth sits idle and is wasted. On the flip side, packet-switched
networks have traditionally suffered performance problems as a result of
congestion and the time it takes to switch large blocks of data from router
to router across the network. It is difficult to manage the performance of
packet-switched networks because it is difficult to ensure that appropriate
bandwidth will be available at the specific instant of time it is required
by real-time applications like Voice over IP (VoIP) or streaming video. For other
application such as real-time games, robotic control, or remote control of
delicate instruments, the variation in packet delivery time is important and
again extremely difficult to control with traditional packet-switched
networks.

ATM finds a middle ground. It is circuit switched; that is, you make calls
across it just like you make telephone calls across a telephone network, and
it provides a mechanism for providing reserved bandwidth (constant bitrate)
or variable bandwidth (variable bitrate) connections between hosts. Because
cells are all of fixed length, it is possible to conveniently schedule their
transmission to ensure that bandwidth is available when it is needed.
Scheduling of cell transmission also makes it is possible to reduce the
variation in delivery times. Cells are quite short in length compared to the
datagrams or packets of other network technologies, and this allows them to
be transmitted in a very short time across each switch and link in the
network. Finally, while the IP community struggles to manage quality of
service issues, the flexibility of ATM provides a sensible way of mixing
network applications requiring real-time performance with those that don't,
with guaranteed quality of service for each.

The connections made across an ATM network are called virtual circuits. They
are virtual because, while data may flow host to host, it isn't done on any
reserved network links or cables -- that is, it isn't like a circuit in the
electrical sense; instead it is a series of associations that enable data
to be passed from host to switch, switch to switch, and switch to host in a
manner that acts like a circuit. A permanent virtual circuit is like a
connection between two hosts that is always present; it is established
automatically and cannot be disconnected without deconfiguring it. A
switched virtual circuit is like a telephone or ISDN call: A request must be
made to have it established, and, similarly, it can be torn down at any time to
free the resources it used. ATM hosts are addressable using a 20-byte
address called a Network Service Access Point, or NSAP for short -- no
shortage of addresses there.