Linux/ATM - State of Play05/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.
Pages: 1, 2