The AX.25 protocol offers both connected and connectionless modes of operation, and is used either by itself for point-point links, or to carry other protocols such as TCP/IP and NetRom.
It is similar to X.25 level 2 in structure, with some extensions to make it more useful in the amateur radio environment.
The NetRom protocol is an attempt at a full network protocol and uses AX.25 at its lowest layer as a datalink protocol. It provides a network layer that is an adapted form of AX.25. The NetRom protocol features dynamic routing and node aliases.
The Rose protocol was conceived and first implemented by Tom Moulton W2VY and is an implementation of the X.25 packet layer protocol and is designed to operate with AX.25 as its datalink layer protocol. It too provides a network layer. Rose addresses take the form of 10 digit numbers. The first four digits are called the Data Network Identification Code (DNIC) and are taken from Appendix B of the CCITT X.121 recommendation. More information on the Rose protocol may be ontained from the RATS Web server.
Alan Cox developed some early kernel based AX.25 software support for Linux.
Jonathon Naylor <g4klx@g4klx.demon.co.uk>
has taken up ongoing
development of the code, has added NetRom and Rose support and is now the
developer of the AX.25 related kernel code. DAMA support was developed by
Joerg, DL1BKE, jreuter@poboxes.com
. Baycom and SoundModem support
were added by Thomas Sailer, <sailer@ife.ee.ethz.ch>
. The AX.25
utility software is now maintained by me.
The Linux code supports KISS based TNC's (Terminal Node Controllers), the Ottawa PI card, the Gracilis PacketTwin card and other Z8530 SCC based cards with the generic SCC driver and both the Parallel and Serial port Baycom modems. Thomas's new soundmodem driver supports Soundblaster and soundcards based on the Crystal chipset.
The User programs contain a simple PMS (Personal Message System), a beacon facility, a line mode connect program, `listen' an example of how to capture all AX.25 frames at raw interface level and programs to configure the NetRom protocol. Included also are an AX.25 server style program to handle and despatch incoming AX.25 connections and a NetRom daemon which does most of the hard work for NetRom support.
The Linux AX.25 implementation is a brand new implementation. While in many ways it may looks similar to NOS, or BPQ or other AX.25 implementations, it is none of these and is not identical to any of them. The Linux AX.25 implementation is capable of being configured to behave almost identically to other implementations, but the configuration process is very different.
To assist you in understanding how you need to think when configuring this section describes some of the structural features of the AX.25 implementation and how it fits into the context of the overall Linux structure.
Simplified Protocol Layering Diagram
-----------------------------------------------
| AF_AX25 | AF_NETROM | AF_INET | AF_ROSE |
|=========|===========|=============|=========|
| | | | |
| | | TCP/IP | |
| | ---------- | |
| | NetRom | | Rose |
| -------------------------------------
| AX.25 |
-----------------------------------------------
This diagram simply illustrates that NetRom, Rose and TCP/IP all run directly
on top of AX.25, but that each of these protocols is treated as a seperate
protocol at the programming interface. The `AF_
' names are
simply the names given to the `Address Family' of each of these
protocols when writing programs to use them. The important thing to note here
is the implicit dependence on the configuration of your AX.25 devices before
you can configure your NetRom, Rose or TCP/IP devices.
Software module diagram of Linux Network Implementation
---------------------------------------------------------------------------- User | Programs | call node || Daemons | ax25d mheardd | | pms mheard || | inetd netromd ---------------------------------------------------------------------------- | Sockets | open(), close(), listen(), read(), write(), connect() | |------------------------------------------------------ | | AF_AX25 | AF_NETROM | AF_ROSE | AF_INET |------------------------------------------------------------------ Kernel | Protocols | AX.25 | NetRom | Rose | IP/TCP/UDP |------------------------------------------------------------------ | Devices | ax0,ax1 | nr0,nr1 | rose0,rose1 | eth0,ppp0 |------------------------------------------------------------------ | Drivers | Kiss PI2 PacketTwin SCC BPQ | slip ppp | | Soundmodem Baycom | ethernet ---------------------------------------------------------------------------- Hardware | PI2 Card, PacketTwin Card, SCC card, Serial port, Ethernet Card ----------------------------------------------------------------------------This diagram is a little more general than the first. This diagram attempts to show the relationship between user applications, the kernel and the hardware. It also shows the relationship between the Socket application programming interface, the actual protocol modules, the kernel networking devices and the device drivers. Anything in this diagram is dependent on anything underneath it, and in general you must configure from the bottom of the diagram upwards. So for example, if you want to run the call program you must also configure the Hardware, then ensure that the kernel has the appropriate device driver, that you create the appropriate network device, that the kernel includes the desired protocol that presents a programming interface that the call program can use. I have attempted to lay out this document in roughly that order.