
Native-mode ATM Protocol Stack

Joint work with
Prof. Huzur Saran, R.P. Rustagi and R.N. Moorthy (IIT Delhi),
Ritesh Ahuja and Ankur Jain (now at Stanford),
and Rosen Sharma (now at Cornell).
Most current ATM networks use TCP as the transport layer, with
IP-over-ATM providing the network layer.
This approach,
though necessary in the short-term, is likely to soon prove inadequate
for three reasons.
-
First, ATM networks will provide end-to-end
Quality of Service (QoS) guarantees to individual virtual
circuits. These guarantees are lost by IP, since it
multiplexes multiple transport connections with disparate QoS
requirements onto a single VC. Moreover, TCP
cannot directly use the QoS guarantees provided by an ATM network because
it neither obeys a leaky-bucket behavior envelope, nor responds to
ABR resource management cells.
-
Second, TCP checksums a packet to detect corruption.
Since checksumming requires every byte of a packet
to be touched, it is a significant overhead.
However, ATM Adaptation Layer~5 (AAL5) already does data checksumming.
Thus, this TCP functionality is redundant and costly.
A transport layer that turns off data checksumming will deliver higher
throughput than TCP/IP-over-ATM, since can eliminate this overhead.
-
Third, TCP has
inherited the patches and fixes of two decades of
protocol tuning.
Despite this, or, perhaps, due to it,
TCP performance is unpredictable and heavily dependant on
particulars of the operating environment.
Even small changes, such as the in the loss rate or the
buffer size in intermediate routers, can dramatically affect
performance.
We believe there is a need for a protocol stack that
-
can provide guaranteed service quality
relatively independent of the operating environment,
-
exploits the services of an underlying AAL5 layer, and
-
has been designed afresh to provide clean semantics.
We have designed, implemented, and measured the performance of
such a protocol stack,
that is targeted specifically for Asynchronous Transfer
Mode (ATM) networks i.e.\ a native-mode
ATM transport layer.
The layer embodies much of our past work in flow and congestion control.
(The transport layer was originally designed
and implemented as part of the IDLInet project at the
Indian Institute of Technology , Delhi
The current implementation, though similar
in spirit to the original, is almost totally rewritten,
reflecting substantial improvements in the design.}
Perhaps the main insight from our work is that it is hard to
achieve per-virtual circuit quality of service guarantees with current
operating
systems and host-adaptor cards.
Most Unix-like operating systems have no support for real-time processes,
hard process priorities, or fine-grained timers.
In the absence of these facilities, it is impossible to
guarantee strict performance bounds to real-time applications.
Second, we did not have access to the microcode on the host-adaptor
card. Thus, we had to work around its deficiencies, such as
supporting only a single receive queue shared by all VCs, which
allows low-priority connections to adversely affect higher-priority
connections.
Third, to achieve high performance, we had to tune {\em every} aspect of
the protocol stack. Even small changes in the
implementation can dramatically affect performance.
Other workers in this field have also come to the same disheartening
conclusion.
Fourth, it is hard to implement locking in the kernel.
Choosing how large a section to lock and when to release a lock
are often matters of good taste rather than hard science.
Unfortunately, poor choices can lead to degraded performance,
or worse, deadlock.
Finally, we found that Personal Computers are not as low-end
a platform as one might imagine.
With careful design and implementation, it is possible to extract
workstation-quality performance from a platform that is cheap,
easily available, and costs a fifth as much!

Free Distribution
We are happy to announce the university release of the native-mode ATM protocol
stack for x86 PCs running FreeBSD 2.1.
The stack provides:
-
A reliable transport layer that does timeouts and retransmissions,
with window flow control (developed from scratch)
-
Leaky-bucket regulation at the transport layer
-
A library that allows easy porting of socket/TCP applications
to native-mode ATM
-
SPANS signalling in user space. OS support automatically cleans up
after applications that crash (see paper in Sigcomm '94).
-
An example native-mode application: FTP
-
High performance: 55 Mbps user-to-user with 486/66 PCs
-
Operational since April '95; intensively tested
-
Plug and play with Fore HPA-200 EISA cards and ASX series switches
-
Four papers fully documenting the work are part of the distribution
-
Source code for everything except the driver (driver source is
available from Fore Systems).
-
Support for Zeitnet PCI cards
Available from IIT Delhi:
-
UNI 3.1 signaling, LANE, and IP-over-ATM support
References
The implementation includes work described in these papers.
-
R. Ahuja, S. Keshav and H. Saran,
Design ,Implementation , and Performance Measurement of a Native-Mode ATM Transport Layer (Extended Version),
IEEE/ACM Transactions on Networking
August 1996.
-
A. Jain and S. Keshav,
Native-mode ATM in FreeBSD: Experience and Performance,
Proc. NOSSDAV '96,
April 1996.
Slides from the talk at NOSSDAV
-
R. Ahuja, S. Keshav and H. Saran,
Design ,Implementation , and Performance of a Native-Mode ATM Transport Layer,
Proc. IEEE INFOCOM '96,
March 1996.
-
S. Keshav and H. Saran,
Semantics and Implementation of a Native-Mode ATM Protocol Stack,
AT&T Bell Laboratories Technical Memorandum,
February 1994.
-
R. Sharma and S. Keshav,
Signaling and Operating System Support for Native-Mode ATM Applications,
Proc. ACM SigComm'94
, August 1994.
-
S. Keshav and S.P. Morgan,
SMART: Retransmission: Performance with Random Losses and Overload,
To Appear, Proc. INFOCOM '97.
We plan to add work described in these references to our implementation.