1354 lines
60 KiB
Plaintext
1354 lines
60 KiB
Plaintext
|
ATM on Linux HOWTO
|
|||
|
|
|||
|
Paul B Schroeder
|
|||
|
|
|||
|
IBM Corporation
|
|||
|
|
|||
|
paulsch@us.ibm.com
|
|||
|
ATM support for Linux is currently in pre-alpha stage. There is an
|
|||
|
experimental release, which supports raw ATM connections (PVCs and SVCs), IP
|
|||
|
over ATM, LAN emulation, MPOA, Arequipa, and some other goodies.
|
|||
|
|
|||
|
|
|||
|
2001-10-18
|
|||
|
Revision History
|
|||
|
Revision 2.4.0 2001-10-18 Revised by: PBS
|
|||
|
Converted from LaTeX to DocBook along with some other additions and changes.
|
|||
|
|
|||
|
|
|||
|
This document describes how to install, setup, and configure the necessary
|
|||
|
drivers and tools to support ATM networking under Linux.
|
|||
|
|
|||
|
For the latest information, please check the ATM on Linux [http://
|
|||
|
linux-atm.sourceforge.net/] home page.
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
Table of Contents
|
|||
|
1. Introduction
|
|||
|
1.1. Acknowledgements and Thanks
|
|||
|
1.2. Copyright
|
|||
|
1.3. Mailing List
|
|||
|
1.4. CVS Access
|
|||
|
|
|||
|
|
|||
|
2. Installation
|
|||
|
2.1. The Binary RPMs
|
|||
|
2.2. The Source Tree
|
|||
|
2.3. Kernel Configuration
|
|||
|
2.4. Driver Messages
|
|||
|
2.5. Memory Debugging
|
|||
|
2.6. ATM Tools
|
|||
|
2.7. Extra Packages
|
|||
|
|
|||
|
|
|||
|
3. Device Setup
|
|||
|
3.1. ATM Over TCP Setup
|
|||
|
3.2. ZN1221/ZN1225 Tuning
|
|||
|
3.3. Files in /proc/net/atm/
|
|||
|
3.4. ATM Diagnostics
|
|||
|
3.5. SONET Diagnostics
|
|||
|
|
|||
|
|
|||
|
4. Native ATM PVCs
|
|||
|
4.1. Traffic Tools
|
|||
|
4.2. Direct Cell Access
|
|||
|
|
|||
|
|
|||
|
5. Signaling
|
|||
|
5.1. ATM Hosts File
|
|||
|
5.2. ANS
|
|||
|
5.3. Signaling Demon
|
|||
|
5.4. ILMI Demon
|
|||
|
5.5. Manual Address Configuration
|
|||
|
5.6. Running Two ATM NICs Back-to-Back
|
|||
|
5.7. Q.2931 Message Dumper
|
|||
|
|
|||
|
|
|||
|
6. IP Over ATM
|
|||
|
6.1. CLIP
|
|||
|
6.2. LAN Emulation
|
|||
|
6.3. MPOA
|
|||
|
|
|||
|
|
|||
|
Bibliography
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
1. Introduction
|
|||
|
|
|||
|
1.1. Acknowledgements and Thanks
|
|||
|
|
|||
|
This document is largely derived from the Usage Instructions document that
|
|||
|
was included with the ATM on Linux distribution up until version 0.79. That
|
|||
|
previous document was written by Werner Almesberger <wa@almsesberger.net>
|
|||
|
while he was at the [http://icawww.epfl.ch/] Institute for computer
|
|||
|
Communications and Applications (ICA).
|
|||
|
|
|||
|
The section Running Two ATM NICs Back-to-Back was primarily written by
|
|||
|
Richard Jones <rjones@imcl.com>.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.2. Copyright
|
|||
|
|
|||
|
Copyright 2001 IBM Corporation
|
|||
|
|
|||
|
Permission is granted to copy, distribute and/or modify this document under
|
|||
|
the terms of the [http://www.gnu.org/copyleft/fdl.html] GNU Free
|
|||
|
Documentation License, Version 1.1 or any later version published by the Free
|
|||
|
Software Foundation; with no Invariant Sections, with no Front-Cover Texts,
|
|||
|
and with no Back-Cover Texts. A copy of the license can be found at [http://
|
|||
|
www.gnu.org/copyleft/fdl.html] http://www.gnu.org/copyleft/fdl.html.
|
|||
|
|
|||
|
A large portion of this document is derived from the Usage Instructions
|
|||
|
included with the ATM on Linux distribution up to version 0.79 which was
|
|||
|
released under the BSD License, GNU General Public License (GPL), and GNU
|
|||
|
Lesser General Public License (LGPL).
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.3. Mailing List
|
|||
|
|
|||
|
There is also a mailing list on which to discuss ATM on Linux. If you have
|
|||
|
any comments, questions, suggestions, or would just like to get involved,
|
|||
|
please join the list. You can subscribe and unsubscribe to it at [http://
|
|||
|
lists.sourceforge.net/lists/listinfo/linux-atm-general] http://
|
|||
|
lists.sourceforge.net/lists/listinfo/linux-atm-general.
|
|||
|
|
|||
|
The mailing list is archived at [http://www.geocrawler.com/lists/3/
|
|||
|
SourceForge/6487/0/] http://www.geocrawler.com/lists/3/SourceForge/6487/0/.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.4. CVS Access
|
|||
|
|
|||
|
Users are encouraged to continue to use the releases instead of automatically
|
|||
|
assuming they should grab the latest version out of CVS. However, if you like
|
|||
|
living on the edge, here is how to do it.
|
|||
|
|
|||
|
First, log in anonymously:
|
|||
|
|
|||
|
|
|||
|
+----------------------------------------------------------------------------------+
|
|||
|
|% cvs -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm login|
|
|||
|
+----------------------------------------------------------------------------------+
|
|||
|
|
|||
|
Just hit return when prompted for a password. Then, checkout the repository:
|
|||
|
|
|||
|
|
|||
|
+------------------------------------------------------------------------------------------------+
|
|||
|
|% cvs -z6 -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm co -P linux-atm|
|
|||
|
+------------------------------------------------------------------------------------------------+
|
|||
|
|
|||
|
You may also specify a branch to check out specifically:
|
|||
|
|
|||
|
|
|||
|
+-------------------------------------------------------------------------------------------------------+
|
|||
|
|% cvs -z6 -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm co -r V2_5_0 linux-atm|
|
|||
|
+-------------------------------------------------------------------------------------------------------+
|
|||
|
|
|||
|
In either case, this will create a directory called "linux-atm" with the
|
|||
|
latest sources in it. When working inside this directory you will not need to
|
|||
|
specify the '-d' option to CVS. For instance, you could just do
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|% cvs -z6 up -d |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
To grab any changes that have been put in the repository (the '-d' option in
|
|||
|
the above example is to the "up" sub-command and is different than the '-d'
|
|||
|
used to specify the CVS root directory)
|
|||
|
|
|||
|
After you have checked out the source tree, you will need to run the
|
|||
|
autotools script in the top level directory before you can configure, build,
|
|||
|
and install from that source tree:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# ./autotools |
|
|||
|
|Running aclocal... |
|
|||
|
|Running autoconf... |
|
|||
|
|Running autoheader... |
|
|||
|
|Running automake... |
|
|||
|
|automake: configure.in: installing `./install-sh' |
|
|||
|
|automake: configure.in: installing `./mkinstalldirs' |
|
|||
|
|automake: configure.in: installing `./missing' |
|
|||
|
|configure.in: 26: required file `./ltconfig' not found |
|
|||
|
|automake: Makefile.am: installing `./INSTALL' |
|
|||
|
|automake: configure.in: installing `src/lane/ylwrap' |
|
|||
|
|Finished... Now run './configure' and 'make'... |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
|
|||
|
|
|||
|
If you wish to create a tarred, gzipped distribution file or a RPM
|
|||
|
distribution file, run make dist or make rpm respectively. The tarred,
|
|||
|
gzipped file will be placed in the top level of the source tree and the RPM
|
|||
|
file will be placed in the src/extra/RPMS directory.
|
|||
|
|
|||
|
The CVS archive may also be browsed on the web at: [http://
|
|||
|
cvs.linux-atm.sourceforge.net/cgi-bin/viewcvs.cgi/linux-atm/linux-atm/] http:
|
|||
|
//cvs.linux-atm.sourceforge.net/cgi-bin/viewcvs.cgi/linux-atm/linux-atm/.
|
|||
|
|
|||
|
Finally, if you would like to receive email including every diff that is
|
|||
|
committed to the repository as they go in, there is a mailing list called
|
|||
|
"linux-atm-commits": [http://lists.sourceforge.net/lists/listinfo/
|
|||
|
linux-atm-commits] http://lists.sourceforge.net/lists/listinfo/
|
|||
|
linux-atm-commits.
|
|||
|
|
|||
|
This mailing list should be treated as receive-only. NO discussion or
|
|||
|
questions are allowed (even of patches which are sent through that list). All
|
|||
|
discussion should be kept on the linux-atm-general mailing list.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2. Installation
|
|||
|
|
|||
|
In order to install this package, you'll need
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>the package itself from [http://linux-atm.sourceforge.net/dist.php] http:
|
|||
|
//linux-atm.sourceforge.net/dist.php
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>the Linux kernel, version 2.4.x, e.g. from [ftp://ftp.kernel.org/pub/
|
|||
|
linux/kernel/v2.4/] ftp://ftp.kernel.org/pub/linux/kernel/v2.4/
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Perl, version 4 or 5
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>if you want memory debugging: MPR, e.g. from [ftp://ibiblio.org/pub/Linux
|
|||
|
/devel/lang/c/] ftp://ibiblio.org/pub/Linux/devel/lang/c/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2.1. The Binary RPMs
|
|||
|
|
|||
|
If you do not wish to futz with extracting and building the source yourself,
|
|||
|
the ATM tools are also distributed in RPM format. The RPM can be installed as
|
|||
|
follows:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|rpm -ivh linux-atm-x.x.x-x.rpm |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
2.2. The Source Tree
|
|||
|
|
|||
|
First, extract the ATM on Linux distribution:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|tar xzvf linux-atm-x.x.x.tar.gz |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
When extracted the distribution will create the linux-atm-x.x.x/ directory
|
|||
|
with several sub-directories. The following sub-directories are of note:
|
|||
|
|
|||
|
doc/
|
|||
|
Documentation (including this HOWTO) in SGML DocBook format
|
|||
|
|
|||
|
src/sigd/
|
|||
|
UNI 3.0, UNI 3.1, and UNI 4.0 signaling demon: atmsigd
|
|||
|
|
|||
|
src/saal/
|
|||
|
Signaling AAL library (SSCOP, SSCF, and SAAL)
|
|||
|
|
|||
|
src/qgen/
|
|||
|
Q.2931-style message handling
|
|||
|
|
|||
|
src/ilmid/
|
|||
|
ILMI address registration demon: ilmid
|
|||
|
|
|||
|
src/maint/
|
|||
|
ATM maintenance programs: atmaddr, atmdiag, atmdump, atmloop, atmtcp,
|
|||
|
enitune, esi, sonetdiag, saaldump, and zntune
|
|||
|
|
|||
|
src/test/
|
|||
|
Test programs: align, aping, aread, awrite, br, bw, isp, ttcp_atm, window
|
|||
|
|
|||
|
src/arpd/
|
|||
|
ATMARP tools and demon: atmarp, atmarpd
|
|||
|
|
|||
|
src/led/
|
|||
|
LAN Emulation demon: zeppelin
|
|||
|
|
|||
|
src/lane/
|
|||
|
LAN Emulation servers: bus, lecs, les
|
|||
|
|
|||
|
src/mpoad/
|
|||
|
Multi-Protocol Over ATM demon: mpcd
|
|||
|
|
|||
|
src/debug/
|
|||
|
Debugging tools: delay, ed, encopy, endump, svctor, zndump, and znth
|
|||
|
|
|||
|
src/lib/
|
|||
|
Libraries for applications and demons
|
|||
|
|
|||
|
src/man/
|
|||
|
Miscellaneous man pages
|
|||
|
|
|||
|
src/extra/
|
|||
|
Extra packages and RPM spec files.
|
|||
|
|
|||
|
src/config/
|
|||
|
Configuration and rc file examples
|
|||
|
|
|||
|
src/switch/
|
|||
|
Switch fabric control (under construction)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2.3. Kernel Configuration
|
|||
|
|
|||
|
Note NOTE
|
|||
|
<EFBFBD> If you are not familiar with building and installing a new kernel,
|
|||
|
please see the The Linux Kernel HOWTO
|
|||
|
|
|||
|
After unpacking the kernel distribution, do the usual make config, make
|
|||
|
menuconfig, or make xconfig in the top-level of your Linux kernel source
|
|||
|
tree. First, enable
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|Prompt for development and/or incomplete code/drivers |
|
|||
|
| (CONFIG_EXPERIMENTAL) |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
You should then be able to find the following options:
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|Asynchronous Transfer Mode (ATM, EXPERIMENTAL) (CONFIG_ATM) |
|
|||
|
| Use "new" skb structure (CONFIG_ATM_SKB) |
|
|||
|
| Classical IP over ATM (CONFIG_ATM_CLIP) |
|
|||
|
| Do NOT send ICMP if no neighbour (CONFIG_ATM_CLIP_NO_ICMP) |
|
|||
|
| LAN Emulation (LANE) support (CONFIG_ATM_LANE) |
|
|||
|
| Multi-Protocol Over ATM (MPOA) support (CONFIG_ATM_MPOA) |
|
|||
|
|ATM over TCP (CONFIG_ATM_TCP) |
|
|||
|
|Efficient Networks ENI155P (CONFIG_ATM_ENI) |
|
|||
|
| Enable extended debugging (CONFIG_ATM_ENI_DEBUG) |
|
|||
|
| Fine-tune burst settings (CONFIG_ATM_ENI_TUNE_BURST) |
|
|||
|
| Enable 16W TX bursts (discouraged) (CONFIG_ATM_ENI_BURST_TX_16W) |
|
|||
|
| Enable 8W TX bursts (recommended) (CONFIG_ATM_ENI_BURST_TX_8W) |
|
|||
|
| Enable 4W TX bursts (optional) (CONFIG_ATM_ENI_BURST_TX_4W) |
|
|||
|
| Enable 2W TX bursts (optional) (CONFIG_ATM_ENI_BURST_TX_2W) |
|
|||
|
| Enable 16W RX bursts (discouraged) (CONFIG_ATM_ENI_BURST_RX_16W) |
|
|||
|
| Enable 8W RX bursts (discouraged) (CONFIG_ATM_ENI_BURST_RX_8W) |
|
|||
|
| Enable 4W RX bursts (recommended) (CONFIG_ATM_ENI_BURST_RX_4W) |
|
|||
|
| Enable 2W RX bursts (optional) (CONFIG_ATM_ENI_BURST_RX_2W) |
|
|||
|
|ZeitNet ZN1221/ZN1225 (CONFIG_ATM_ZATM) |
|
|||
|
| Enable extended debugging (CONFIG_ATM_ZATM_DEBUG) |
|
|||
|
| Enable usec resolution timestamps (CONFIG_ATM_ZATM_EXACT_TS) |
|
|||
|
|IDT 77201 (NICStAR) (CONFIG_ATM_NICSTAR) |
|
|||
|
| Use suni PHY driver (155Mbps) (CONFIG_ATM_NICSTAR_USE_SUNI) |
|
|||
|
| Use IDT77015 PHY driver (25Mbps) (CONFIG_ATM_NICSTAR_USE_IDT77105) |
|
|||
|
|Madge Ambassador (Collage PCI 155 Server) (CONFIG_ATM_AMBASSADOR) |
|
|||
|
| Enable debugging messages (CONFIG_ATM_AMBASSADOR_DEBUG) |
|
|||
|
|Madge Horizon [Ultra] (Collage PCI 25 and Collage PCI 155 Client) |
|
|||
|
| Enable debugging messages (CONFIG_ATM_HORIZON_DEBUG) |
|
|||
|
|Interphase ATM PCI x575/x525/x531 (CONFIG_ATM_IA) |
|
|||
|
| Enable debugging messages (CONFIG_ATM_IA_DEBUG) |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
The burst settings of the ENI driver can be fine-tuned. This may be necessary
|
|||
|
if the default settings lead to buffer overruns in the PCI chipset. See the
|
|||
|
on-line help on "CONFIG_ATM_ENI_TUNE_BURST" for a detailed discussion of the
|
|||
|
implications of changing the burst settings.
|
|||
|
|
|||
|
Note that the file drivers/atm/nicstar.h contains a few configurable settings
|
|||
|
for the IDT 77201 driver.
|
|||
|
|
|||
|
Some drivers can also be used with certain compatible cards. The latest
|
|||
|
information about compatible cards can be found at ATM on Linux [http://
|
|||
|
linux-atm.sourceforge.net/info.php] information page.
|
|||
|
|
|||
|
Then build your kernel and reboot.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2.4. Driver Messages
|
|||
|
|
|||
|
If you've configured the ENI155p-MF driver, you should see two lines like
|
|||
|
these (512kB for the -C version, 2048kB for the -S version.):
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|eni(itf 0): rev.0,base=0xff400000,irq=10,mem=512kB (00-20-EA-00-07-56) |
|
|||
|
|eni(itf 0): FPGA,MMF |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
If you've configured the ZN1221/ZN1225 driver, you will get something like:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|zatm(itf 0): rev.3,base=0xf800,irq=11,mem=128kB,MMF (00-20-D4-10-2A-80) |
|
|||
|
|zatm(itf 0): uPD98401 0.5 at 30.024 MHz |
|
|||
|
|zatm(itf 0): 16 shapers, 32 pools, 2048 RX, 3958 VCs |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Note that your board needs to be at least at revision level 3 if you want to
|
|||
|
use it in a Triton-based system.
|
|||
|
|
|||
|
Note that if you've configured only the ATM over TCP driver, there are no
|
|||
|
messages at startup, because ATM over TCP devices are created later using the
|
|||
|
atmtcp command.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2.5. Memory Debugging
|
|||
|
|
|||
|
If you want to enable debugging for options for memory allocations, you need
|
|||
|
to install MPR before compiling the ATM tools.
|
|||
|
|
|||
|
If you chose to download the binary RPM package, you can install MPR like so:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|rpm -ivh mpr-x.x-x.rpm |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
If you chose to download the source, extract mpr-x.x.tar.gz like so:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|tar xzvf mpr-x.x.tar.gz |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Then do:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|cd mpr-x.x |
|
|||
|
|./configure x86-linux |
|
|||
|
|make |
|
|||
|
|make install |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Detection of some general mis-use of malloc and free is automatically
|
|||
|
performed if the program was compiled with MPR present. Tracing of
|
|||
|
allocations is enabled by setting MPRPC and MPRFI. See doc/mpr.html or doc/
|
|||
|
mpr.ps in the MPR distribution for details.
|
|||
|
|
|||
|
Only little run-time overhead is incurred if memory debugging is included,
|
|||
|
but those environment variables are not set.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2.6. ATM Tools
|
|||
|
|
|||
|
Now, as the final step, configure and build the ATM tools. Configuration is
|
|||
|
only necessary if your switch uses UNI 3.1 or 4.0, or if it has certain bugs.
|
|||
|
The configuration options selected by passing the appropriate options to the
|
|||
|
./configure script in the linux-atm distribution.
|
|||
|
|
|||
|
Note NOTE
|
|||
|
<EFBFBD> Issue ./configure --help from the top-level directory of the linux-atm
|
|||
|
distribution to view all possible options.
|
|||
|
|
|||
|
The ATM tools are built with the following commands:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|cd linux-atm-x.x.x |
|
|||
|
|./configure |
|
|||
|
|make |
|
|||
|
|make install |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Unless otherwise specified when invoking ./configure, make install will
|
|||
|
install executables in the directory /usr/local/bin and /usr/local/sbin,
|
|||
|
respectively. Configuration files (except for hosts.atm which is installed in
|
|||
|
/etc) are installed in /usr/local/etc. Libraries and header files are
|
|||
|
installed in /usr/local/lib and /usr/local/include, respectively. Man pages
|
|||
|
are installed in /usr/local/man.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2.7. Extra Packages
|
|||
|
|
|||
|
Some programs are based on large packages that are already distributed
|
|||
|
outside of the ATM context. For some packages, patches are contained in the
|
|||
|
ATM on Linux distribution. They are contained in the src/extra directory of
|
|||
|
the ATM on Linux distribution.
|
|||
|
|
|||
|
Currently, the following extra packages are available:
|
|||
|
|
|||
|
[http://www.tcpdump.org/] tcpdump
|
|||
|
dumps network traffic (enhanced for ATM)
|
|||
|
|
|||
|
ANS
|
|||
|
ATM name server (based on named 4.9.5)
|
|||
|
|
|||
|
|
|||
|
Note that text2atm automatically uses ANS if available, so ans only needs to
|
|||
|
be installed on systems providing name server functionality or if ATM-aware
|
|||
|
maintenance tools nslookup, etc.) are needed.
|
|||
|
|
|||
|
A script hosts2ans.pl to convert a /etc/hosts.atm file to ANS zone files are
|
|||
|
provided in the src/extra/ANS/ directory. Its use is described at the
|
|||
|
beginning of the file.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3. Device Setup
|
|||
|
|
|||
|
This section describes device-specific configuration operations, and general
|
|||
|
diagnostic procedures at the ATM or SONET level. Please see the adapter
|
|||
|
documentation for details on hardware installation and diagnosis.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.1. ATM Over TCP Setup
|
|||
|
|
|||
|
If you have no real ATM hardware, you can still exercise the API by using the
|
|||
|
ATM over TCP ``driver''. It emulates ATM devices which are directly wired to
|
|||
|
remote devices (i.e. there is no VPI/VCI swapping).
|
|||
|
|
|||
|
To establish one (bidirectional) ``wire'', become root on both systems (or
|
|||
|
run both sides on the same system to create two connected ``interfaces'') and
|
|||
|
run the following command on one of them (let's call it ``a''):
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# atmtcp virtual listen |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Then, on the other system (``b''), run
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# atmtcp virtual connect address_of_a |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Both atmtcps will report on their progress and the kernel should display
|
|||
|
messages like:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|Link 0: virtual interface 2 |
|
|||
|
|Link 1: incoming ATMTCP connection from 127.0.0.1 |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
and
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|Link 0: virtual interface 3 |
|
|||
|
|Link 1: ATMTCP connection to localhost |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
on the two systems. Note that atmtcp keeps running and that interrupting it
|
|||
|
breaks the virtual wire.
|
|||
|
|
|||
|
Multiple ``wires'' can be attached to the same machine by specifying a port
|
|||
|
number (default is 2812). Note that no AAL processing is performed. It is
|
|||
|
therefore not possible to receive data using a different AAL (e.g. AAL0) than
|
|||
|
the one with which the data was sent.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.2. ZN1221/ZN1225 Tuning
|
|||
|
|
|||
|
The ZeitNet ZN1221 and ZN1225 adapters use pre-allocated pools of free memory
|
|||
|
buffers for receiving. Whenever a VC with a certain maximum SDU size is
|
|||
|
opened for receiving, the corresponding pool is filled with free buffers by
|
|||
|
the device driver. The adapter removes buffers while it receives data. When
|
|||
|
the number of remaining buffers falls below a certain threshold, the device
|
|||
|
driver replenishes the pool again.
|
|||
|
|
|||
|
The lower and the upper limits for the number of free buffers, and the
|
|||
|
threshold for adapting to a new data offset (see below for details), can be
|
|||
|
set using the zntune program. Usage:
|
|||
|
|
|||
|
zntune [-l low_water] [-h high_water] [-t threshold] itf [pool]
|
|||
|
The changes are applied to all pools if no pool number is specified. Pool 2
|
|||
|
stores 64 bytes packets, pool 3 stores 128 bytes packets, etc. Pools 0 and 1
|
|||
|
are currently unused.
|
|||
|
|
|||
|
The current settings and some usage statistics can be obtained by invoking
|
|||
|
zntune without specifying new parameters:
|
|||
|
|
|||
|
zntune [-z] itf [pool]
|
|||
|
|
|||
|
The ``Size'' column shows the buffer size in Bytes. The ``Ref'' column shows
|
|||
|
the number of open VCs using that pool. The ``Alarm'' column shows how many
|
|||
|
times the number of free buffers has fallen below the low-water mark since
|
|||
|
the counters were reset. Similarly, the ``Under'' column shows how many times
|
|||
|
an incoming PDU had to be discarded because the corresponding pool was empty.
|
|||
|
|
|||
|
The columns ``Offs'', ``NxOf'', ``Count'' and ``Thres'' show the alignment
|
|||
|
adaption status. ``Offs'' is the offset of user data the driver currently
|
|||
|
expects in incoming PDUs. For single-copy, receive buffers are aligned
|
|||
|
accordingly so that data is received at page boundaries. ``NxOf'' is the user
|
|||
|
data offset of the most recently received PDU, where the offset differs from
|
|||
|
the currently assumed offset. ``Count'' is the number of PDUs that have been
|
|||
|
received in sequence with an offset of ``NxOf''. Finally, ``Thres'' is the
|
|||
|
threshold value ``Count'' has to reach for ``NxOf'' to become the new current
|
|||
|
offset.
|
|||
|
|
|||
|
Use the -z option to reset the ``Alarm'' and ``Under'' counters.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.3. Files in /proc/net/atm/
|
|||
|
|
|||
|
Some status information about the ATM subsystem can be obtained through files
|
|||
|
in /proc/net/atm/. The file /proc/net/atm/arp contains information specific
|
|||
|
to Classical IP over ATM, see section CLIP.
|
|||
|
|
|||
|
All active ATM devices are listed in /proc/net/atm/devices. For each device,
|
|||
|
the interface number, the type label, the end system identifier (ESI), and
|
|||
|
statistics are shown. The statistics correspond to the ones available via
|
|||
|
atmdiag.
|
|||
|
|
|||
|
Individual ATM devices may register entries of the form type:number (e.g.
|
|||
|
eni:0) which contain device-specific information.
|
|||
|
|
|||
|
The files /proc/net/atm/pvc and /proc/net/atm/svc list all PVC and SVC
|
|||
|
sockets. For both types of sockets, the interface, VPI and VCI numbers are
|
|||
|
shown. For PVCs, this is followed by the AAL and the traffic class and the
|
|||
|
selected PCR for the receive and the transmit direction. For SVCs, the SVC
|
|||
|
state and the address of the remote party are shown. SVCs with the interface
|
|||
|
number 999 are used for special control purposes as indicated in the
|
|||
|
``State'' column.
|
|||
|
|
|||
|
Furthermore, /proc/net/atm/vc shows buffer sizes and additional internal
|
|||
|
information for all ATM sockets.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.4. ATM Diagnostics
|
|||
|
|
|||
|
Various counters of the ATM device drivers can be queried with the atmdiag
|
|||
|
program. See the corresponding man page for details.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.5. SONET Diagnostics
|
|||
|
|
|||
|
The SONET diagnostics tool can be used to monitor link performance and to
|
|||
|
simulate errors. In order to get current SONET statistics, run it with the
|
|||
|
ATM interface number as the argument, e.g.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|% sonetdiag 0 |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
The counters can be reset with the -z option:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# sonetdiag -z 0 |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
The following network failures can be simulated:[1]
|
|||
|
|
|||
|
sbip
|
|||
|
insert section errors (B1)
|
|||
|
|
|||
|
lbip
|
|||
|
insert line errors (B2)
|
|||
|
|
|||
|
pbip
|
|||
|
insert path errors (B3)
|
|||
|
|
|||
|
frame
|
|||
|
force (RX) frame loss
|
|||
|
|
|||
|
los
|
|||
|
insert loss of signal
|
|||
|
|
|||
|
lais
|
|||
|
insert line alarm indication signal
|
|||
|
|
|||
|
pais
|
|||
|
insert path alarm indication signal
|
|||
|
|
|||
|
hcs
|
|||
|
insert header checksum errors
|
|||
|
|
|||
|
|
|||
|
A failure is enabled by adding the corresponding keyword on the command line.
|
|||
|
The failure is cleared by prefixing the keyword with a minus sign, e.g.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|a# sonetdiag -z 0 >/dev/null |
|
|||
|
|b# sonetdiag -z 0 >/dev/null |
|
|||
|
|a# sonetdiag 0 los |
|
|||
|
|a# sonetdiag 0 -los |
|
|||
|
|b# sonetdiag 0 | grep BIP |
|
|||
|
|Section BIP errors: 56200 |
|
|||
|
|Line BIP errors: 342 |
|
|||
|
|Path BIP errors: 152 |
|
|||
|
|a# sonetdiag 0 | grep FEBE |
|
|||
|
|Line FEBE: 342 |
|
|||
|
|Path FEBE: 152 |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
If any diagnostic error insertions are active, their keywords are shown when
|
|||
|
sonetdiag is used to obtain statistics. Note that some error insertions may
|
|||
|
be automatically switched off by the hardware.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4. Native ATM PVCs
|
|||
|
|
|||
|
PVCs can be used for machines that are either connected back to back or via a
|
|||
|
switch. In the latter case, the cell forwarding has to be manually set up at
|
|||
|
the switch.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4.1. Traffic Tools
|
|||
|
|
|||
|
aread/awrite and br/bw are simple programs to access the ATM API. awrite
|
|||
|
sends the text string passed as its second argument in an AAL5 PDU. aread
|
|||
|
receives one AAL5 PDU and displays it in hex. Both programs also display the
|
|||
|
return values of the corresponding system calls and the current values of
|
|||
|
errno.
|
|||
|
|
|||
|
bw either sends its standard input or a stream of blocks containing arbitrary
|
|||
|
data (if a number is passed as its fourth argument) in 8 kB AAL5 PDUs. br
|
|||
|
receives AAL5 PDUs and writes them to standard output.
|
|||
|
|
|||
|
The first argument of aread, awrite, br and bw is always the PVC address,
|
|||
|
i.e. the ATM interface number, the VPI and the VCI number, with a dot between
|
|||
|
elements. The interface number can be omitted if it is zero. Example:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|% awrite 1.0.42 hi |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Note that some adapters only support VPI == 0. Also, the VCI range may be
|
|||
|
limited, e.g 0 to 1023. The interface number can be obtained from the
|
|||
|
initialization message the driver printed during startup. atm0 is interface
|
|||
|
0, atm1 is interface 1, etc. If the system is equipped with a real ATM
|
|||
|
adapter (e.g. not only atmtcp), that adapter is normally at atm0.
|
|||
|
|
|||
|
aping receives and sends small AAL5 PDUs on a PVC. It expects that messages
|
|||
|
it sends are either echoed back or that a similar program on the other side
|
|||
|
generates a stream of messages. aping reports an error if no messages are
|
|||
|
received for too long. aping is invoked by specifying the PVC, like aread.
|
|||
|
|
|||
|
For "real" tests, you should use the modified version of ttcp that comes with
|
|||
|
this package. The original is available at [ftp://ftp.sgi.com/sgi/src/ttcp/]
|
|||
|
ftp://ftp.sgi.com/sgi/src/ttcp/. The following options have been added:
|
|||
|
|
|||
|
-a
|
|||
|
use native ATM instead of UDP/TCP. The address must be in the format
|
|||
|
[itf.]vpi.vci for PVCs, or a valid ATM end system address for SVCs.
|
|||
|
|
|||
|
-P num
|
|||
|
use a CBR connection with a peak cell rate of num cells per second.
|
|||
|
Default is to use UBR.
|
|||
|
|
|||
|
-C
|
|||
|
disable (UDP) checksums
|
|||
|
|
|||
|
|
|||
|
Example:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|%a ttcp_atm -r -a -s 0.90 |
|
|||
|
|%b ttcp_atm -t -a -s 0.90 |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
4.2. Direct Cell Access
|
|||
|
|
|||
|
On adapters where the device driver supports access to raw cells (``AAL0''),
|
|||
|
individual cells can be composed and received with the atmdump program. Here
|
|||
|
is an example:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|a% sleep 10; date | ./atmdump -t 1 -c 0.51 |
|
|||
|
|b% ./atmdump 0.51 |
|
|||
|
|825079645.192480: VPI=0 VCI=51, GFC=0x0, CLP=1, Data SDU 1 (PTI 1) |
|
|||
|
| 46 72 69 20 46 65 62 20 32 33 20 31 32 3a 34 37 |
|
|||
|
| 3a 32 35 20 47 4d 54 20 31 39 39 36 0a 00 00 00 |
|
|||
|
| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
5. Signaling
|
|||
|
|
|||
|
5.1. ATM Hosts File
|
|||
|
|
|||
|
Because ATM addresses are inconvenient to use, most ATM tools also accept
|
|||
|
names instead of numeric addresses. The mapping between names and numbers is
|
|||
|
defined in the file /etc/hosts.atm. The structure of this file is similar to
|
|||
|
the /etc/hosts file:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|numeric_address name(s) |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
e.g.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 pc2-a.fqdn pc2-a |
|
|||
|
|47.0005.80FFE1000000F21A26D8.0020D4102A80.00 pc3-a.fqdn pc3-a |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
The numeric address can be specified in any of the formats described in [api
|
|||
|
]. The numeric address(es) of a Linux system can be determined with the
|
|||
|
command atmaddr -n (see also section Manual Address Configuration).
|
|||
|
|
|||
|
Many ATM tools also attempt to find the corresponding name when displaying an
|
|||
|
address. When translating from the numeric form to a name, the first
|
|||
|
applicable name in the file is used.
|
|||
|
|
|||
|
In addition to ATM addresses for SVCs, also PVC addresses can be stored in /
|
|||
|
etc/hosts.atm. If different address types are stored under the same name, the
|
|||
|
first suitable one will be chosen, i.e. if an application explicitly requests
|
|||
|
only SVC addresses, any PVC addresses will be ignored.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.2. ANS
|
|||
|
|
|||
|
If you have access to the ATM Name Service (ANS, e.g because you've installed
|
|||
|
the ANS extension), you can use it instead of or in addition to the hosts
|
|||
|
file by specifying the host that runs ANS in the /etc/resolv.conf file.
|
|||
|
|
|||
|
For performing reverse lookups of E.164 addresses, the list of telephony
|
|||
|
country codes needs to be known. That list can be obtained from the [http://
|
|||
|
www.itu.org/] International Telecommunications Union. The List of ITU-T
|
|||
|
Recommendation E.164 Assigned Country Codes is currently available in PDF and
|
|||
|
Word document formats.
|
|||
|
|
|||
|
Note NOTE
|
|||
|
<EFBFBD> Should the URL become out of date, the document should easily be found
|
|||
|
by searching for the document's title at the ITU web site.
|
|||
|
|
|||
|
The script src/lib/pdf2e164_cc.pl in the atm-linux distribution can be used
|
|||
|
to create the E.164 county codes table with the PDF version of the country
|
|||
|
code list, e.g.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|perl pdf2e164_cc.pl e164_xxx.pdf >/etc/e164_cc |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
It should be noted that pdftotext needs to be available in order to run the
|
|||
|
script above. It can be obtained with xpdf.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.3. Signaling Demon
|
|||
|
|
|||
|
Man pages: atmsigd(8) atmsigd.conf(4)
|
|||
|
|
|||
|
Note that atmsigd's support for point-to-multipoint is very limited: only
|
|||
|
operation as a single leaf of a point-to-multipoint tree works.
|
|||
|
|
|||
|
By default, atmsigd is configured to conform to dynamically configure the UNI
|
|||
|
version. It can be compiled for UNI 3.0, 3.1, or 4.0 specifically by passing
|
|||
|
the --with-uni=VERSION to the ./configure script in the top-level directory
|
|||
|
of the linux-atm source distribution.
|
|||
|
|
|||
|
Note that atmsigd is configured to be paranoid. If it detects unusual
|
|||
|
problems, it frequently terminates. This will (obviously) change in the
|
|||
|
future.
|
|||
|
|
|||
|
atmsigd also looks for a configuration file at the location specified with
|
|||
|
the -c option. The default location is /usr/local/etc/atmsigd.conf.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.4. ILMI Demon
|
|||
|
|
|||
|
ILMI provides a mechanism for automatic address configuration. If there is no
|
|||
|
switch or if the switch doesn't support ILMI, the ATM addresses must be
|
|||
|
configured manually (see section Manual Address Configuration). Note that the
|
|||
|
ILMI demon should not be used on interfaces where addresses are manually
|
|||
|
configured.
|
|||
|
|
|||
|
The ILMI demon is started as follows:
|
|||
|
|
|||
|
ilmid [-b] [-d] [-i local_ip] [-l log_file] [-q qos] [-u uni_version] [-v]
|
|||
|
[-x] [itf]
|
|||
|
|
|||
|
-b
|
|||
|
background. Run in a forked child process after initializing.
|
|||
|
|
|||
|
-d
|
|||
|
enables debugging output. By default, ilmid is very quiet.
|
|||
|
|
|||
|
-i local_ip
|
|||
|
IP address to tell switch when asked for one. Can be in either dotted
|
|||
|
decimal or textual format. By default, ilmid uses some heuristics to
|
|||
|
select a local IP address.
|
|||
|
|
|||
|
-l logfile
|
|||
|
write diagnostic messages to the specified file instead of to standard
|
|||
|
error. The special name syslog is used to send diagnostics to the system
|
|||
|
logger.
|
|||
|
|
|||
|
-q qos
|
|||
|
configures the ILMI VC to use the specified quality of service. By
|
|||
|
default, UBR at link speed is used on the ILMI VC.
|
|||
|
|
|||
|
-u uni_version
|
|||
|
set UNI version. Possible values are 3.0, 3.1, and 4.0. The dot can be
|
|||
|
omitted. The default value depends on how ilmid was compiled. Typically,
|
|||
|
it is 3.0.
|
|||
|
|
|||
|
-v
|
|||
|
enables extensive debugging output.
|
|||
|
|
|||
|
-x
|
|||
|
disable inclusion of variable bindings in the ColdstartTrap. Some
|
|||
|
switches (e.g. the LS100) only work if this option is set.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
If no interface number is specified, ilmid serves interface 0. You can check
|
|||
|
whether address registration was successful with the atmaddr command (see
|
|||
|
below).
|
|||
|
|
|||
|
The agent supports only the address registration procedures specified in
|
|||
|
section 5.8 of the ATM Forum's UNI 3.1 specification. These procedures
|
|||
|
involve the switch registering the network prefix on the host and the host
|
|||
|
registering the final ATM address back on the switch. The host accomplishes
|
|||
|
this by appending an ESI (End System Identifier) and a null selector byte to
|
|||
|
the network prefix registered by the switch. The ESI is the physical or MAC
|
|||
|
address of the ATM interface.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.5. Manual Address Configuration
|
|||
|
|
|||
|
If your switch doesn't support ILMI, you have to set the ATM address manually
|
|||
|
on the switch and on the PC(s). On the Linux side, make sure that ilmid
|
|||
|
doesn't interfere, then use the atmaddr command to set the address(es).
|
|||
|
|
|||
|
Man pages: atmaddr(8)
|
|||
|
|
|||
|
Manual configuration of ATM addresses on the switch depends on the brand. On
|
|||
|
a Fore ASX-200, it can be done with the following command:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|conf nsap route new nsap_addr 152 port vpi |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
e.g.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|conf nsap route new 47000580ffe1000000f21510650020ea000ee000 152 1a2 0 |
|
|||
|
| |<---- NSAP prefix ----->||<--ESI--->|^^ |
|
|||
|
| SEL |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
The entire NSAP address always has to have a length of 40 digits. Note that
|
|||
|
you can also use addresses with a different prefix and an ESI that doesn't
|
|||
|
correspond to any ESI your adapters have. The value of the selector byte
|
|||
|
(SEL) is ignored.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.6. Running Two ATM NICs Back-to-Back
|
|||
|
|
|||
|
It is also possible to run with two ATM NICs connected back-to-back, and no
|
|||
|
switch in between. This is great for simple test environments.
|
|||
|
|
|||
|
First, if you're using UTP or STP-5, you need a suitable cable. Our
|
|||
|
experience with standard 100Base-T back-to-back cables was not good. It
|
|||
|
appears that the pin-out they use is different. After some false starts, we
|
|||
|
found that the following cable works:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|RJ45 RJ45 |
|
|||
|
| 1 ------------ 7 |
|
|||
|
| 2 ------------ 8 |
|
|||
|
| |
|
|||
|
| 7 ------------ 1 |
|
|||
|
| 8 ------------ 2 |
|
|||
|
| |
|
|||
|
|Pins 3, 4, 5, 6 unconnected. |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
A better way to illustrate this may be to show the proper color schemes for
|
|||
|
the RJ45 connectors at each end of the back-to-back cable. The first
|
|||
|
connector should use the following scheme:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|RJ45-1 |
|
|||
|
| 1 - Brown |
|
|||
|
| 2 - White/Brown |
|
|||
|
| 3 - Unconnected |
|
|||
|
| 4 - Unconnected |
|
|||
|
| 5 - Unconnected |
|
|||
|
| 6 - Unconnected |
|
|||
|
| 7 - Orange |
|
|||
|
| 8 - White/Orange |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
And the second connector should use this scheme:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|RJ45-2 |
|
|||
|
| 1 - Orange |
|
|||
|
| 2 - White/Orange |
|
|||
|
| 3 - Unconnected |
|
|||
|
| 4 - Unconnected |
|
|||
|
| 5 - Unconnected |
|
|||
|
| 6 - Unconnected |
|
|||
|
| 7 - Brown |
|
|||
|
| 8 - White/Brown |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
|
|||
|
|
|||
|
You can also make up a loopback cable with 1 -- 7 and 2 -- 8 connected for
|
|||
|
ultra-cheap setups.
|
|||
|
|
|||
|
Here we have two machines called ``virgil'' and ``nestor''. Substitute your
|
|||
|
own names as necessary.
|
|||
|
|
|||
|
One side of the ATM connection needs to use the network version of atmsigd
|
|||
|
and the other side should use the normal user version. So here on nestor we
|
|||
|
start atmsigd with:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|atmsigd -b -m network |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
and on virgil with:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|atmsigd -b |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Without a switch, you won't be able to use ILMI. Instead, create a /etc/
|
|||
|
hosts.atm file containing two dummy addresses. Our ATM hosts file contains:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 nestor-atm |
|
|||
|
|47.0005.80FFE1000000F21A26D8.0020D4102A80.00 virgil-atm |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
These are completely spurious addresses, of course, but as long as you're not
|
|||
|
connected to a public or private ATM network, I don't think it matters. To
|
|||
|
set the address correctly in the driver, we use:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|atmaddr -a virgil-atm |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
on virgil, and:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|atmaddr -a nestor-atm |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
on nestor. Now start atmarpd on both machines in the normal way. Now you
|
|||
|
(should) have a working ATM set-up. To get IP over ATM working, just follow
|
|||
|
the instructions in section IP Over ATM.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.7. Q.2931 Message Dumper
|
|||
|
|
|||
|
The Q.2931 message compiler also generates a pretty-printer for Q.2931
|
|||
|
messages. The executable is called q.dump is stored in the src/qgen
|
|||
|
directory. Note that it is not copied elsewhere by make install.
|
|||
|
|
|||
|
q.dump expects a sequence of whitespace-separated hex bytes at standard input
|
|||
|
and outputs the message structure if the message can be parsed. Example:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|% echo 09 03 80 00 05 5A 80 00 06 08 80 00 02 81 83 00 48 \ |
|
|||
|
| 00 00 08 | ./q.dump |
|
|||
|
|_pdsc = 9 "Q.2931 user-network call/connection control message" |
|
|||
|
|_cr_len = 3 |
|
|||
|
|call_ref = 8388613 (0x800005) |
|
|||
|
|msg_type = 0x5a "RELEASE COMPLETE" |
|
|||
|
|_ext = 1 |
|
|||
|
|_flag = 0 "instruction field not significant" |
|
|||
|
|_action_ind = 0 "clear call" |
|
|||
|
|msg_len = 6 (0x6) |
|
|||
|
| _ie_id = 0x08 "Cause" |
|
|||
|
| _ext = 1 |
|
|||
|
| cause_cs = 0 "ITU-T standardized" |
|
|||
|
| _flag = 0 "instruction field not significant" |
|
|||
|
| _action_ind = 0 "clear call" |
|
|||
|
| _ie_len = 2 (0x2) |
|
|||
|
| _ext = 1 |
|
|||
|
| location = 1 "private network serving the local user" |
|
|||
|
| _ext = 1 |
|
|||
|
| cause = 3 "no route to destination" |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6. IP Over ATM
|
|||
|
|
|||
|
IP over ATM is supported with Classical IP over ATM (CLIP, defined in RFC1577
|
|||
|
[RFC1577], LAN Emulation (LANE, defined in [lanev1] and [lanev2]) and
|
|||
|
Multi-Protocol Over ATM (MPOA, client only, defined in [mpoav1]).
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6.1. CLIP
|
|||
|
|
|||
|
A demon process is used to generate and answer ARP queries. The actual kernel
|
|||
|
part maintains a small lookup table only containing partial information.
|
|||
|
|
|||
|
Man pages: atmarpd(8), atmarp(8)
|
|||
|
|
|||
|
atmsigd and ilmid must already be running when atmarpd is started. Use the -b
|
|||
|
option to make sure they're properly synchronized, e.g.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|#!/bin/sh |
|
|||
|
|atmsigd -b |
|
|||
|
|ilmid -b |
|
|||
|
|atmarpd -b |
|
|||
|
|... |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
works, but
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|#!/bin/sh |
|
|||
|
|atmsigd & |
|
|||
|
|ilmid & |
|
|||
|
|atmarpd & |
|
|||
|
|... |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
frequently doesn't (yet).
|
|||
|
|
|||
|
The atmarp program is used to configure ATMARP. First, you have to start
|
|||
|
atmsigd, ilmid, and atmarpd, then create an IP interface and configure it:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# atmarp -c interface_name |
|
|||
|
|# ifconfig atm0 local_address possibly_more_options up |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
e.g.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# atmarp -c atm0 |
|
|||
|
|# ifconfig atm0 10.0.0.3 up |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
If only PVCs will be used, they can now be created with a command like
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# atmarp -s 10.0.0.4 0.0.70 |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
NULL encapsulation is used if the null keyword is specified. Note that ARP
|
|||
|
requires LLC/SNAP encapsulation. NULL encapsulation can therefore only be
|
|||
|
used for PVCs.
|
|||
|
|
|||
|
When using SVCs, some additional configuration work may be necessary. If the
|
|||
|
machine is acting as the ATMARP server on that LIS, no additional
|
|||
|
configuration is required. Otherwise, the ATM address of the ATMARP server
|
|||
|
has to be configured. This is done by creating an entry for the network
|
|||
|
address with the option arpsrv set, e.g.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# atmarp -s \ |
|
|||
|
| 10.0.0.0 47.0005.80.ffe100.0000.f215.1065.0020EA000756.00 \ |
|
|||
|
| arpsrv |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
Note that the ATMARP server currently has to be started and configured before
|
|||
|
any clients are configured.
|
|||
|
|
|||
|
The kernel ATMARP table can be read via \path{/proc/net/atm/arp}. The table
|
|||
|
used by atmarpd is regularly printed on standard error if atmarpd is started
|
|||
|
with the -d option. If atmarpd is invoked without -d, the table is written to
|
|||
|
the file atmarpd.table in the dump directory (by default /var/run; can be
|
|||
|
changed with -D), and it can be read with atmarp -a.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6.2. LAN Emulation
|
|||
|
|
|||
|
Besides Classical IP over ATM, LAN Emulation (LANE) can be used to carry IP
|
|||
|
over ATM. LANE emulates the characteristics of legacy LAN technology, such as
|
|||
|
support for broadcasts. LANE server support is described in the src/lane/
|
|||
|
USAGE file in the linux-atm distribution.
|
|||
|
|
|||
|
Man pages: bus(8), lecs(8), les(8), and zeppelin(8)
|
|||
|
|
|||
|
If you plan to run more than one LANE clients, LANE service or LANE clients
|
|||
|
and LANE service, you need to specify different local ATM addresses for each
|
|||
|
demon. Since all the LANE demons use similar service access points (SAPs)
|
|||
|
they need different ATM addresses to differentiate between connections.
|
|||
|
|
|||
|
Just as with CLIP, the LANE client consists of two parts: a demon process
|
|||
|
called zeppelin which takes care of the LANE protocol and kernel part which
|
|||
|
contains LANE ARP cache.
|
|||
|
|
|||
|
atmsigd and ilmid must already be running when zeppelin is started. When
|
|||
|
zeppelin starts, the kernel creates a new interface which can then be
|
|||
|
configured:
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# zeppelin possibly_more_options & |
|
|||
|
|# ifconfig lec0 local_address possibly_more_options up |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
In the example below, two LANE clients are started. The first client uses
|
|||
|
default interface lec0, default listen address and tries to join the default
|
|||
|
ELAN. The other LANE client gets interface lec2 assigned to it, binds to
|
|||
|
local address mybox3, tries to join ELAN called myelan and will bridge
|
|||
|
packets between ELAN and Ethernet segments. Address mybox3 is defined in /etc
|
|||
|
/hosts.atm. Rest of the bridging can be configured by reading the Bridging
|
|||
|
mini-HOWTO. [bridge-howto]
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# zeppelin & |
|
|||
|
|# ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \ |
|
|||
|
| broadcast 10.1.1.255 up |
|
|||
|
|# |
|
|||
|
|# zeppelin -i 2 -l mybox3 -n myelan -p & |
|
|||
|
|# ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \ |
|
|||
|
| broadcast 10.1.2.255 up |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
By default, zeppelin uses interface lec0, binds to local ATM address using
|
|||
|
selector byte value 0, tries to contact LECS using Well-Known LECS address,
|
|||
|
joins the default ELAN as defined by the LECS, accepts the MTU size as
|
|||
|
defined by the LES and will not act as an proxy LEC. These parameters can be
|
|||
|
tailored with command line options which are defined in zeppelin(8).
|
|||
|
|
|||
|
zeppelin will automatically join any ELANs which use higher MTU than the
|
|||
|
default MTU of 1516 bytes. The MTU of the LANE interface will adjust itself
|
|||
|
according to the MTU of the current ELAN.
|
|||
|
|
|||
|
The state of the LANE ARP cache entries can be monitored through /proc/net/
|
|||
|
atm/lec. For each entry the MAC and ATM addresses and status is listed. If
|
|||
|
the entry has an active connection, the connection identifiers are also
|
|||
|
listed.
|
|||
|
|
|||
|
The LANE service ( lecs(8), les(8), and bus(8)) is configured using
|
|||
|
configuration files. The configuration file syntax is listed on the
|
|||
|
respective manual pages.
|
|||
|
|
|||
|
A more detailed description of Linux LANE services is discussed in Marko
|
|||
|
Kiiskil<EFBFBD>'s Master's Thesis [kiis].
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6.3. MPOA
|
|||
|
|
|||
|
The Linux MPOA client continues the tradition of user space -- kernel divided
|
|||
|
ATM services. The demon process called mpcd processes MPOA control packets
|
|||
|
while the kernel holds MPOA ingress and egress caches and does the packet
|
|||
|
forwarding.
|
|||
|
|
|||
|
Man page: mpcd(8)
|
|||
|
|
|||
|
atmsigd and ilmid must already be running when mpcd is started. Since MPOA
|
|||
|
detects IP layer flows from LANE traffic, you need to have zeppelin running
|
|||
|
before MPOA can function. However, the order in which zeppelin and mpcd is
|
|||
|
started is not fixed. You can kill any of the demons at your will and restart
|
|||
|
it later without need to restart the other demon. The easiest way to disable
|
|||
|
MPOA is to kill the running mpcd.
|
|||
|
|
|||
|
Below is the example from Section LAN Emulation which starts two LANE
|
|||
|
clients. The configuration has been augmented with two MPOA clients which the
|
|||
|
LANE clients will serve.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# zeppelin & |
|
|||
|
|# ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \ |
|
|||
|
| broadcast 10.1.1.255 up |
|
|||
|
|# mpcd -s mybox1 -l mybox2 & |
|
|||
|
|# |
|
|||
|
|# zeppelin -i 2 -l mybox3 -n myelan -p & |
|
|||
|
|# ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \ |
|
|||
|
| broadcast 10.1.2.255 up |
|
|||
|
|# mpcd -i 2 -s mybox4 -l mybox5 & |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
The MPOA demon needs two different local ATM addresses which it uses when
|
|||
|
initiating and receiving data and control connections. The addresses can be
|
|||
|
the same as with e.g. zeppelin but must be different among other mpcd demons.
|
|||
|
By default, mpcd does not retrieve configuration information from the LECS.
|
|||
|
The necessary command line options and an example of using LECS are shown on
|
|||
|
the mpcd manual page. The manual page also lists the rest of the available
|
|||
|
options.
|
|||
|
|
|||
|
The contents of MPOA ingress and egress caches can be monitored through the /
|
|||
|
proc/net/atm/mpc file.
|
|||
|
|
|||
|
The Linux MPOA client also supports CBR traffic class for shortcuts SVCs
|
|||
|
instead of default UBR. The QoS specifications for future shortcuts can be
|
|||
|
set and modified using /proc/net/atm/mpc.
|
|||
|
|
|||
|
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|# echo add 130.230.54.146 tx=80000,1600 rx=tx > /proc/net/atm/mpc |
|
|||
|
|# # generate enough traffic to trigger a shortcut |
|
|||
|
|# cat /proc/net/atm/mpc |
|
|||
|
|QoS entries for shortcuts: |
|
|||
|
|IP address |
|
|||
|
| TX:max_pcr pcr min_pcr max_cdv max_sdu |
|
|||
|
| RX:max_pcr pcr min_pcr max_cdv max_sdu |
|
|||
|
|130.230.54.146 |
|
|||
|
| 80000 0 0 0 1600 |
|
|||
|
| 80000 0 0 0 1600 |
|
|||
|
| |
|
|||
|
|Interface 2: |
|
|||
|
| |
|
|||
|
|Ingress Entries: |
|
|||
|
|IP address State Holding time Packets fwded VPI VCI |
|
|||
|
|130.230.4.3 invalid 1160 0 |
|
|||
|
|130.230.54.146 resolved 542 151 0 109 |
|
|||
|
|... |
|
|||
|
+---------------------------------------------------------------------------+
|
|||
|
|
|||
|
The shortcut to IP address 130.230.54.146 was established with the parameters
|
|||
|
shown above. There also exist patches which extend the flow detection to
|
|||
|
fully support layer 4 flows. The layer 4 flows are expressed as a 5 tuple
|
|||
|
(proto, local addr, local port, remote addr, remote port) and they identify
|
|||
|
application to application flows. If you are interested, see [ftp://
|
|||
|
sunsite.tut.fi/pub/Local/linux-atm/mpoa/] ftp://sunsite.tut.fi/pub/Local/
|
|||
|
linux-atm/mpoa/ for the latest patch.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
Bibliography
|
|||
|
|
|||
|
References
|
|||
|
|
|||
|
[api]<5D>Linux ATM API, Werner Almesberger, [http://linux-atm.sourceforge.net/
|
|||
|
API/] http://linux-atm.sourceforge.net/API/ , July 1996.
|
|||
|
|
|||
|
|
|||
|
[RFC1577]<5D>Classical IP and ARP over ATM (RFC1577), Mark Laubach, January
|
|||
|
1994.
|
|||
|
|
|||
|
|
|||
|
[lanev1]<5D>LAN Emulation Over ATM -- Version 1.0, ATM Forum, February 1996.
|
|||
|
|
|||
|
|
|||
|
[lanev2]<5D>LAN Emulation Over ATM -- Version 2 -- LUNI Specification, ATM
|
|||
|
Forum, July 1997.
|
|||
|
|
|||
|
|
|||
|
[mpoav1]<5D>Multi-Protocol Over ATM -- Version 1.0, ATM Forum, July 1997.
|
|||
|
|
|||
|
|
|||
|
[bridge-howto]<5D>Bridging mini-Howto, Christopher Cole, [http://
|
|||
|
www.linuxdoc.org/HOWTO/mini/Bridge.html] http://www.linuxdoc.org/HOWTO/mini/
|
|||
|
Bridge.html , March, 2001.
|
|||
|
|
|||
|
|
|||
|
[kiis]<5D>Implementation of LAN Emulation Over ATM in Linux, Marko Kiiskil<69>,
|
|||
|
[ftp://sunsite.tut.fi/pub/Local/linux-atm/misc/] ftp://sunsite.tut.fi/pub/
|
|||
|
Local/linux-atm/misc/ , October 1996.
|
|||
|
|
|||
|
Notes
|
|||
|
|
|||
|
[1] Some adapters may only support a subset of this.
|