<HTML ><HEAD ><TITLE >Signaling</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.63 "><LINK REL="HOME" TITLE="ATM on Linux HOWTO" HREF="index.html"><LINK REL="PREVIOUS" TITLE="Native ATM PVCs" HREF="native-atm-pvcs.html"><LINK REL="NEXT" TITLE="IP Over ATM" HREF="ip-over-atm.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >ATM on Linux HOWTO</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="native-atm-pvcs.html" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="ip-over-atm.html" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="SIGNALING" >5. Signaling</A ></H1 ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="SIGNALING.ATM-HOSTS-FILE" >5.1. ATM Hosts File</A ></H2 ><P >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 <TT CLASS="FILENAME" >/etc/hosts.atm</TT >. The structure of this file is similar to the <TT CLASS="FILENAME" >/etc/hosts</TT > file: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN532" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" ><TT CLASS="REPLACEABLE" ><I >numeric_address</I ></TT > <TT CLASS="REPLACEABLE" ><I >name(s)</I ></TT ></PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > e.g. <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN536" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 pc2-a.fqdn pc2-a 47.0005.80FFE1000000F21A26D8.0020D4102A80.00 pc3-a.fqdn pc3-a</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV ></P ><P >The numeric address can be specified in any of the formats described in [<A HREF="bibliography.html#API" >api</A >]. The numeric address(es) of a Linux system can be determined with the command <B CLASS="COMMAND" >atmaddr <TT CLASS="OPTION" >-n</TT ></B > (see also section <A HREF="signaling.html#SIGNALING.MANUAL-ADDRESS-CONFIGURATION" ><I >Manual Address Configuration</I ></A >).</P ><P >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.</P ><P >In addition to ATM addresses for SVCs, also PVC addresses can be stored in <TT CLASS="FILENAME" >/etc/hosts.atm</TT >. 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.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="SIGNALING.ANS" >5.2. ANS</A ></H2 ><P >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 <TT CLASS="FILENAME" >/etc/resolv.conf</TT > file.</P ><P >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 <A HREF="http://www.itu.org/" TARGET="_top" >International Telecommunications Union</A >. The <A HREF="http://www.itu.int/itudoc/itu-t/ob-lists/icc/e164_717.html" TARGET="_top" ><I CLASS="CITETITLE" >List of ITU-T Recommendation E.164 Assigned Country Codes</I ></A > is currently available in PDF and Word document formats. <DIV CLASS="NOTE" ><P ></P ><TABLE CLASS="NOTE" WIDTH="100%" BORDER="0" ><TR ><TD WIDTH="25" ALIGN="CENTER" VALIGN="TOP" ><IMG SRC="../images/note.gif" HSPACE="5" ALT="Note"></TD ><TH ALIGN="LEFT" VALIGN="CENTER" ><B >NOTE</B ></TH ></TR ><TR ><TD > </TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >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.</P ></TD ></TR ></TABLE ></DIV ></P ><P >The script <B CLASS="COMMAND" >src/lib/pdf2e164_cc.pl</B > 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. <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN559" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >perl pdf2e164_cc.pl <TT CLASS="REPLACEABLE" ><I >e164_xxx.pdf</I ></TT > >/etc/e164_cc</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > It should be noted that <SPAN CLASS="APPLICATION" >pdftotext</SPAN > needs to be available in order to run the script above. It can be obtained with <A HREF="http://www.foolabs.com/xpdf/" TARGET="_top" ><SPAN CLASS="APPLICATION" >xpdf</SPAN ></A >.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="SIGNALING.SIGNALING-DEMON" >5.3. Signaling Demon</A ></H2 ><P >Man pages: <SPAN CLASS="CITEREFENTRY" ><SPAN CLASS="REFENTRYTITLE" >atmsigd</SPAN >(8)</SPAN > <SPAN CLASS="CITEREFENTRY" ><SPAN CLASS="REFENTRYTITLE" >atmsigd.conf</SPAN >(4)</SPAN ></P ><P >Note that <SPAN CLASS="APPLICATION" >atmsigd</SPAN >'s support for point-to-multipoint is very limited: only operation as a single leaf of a point-to-multipoint tree works.</P ><P >By default, <SPAN CLASS="APPLICATION" >atmsigd</SPAN > 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 <TT CLASS="PARAMETER" ><I >--with-uni=VERSION</I ></TT > to the <B CLASS="COMMAND" >./configure</B > script in the top-level directory of the linux-atm source distribution.</P ><P >Note that <SPAN CLASS="APPLICATION" >atmsigd</SPAN > is configured to be paranoid. If it detects unusual problems, it frequently terminates. This will (obviously) change in the future.</P ><P ><SPAN CLASS="APPLICATION" >atmsigd</SPAN > also looks for a configuration file at the location specified with the <TT CLASS="PARAMETER" ><I >-c</I ></TT > option. The default location is <TT CLASS="FILENAME" >/usr/local/etc/atmsigd.conf</TT >.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="SIGNALING.ILMI-DEMON" >5.4. ILMI Demon</A ></H2 ><P >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 <A HREF="signaling.html#SIGNALING.MANUAL-ADDRESS-CONFIGURATION" ><I >Manual Address Configuration</I ></A >). Note that the ILMI demon should not be used on interfaces where addresses are manually configured.</P ><P >The ILMI demon is started as follows: <P ><B CLASS="COMMAND" >ilmid</B > [-b] [-d] [-i <TT CLASS="REPLACEABLE" ><I >local_ip</I ></TT >] [-l <TT CLASS="REPLACEABLE" ><I >log_file</I ></TT >] [-q <TT CLASS="REPLACEABLE" ><I >qos</I ></TT >] [-u <TT CLASS="REPLACEABLE" ><I >uni_version</I ></TT >] [-v] [-x] [<TT CLASS="REPLACEABLE" ><I >itf</I ></TT >]</P > <P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="PARAMETER" ><I >-b</I ></TT ></DT ><DD ><P >background. Run in a forked child process after initializing.</P ></DD ><DT ><TT CLASS="PARAMETER" ><I >-d</I ></TT ></DT ><DD ><P >enables debugging output. By default, <SPAN CLASS="APPLICATION" >ilmid</SPAN > is very quiet.</P ></DD ><DT ><TT CLASS="PARAMETER" ><I >-i</I ></TT > <TT CLASS="REPLACEABLE" ><I >local_ip</I ></TT ></DT ><DD ><P >IP address to tell switch when asked for one. Can be in either dotted decimal or textual format. By default, <SPAN CLASS="APPLICATION" >ilmid</SPAN > uses some heuristics to select a local IP address.</P ></DD ><DT ><TT CLASS="PARAMETER" ><I >-l</I ></TT > <TT CLASS="REPLACEABLE" ><I >logfile</I ></TT ></DT ><DD ><P >write diagnostic messages to the specified file instead of to standard error. The special name <TT CLASS="PARAMETER" ><I >syslog</I ></TT > is used to send diagnostics to the system logger.</P ></DD ><DT ><TT CLASS="PARAMETER" ><I >-q</I ></TT > <TT CLASS="REPLACEABLE" ><I >qos</I ></TT ></DT ><DD ><P >configures the ILMI VC to use the specified quality of service. By default, UBR at link speed is used on the ILMI VC.</P ></DD ><DT ><TT CLASS="PARAMETER" ><I >-u</I ></TT > <TT CLASS="REPLACEABLE" ><I >uni_version</I ></TT ></DT ><DD ><P >set UNI version. Possible values are <TT CLASS="PARAMETER" ><I >3.0</I ></TT >, <TT CLASS="PARAMETER" ><I >3.1</I ></TT >, and <TT CLASS="PARAMETER" ><I >4.0</I ></TT >. The dot can be omitted. The default value depends on how <SPAN CLASS="APPLICATION" >ilmid</SPAN > was compiled. Typically, it is <TT CLASS="PARAMETER" ><I >3.0</I ></TT >.</P ></DD ><DT ><TT CLASS="PARAMETER" ><I >-v</I ></TT ></DT ><DD ><P >enables extensive debugging output.</P ></DD ><DT ><TT CLASS="PARAMETER" ><I >-x</I ></TT ></DT ><DD ><P >disable inclusion of variable bindings in the ColdstartTrap. Some switches (e.g. the LS100) only work if this option is set.</P ></DD ></DL ></DIV > </P ><P >If no interface number is specified, <SPAN CLASS="APPLICATION" >ilmid</SPAN > serves interface 0. You can check whether address registration was successful with the <B CLASS="COMMAND" >atmaddr</B > command (see below).</P ><P >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.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="SIGNALING.MANUAL-ADDRESS-CONFIGURATION" >5.5. Manual Address Configuration</A ></H2 ><P >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 <SPAN CLASS="APPLICATION" >ilmid</SPAN > doesn't interfere, then use the <B CLASS="COMMAND" >atmaddr</B > command to set the address(es).</P ><P >Man pages: <SPAN CLASS="CITEREFENTRY" ><SPAN CLASS="REFENTRYTITLE" >atmaddr</SPAN >(8)</SPAN ></P ><P >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: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN674" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >conf nsap route new <TT CLASS="REPLACEABLE" ><I >nsap_addr</I ></TT > 152 <TT CLASS="REPLACEABLE" ><I >port</I ></TT > <TT CLASS="REPLACEABLE" ><I >vpi</I ></TT ></PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > e.g. <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN679" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >conf nsap route new 47000580ffe1000000f21510650020ea000ee000 152 1a2 0 |<---- NSAP prefix ----->||<--ESI--->|^^ SEL</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV ></P ><P >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.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="SIGNALING.RUNNING-TWO-ATM-NICS-BACK-TO-BACK" >5.6. Running Two ATM NICs Back-to-Back</A ></H2 ><P >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.</P ><P >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: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN686" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >RJ45 RJ45 1 ------------ 7 2 ------------ 8 7 ------------ 1 8 ------------ 2 Pins 3, 4, 5, 6 unconnected.</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > 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: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN688" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >RJ45-1 1 - Brown 2 - White/Brown 3 - Unconnected 4 - Unconnected 5 - Unconnected 6 - Unconnected 7 - Orange 8 - White/Orange</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > And the second connector should use this scheme: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN690" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >RJ45-2 1 - Orange 2 - White/Orange 3 - Unconnected 4 - Unconnected 5 - Unconnected 6 - Unconnected 7 - Brown 8 - White/Brown</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > </P ><P >You can also make up a loopback cable with 1 -- 7 and 2 -- 8 connected for ultra-cheap setups.</P ><P >Here we have two machines called ``virgil'' and ``nestor''. Substitute your own names as necessary.</P ><P >One side of the ATM connection needs to use the network version of <SPAN CLASS="APPLICATION" >atmsigd</SPAN > and the other side should use the normal user version. So here on nestor we start <SPAN CLASS="APPLICATION" >atmsigd</SPAN > with: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN697" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >atmsigd -b -m network</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > and on virgil with: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN699" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >atmsigd -b</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV ></P ><P >Without a switch, you won't be able to use ILMI. Instead, create a <TT CLASS="FILENAME" >/etc/hosts.atm</TT > file containing two dummy addresses. Our ATM hosts file contains: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN703" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 nestor-atm 47.0005.80FFE1000000F21A26D8.0020D4102A80.00 virgil-atm</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV ></P ><P >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: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN706" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >atmaddr -a virgil-atm</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > on virgil, and: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN708" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >atmaddr -a nestor-atm</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > on nestor. Now start <SPAN CLASS="APPLICATION" >atmarpd</SPAN > 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 <A HREF="ip-over-atm.html" ><I >IP Over ATM</I ></A >.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="SIGNALING.Q-2931-MESSAGE-DUMPER" >5.7. Q.2931 Message Dumper</A ></H2 ><P >The Q.2931 message compiler also generates a pretty-printer for Q.2931 messages. The executable is called <SPAN CLASS="APPLICATION" >q.dump</SPAN > is stored in the <TT CLASS="FILENAME" >src/qgen</TT > directory. Note that it is not copied elsewhere by <B CLASS="COMMAND" >make install</B >.</P ><P ><SPAN CLASS="APPLICATION" >q.dump</SPAN > expects a sequence of whitespace-separated hex bytes at standard input and outputs the message structure if the message can be parsed. Example: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN720" ></A ><P ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >% 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"</PRE ></FONT ></TD ></TR ></TABLE ><P ></P ></DIV > </P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="native-atm-pvcs.html" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="ip-over-atm.html" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Native ATM PVCs</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >IP Over ATM</TD ></TR ></TABLE ></DIV ></BODY ></HTML >