|  |  | 
|  | X.25 support within isdn4linux | 
|  | ============================== | 
|  |  | 
|  | This is alpha/beta test code. Use it completely at your own risk. | 
|  | As new versions appear, the stuff described here might suddenly change | 
|  | or become invalid without notice. | 
|  |  | 
|  | Keep in mind: | 
|  |  | 
|  | You are using several new parts of the 2.2.x kernel series which | 
|  | have not been tested in a large scale. Therefore, you might encounter | 
|  | more bugs as usual. | 
|  |  | 
|  | - If you connect to an X.25 neighbour not operated by yourself, ASK the | 
|  | other side first. Be prepared that bugs in the protocol implementation | 
|  | might result in problems. | 
|  |  | 
|  | - This implementation has never wiped out my whole hard disk yet. But as | 
|  | this is experimental code, don't blame me if that happened to you. | 
|  | Backing up important data will never harm. | 
|  |  | 
|  | - Monitor your isdn connections while using this software. This should | 
|  | prevent you from undesired phone bills in case of driver problems. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | How to configure the kernel | 
|  | =========================== | 
|  |  | 
|  | The ITU-T (former CCITT) X.25 network protocol layer has been implemented | 
|  | in the Linux source tree since version 2.1.16. The isdn subsystem might be | 
|  | useful to run X.25 on top of ISDN. If you want to try it, select | 
|  |  | 
|  | "CCITT X.25 Packet Layer" | 
|  |  | 
|  | from the networking options as well as | 
|  |  | 
|  | "ISDN Support" and "X.25 PLP on Top of ISDN" | 
|  |  | 
|  | from the ISDN subsystem options when you configure your kernel for | 
|  | compilation. You currently also need to enable | 
|  | "Prompt for development and/or incomplete code/drivers" from the | 
|  | "Code maturity level options" menu. For the x25trace utility to work | 
|  | you also need to enable "Packet socket". | 
|  |  | 
|  | For local testing it is also recommended to enable the isdnloop driver | 
|  | from the isdn subsystem's configuration menu. | 
|  |  | 
|  | For testing, it is recommended that all isdn drivers and the X.25 PLP | 
|  | protocol are compiled as loadable modules. Like this, you can recover | 
|  | from certain errors by simply unloading and reloading the modules. | 
|  |  | 
|  |  | 
|  |  | 
|  | What's it for? How to use it? | 
|  | ============================= | 
|  |  | 
|  | X.25 on top of isdn might be useful with two different scenarios: | 
|  |  | 
|  | - You might want to access a public X.25 data network from your Linux box. | 
|  | You can use i4l if you were physically connected to the X.25 switch | 
|  | by an ISDN B-channel (leased line as well as dial up connection should | 
|  | work). | 
|  |  | 
|  | This corresponds to ITU-T recommendation X.31 Case A (circuit-mode | 
|  | access to PSPDN [packet switched public data network]). | 
|  |  | 
|  | NOTE: X.31 also covers a Case B (access to PSPDN via virtual | 
|  | circuit / packet mode service). The latter mode (which in theory | 
|  | also allows using the D-channel) is not supported by isdn4linux. | 
|  | It should however be possible to establish such packet mode connections | 
|  | with certain active isdn cards provided that the firmware supports X.31 | 
|  | and the driver exports this functionality to the user. Currently, | 
|  | the AVM B1 driver is the only driver which does so. (It should be | 
|  | possible to access D-channel X.31 with active AVM cards using the | 
|  | CAPI interface of the AVM-B1 driver). | 
|  |  | 
|  | - Or you might want to operate certain ISDN teleservices on your linux | 
|  | box. A lot of those teleservices run on top of the ISO-8208 | 
|  | (DTE-DTE mode) network layer protocol. ISO-8208 is essentially the | 
|  | same as ITU-T X.25. | 
|  |  | 
|  | Popular candidates of such teleservices are EUROfile transfer or any | 
|  | teleservice applying ITU-T recommendation T.90. | 
|  |  | 
|  | To use the X.25 protocol on top of isdn, just create an isdn network | 
|  | interface as usual, configure your own and/or peer's ISDN numbers, | 
|  | and choose x25iface encapsulation by | 
|  |  | 
|  | isdnctrl encap <iface-name> x25iface. | 
|  |  | 
|  | Once encap is set like this, the device can be used by the X.25 packet layer. | 
|  |  | 
|  | All the stuff needed for X.25 is implemented inside the isdn link | 
|  | level (mainly isdn_net.c and some new source files). Thus, it should | 
|  | work with every existing HL driver. I was able to successfully open X.25 | 
|  | connections on top of the isdnloop driver and the hisax driver. | 
|  | "x25iface"-encapsulation bypasses demand dialing. Dialing will be | 
|  | initiated when the upper (X.25 packet) layer requests the lapb datalink to | 
|  | be established. But hangup timeout is still active. Whenever a hangup | 
|  | occurs, all existing X.25 connections on that link will be cleared | 
|  | It is recommended to use sufficiently large hangup-timeouts for the | 
|  | isdn interfaces. | 
|  |  | 
|  |  | 
|  | In order to set up a conforming protocol stack you also need to | 
|  | specify the proper l2_prot parameter: | 
|  |  | 
|  | To operate in ISO-8208  X.25 DTE-DTE mode, use | 
|  |  | 
|  | isdnctrl l2_prot <iface-name> x75i | 
|  |  | 
|  | To access an X.25 network switch via isdn (your linux box is the DTE), use | 
|  |  | 
|  | isdnctrl l2_prot <iface-name> x25dte | 
|  |  | 
|  | To mimic an X.25 network switch (DCE side of the connection), use | 
|  |  | 
|  | isdnctrl l2_prot <iface-name> x25dce | 
|  |  | 
|  | However, x25dte or x25dce is currently not supported by any real HL | 
|  | level driver. The main difference between x75i and x25dte/dce is that | 
|  | x25d[tc]e uses fixed lap_b addresses. With x75i, the side which | 
|  | initiates the isdn connection uses the DTE's lap_b address while the | 
|  | called side used the DCE's lap_b address. Thus, l2_prot x75i might | 
|  | probably work if you access a public X.25 network as long as the | 
|  | corresponding isdn connection is set up by you. At least one test | 
|  | was successful to connect via isdn4linux to an X.25 switch using this | 
|  | trick. At the switch side, a terminal adapter X.21 was used to connect | 
|  | it to the isdn. | 
|  |  | 
|  |  | 
|  | How to set up a test installation? | 
|  | ================================== | 
|  |  | 
|  | To test X.25 on top of isdn, you need to get | 
|  |  | 
|  | - a recent version of the "isdnctrl" program that supports setting the new | 
|  | X.25 specific parameters. | 
|  |  | 
|  | - the x25-utils-2.X package from | 
|  | ftp://ftp.hes.iki.fi/pub/ham/linux/ax25/x25utils-* | 
|  | (don't confuse the x25-utils with the ax25-utils) | 
|  |  | 
|  | - an application program that uses linux PF_X25 sockets (some are | 
|  | contained in the x25-util package). | 
|  |  | 
|  | Before compiling the user level utilities make sure that the compiler/ | 
|  | preprocessor will fetch the proper kernel header files of this kernel | 
|  | source tree. Either make /usr/include/linux a symbolic link pointing to | 
|  | this kernel's include/linux directory or set the appropriate compiler flags. | 
|  |  | 
|  | When all drivers and interfaces are loaded and configured you need to | 
|  | ifconfig the network interfaces up and add X.25-routes to them. Use | 
|  | the usual ifconfig tool. | 
|  |  | 
|  | ifconfig <iface-name> up | 
|  |  | 
|  | But a special x25route tool (distributed with the x25-util package) | 
|  | is needed to set up X.25 routes. I.e. | 
|  |  | 
|  | x25route add 01 <iface-name> | 
|  |  | 
|  | will cause all x.25 connections to the destination X.25-address | 
|  | "01" to be routed to your created isdn network interface. | 
|  |  | 
|  | There are currently no real X.25 applications available. However, for | 
|  | tests, the x25-utils package contains a modified version of telnet | 
|  | and telnetd that uses X.25 sockets instead of tcp/ip sockets. You can | 
|  | use those for your first tests. Furthermore, you might check | 
|  | ftp://ftp.hamburg.pop.de/pub/LOCAL/linux/i4l-eft/ which contains some | 
|  | alpha-test implementation ("eftp4linux") of the EUROfile transfer | 
|  | protocol. | 
|  |  | 
|  | The scripts distributed with the eftp4linux test releases might also | 
|  | provide useful examples for setting up X.25 on top of isdn. | 
|  |  | 
|  | The x25-utility package also contains an x25trace tool that can be | 
|  | used to monitor X.25 packets received by the network interfaces. | 
|  | The /proc/net/x25* files also contain useful information. | 
|  |  | 
|  | - Henner |