Linux AX.25-HOWTO, Amateur Radio.

Terry Dawson, VK2KTJ, terry@perf.no.itg.telstra.com.au, traduit par François Romieu, romieu@ensta.fr

v1.5, 17 Octobre 1997
Le système d'exploitation Linux est sûrement le seul au monde à pouvoir se vanter d'offrir un support natif du protocole de transmission de données AX.25 employé par les radioamateurs à travers le monde. Le présent document se veut un guide d'installation et de configuration de cette prise en charge.

1. Introduction.

Le document trouve son origine dans une annexe du HAM-HOWTO. L'importance de son développement devint cependant incompatible avec une telle organisation. L'installation et la prise en charge intégrée d'AX.25, la gestion NetRom et Rose sous Linux sont décrites. Quelques exemples de configurations typiques fournissent une base de travail.

La mise en oeuvre des protocoles radioamateurs sous Linux est très souple. Les personnes peu familières du système d'exploitation Linux trouveront peut-être la configuration un peu obscure. Il vous faudra un certain temps pour maîtriser l'interaction des différents éléments. Attendez-vous à une configuration pénible si vous ne vous êtes pas auparavant familiarisé avec Linux. N'espérez pas passer à Linux depuis un autre environnement en faisant l'économie de tout apprentissage.

1.1 Modifications par rapport à la version précédente

Ajouts:
        Page ouaibe de Joerg Reuters
        Section "Informations supplémentaires"
        configuration d'ax25ipd.

Corrections/Mises à jour:
        Prévention des conflits dus aux pty
        Nouvelles versions du module et des ax25-utils

A faire:
        Mettre au point la section SCC qui est sûrement erronée
        Étoffer la section touchant à la programmation

1.2 Nouvelles versions du document

Les archives du Projet de Documentation Linux (LDP ou Linux Documentation Project) constituent le meilleur emplacement où trouver la dernière mouture de ce texte. Le LDP tient à jour un site ouaibe dans lequel figure l'AX.25 HOWTO : AX.25-HOWTO. Le texte est disponible sous différents formats à l'adresse suivante : archive ftp sunsite.unc.edu. La version française est accessible via : archive Traduc.org.

Vous pouvez me contacter mais comme je transmets directement les nouvelles versions au coordinateur LDP des HOWTO, l'absence d'une nouvelle version indique sûrement que je ne l'ai pas terminée.

1.3 Autres documents

La documentation sur les sujets apparentés ne manque pas. Bon nombre de textes traitent de l'utilisation générale de Linux en réseau et je vous conseille vivement de les lire : ils vous guideront dans vos efforts et offrent une vision élargie à d'autres configurations envisageables.

Par exemple :

HAM-HOWTO,

NET-3-HOWTO,

Ethernet-HOWTO,

et :

le Firewall-HOWTO

Des informations plus générales sur Linux sont disponibles : Linux HOWTO

2. Les protocoles de paquets par radio et Linux

Le protocole AX.25 fonctionne aussi bien en mode connecté que non-connecté et s'emploie tel quel pour des liaisons point-à-point ou pour encapsuler d'autres protocoles tels qu'IP ou NetRom.

Sa structure se rapproche de celle du niveau 2 d'X25 avec des extensions qui l'adaptent à l'environnement radioamateur.

Le protocole NetRom a pour objectif de fournir un protocole réseau complet. Il repose sur AX.25 au niveau liaison de données et procure une couche réseau dérivée d'AX.25. Le protocole NetRom autorise le routage dynamique et la création d'alias pour les noeuds.

Le protocole Rose a été initialement conçu et réalisé par Tom Moulton alias W2VY. Il constitue une mise en oeuvre du protocole par paquets X25 et peut inter-opérer avec AX.25 au niveau liaison. Il fournit des services de couche réseau. Les adresses Roses comportent 10 digits. Les quatre premiers constituent le code d'identification du réseau de données (DNIC ou Data Network Identification Code) et sont référencés dans l'Appendice B de la recommandation X121 du CCITT. Des informations supplémentaires sur le protocole Rose sont disponibles sur le site suivant : Serveur Web RATS.

Alan Cox a créé les toutes premières versions de support noyau pour AX.25. Jonathon Naylor <g4klx@g4klx.demon.co.uk> a poursuivi le développement, ajouté la gestion de NetRom et de Rose et assure à présent officiellement la maintenance du code noyau relatif à AX.25. La prise en compte de DAMA est l'oeuvre de Joerg, DL1BKE, jreuter@poboxes.com. Thomas Sailer, <sailer@ife.ee.ethz.ch> s'est chargé des matériels Baycom et SoundModem. J'assure pour ma part le suivi des utilitaires AX.25.

Linux gère les TNC (Terminal Node Controllers) KISS, les cartes Ottawa PI, les PacketTwin Gracilis et autres cartes à base de SCC Z8530 via le pilote SCC générique ainsi que les modems sur ports série et parallèle de Baycom. Le nouveau pilote pour modems à base de carte son de Thomas accepte les Soundblaster et les cartes à base de composants Crystal.

Le paquetage de programmes applicatifs comprend une messagerie individuelle (PMS ou Personal Message System), une balise, un programme de connexion en mode texte, un exemple de récupération des trames AX.25 au niveau de l'interface et des utilitaires de configuration du protocole NetRom. Il comprend également un serveur de type AX.25 qui gère les demandes de connexions AX.25 et un démon qui se charge de l'essentiel du travail pour le protocole NetRom.

2.1 Fonctionnement

La mise en oeuvre d'AX.25 sous Linux lui est propre de A à Z. Bien qu'elle puisse ressembler à NOS, à BPQ ou à d'autres versions d'AX.25 sur certains points, elle ne se confond avec aucune d'entre elles. La version Linux peut être configurée pour se comporter de façon voisine aux autres mais le processus n'en reste pas moins radicalement différent.

Pour vous aider à comprendre la démarche intellectuelle à suivre lors de la configuration, cette section décrit les fonctionnalités structurelles d'AX.25 et son adaptation au contexte Linux.

Diagramme simplifié des couches protocolaires

+----------+-----------+-------------+---------+
| AF_AX.25 | AF_NETROM |   AF_INET   | AF_ROSE |
+==========+===========+=============+=========+
|          |           |             |         |
|          |           |    TCP/IP   |         |
|          |           +--------+    |         |
|          |  NetRom            |    | Rose    |
|          +--------------------+----+---------+
|            AX.25                             |
+----------------------------------------------+

Le diagramme précédent illustre simplement le fait que Rose, NetRom, AX.25 et TCP/IP reposent tous sur AX.25 mais que chacun est traité comme un protocole différent au niveau de l'interface de programmation. Les noms `AF_' correspondent aux noms donnés aux `Familles d'Adresses' de chacun du point de vue du programmeur. On notera ici l'obligation de configurer la pile AX.25 avant toute configuration des protocoles NetRom, Rose ou TCP/IP.

Diagramme des modules logiciels de la pile réseau de Linux

---------------+-----------+-----------------------++----------+---------------
  Utilisateur  |Programmes |   call        node    ||  Démons  | ax25d  mheardd
               |           |   pms         mheard  ||          | inetd  netromd
---------------+-----------+-----------------------++----------+---------------
               |Sockets    | open(), close(), listen(), read(), write(), connect()
               |           +----------------------+-------------------+----------
               |           |    AF_AX.25   |  AF_NETROM |   AF_ROSE   |  AF_INET
               +-----------+--------------+-------+-----+-------------+----------
Noyau          |Protocoles |    AX.25     |   NetRom    |     Rose    | IP/TCP/UDP
               +-----------+--------------+-------------+-------------+----------
               |Périph.    |    ax0,ax1   |  nr0,nr1    | rose0,rose1 | eth0,ppp0
               +-----------+--------------+-------------+-------------+----------
               |Pilotes    |  Kiss   PI2   PacketTwin   SCC   BPQ     | slip ppp
               |           |    modems type son   Baycom              | ethernet
---------------+-----------+------------------------------------------+-----
Matériel | Cartes PI2, PacketTwin, SCC, Série, Ethernet
----------------------------------------------------------------------------
Ce diagramme est plus général que le précédent. Il montre les relations entre les applications, le noyau et le matériel ainsi qu'entre l'interface de programmation des sockets, les modules de protocoles, les périphériques réseau et leurs pilotes. Chaque niveau dépend de celui sur lequel il repose et, de façon générale, la configuration doit se faire de bas en haut. Par exemple, si vous souhaitez exécuter le programme call, vous devez configurer le matériel, vérifier que le pilote adéquat est inclus dans le noyau, créer les périphériques noyaux correspondants et inclure le protocole requis par le programme call. J'ai essayé d'organiser le présent document de cette façon.

3. Composants logiciels de la suite AX.25/NetRom/Rose

Le paquetage AX.25 comprend trois volets : les sources du noyau, les outils de configuration réseau et les applications utilisateur.

Les version 2.0.xx des noyaux Linux incluent les gestionnaires AX.25, NetRom, SCC Z8530, PacketTwin et ceux des cartes PI. Les noyaux 2.1.* les améliorent substantiellement. L'emploi d'un noyau 2.1.* dans un système de production est vivement déconseillé. Pour y remédier, Jonathon Naylor propose un ensemble de patches pour mettre à niveau la gestion du protocole radio amateur dans un noyau 2.0.28. L'application des patches est très simple et apporte une palette de fonctionnalités autrement absentes du noyau tel le support Rose. L'emploi d'un noyau 2.2.x est également envisageable.

3.1 Récupération du noyau, des outils et utilitaires

Sources du noyau

Les sources du noyau sont disponibles via le réseau de miroirs de ftp.kernel.org : ftp.xx.kernel.org où xx désigne un code pays tel fr, uk, de, us, etc... Les différentes version du noyau se trouvent en :

/pub/linux/kernel/
Version courante de mise à jour d'AX.25 : ftp.pspt.fi
/pub/linux/ham/ax25/ax25-module-14e.tar.gz

Les outils réseau

Dernière version alpha des outils réseau standard pour Linux gérant AX.25 et NetRom : ftp.inka.de

/pub/comp/Linux/networking/net-tools/net-tools-1.33.tar.gz

Paquetage ipfwadm : ftp.xos.nl

/pub/linux/ipfwadm/
En 2.2.x, le paquetage ipchains remplace ipfwadm devenu obsolète.

Les utilitaires AX.25

Il existe deux familles distinctes d'outils AX.25. L'une dédiée aux noyaux 2.0.* et l'autre destinée aussi bien aux version 2.1.* qu'aux noyaux 2.0.* patchés. Le numéro de version de ax25-utils indique la version du noyau la plus ancienne à partir de laquelle les outils fonctionneront. A vous de choisir une version des ax25-utils appropriée. Les combinaisons suivantes fonctionnent, utilisez les .

Noyau Linux              Utilitaires AX.25
----------------------   -------------------------
linux-2.0.29             ax25-utils-2.0.12c.tar.gz **
linux-2.0.28+module12    ax25-utils-2.1.22b.tar.gz **
linux-2.0.30+module14c   ax25-utils-2.1.42a.tar.gz
linux-2.0.31+module14d   ax25-utils-2.1.42a.tar.gz
linux-2.1.22 ++          ax25-utils-2.1.22b.tar.gz
linux-2.1.42 ++          ax25-utils-2.1.42a.tar.gz

Note: les versions ax25-utils-2.0.* identifiées ci-dessus avec le symbole '**' sont à présent obsolètes. Le document couvre l'emploi des logiciels conseillés dans les tables. Bien que les paquetages diffèrent, la plus grande partie des informations reste valable pour les versions suivantes.

Utilitaires AX.25 : ftp.pspt.fi ou : sunsite.unc.edu

4. Installation des logiciels AX.25/NetRom/Rose

Une mise en oeuvre correcte d'AX.25 dans votre système Linux nécessite l'installation et la configuration d'un noyau approprié ainsi que des utilitaires AX.25.

4.1 Compilation du noyau

Si vous êtes un habitué de la compilation du noyau Linux, contentez-vous de vérifier que vous avez activé les options adéquates et sautez cette section. Si ce n'est pas le cas, lisez ce qui suit.

En principe, les sources du noyau sont décompactées au niveau du répertoire /usr/src dans un sous-répertoire nommé linux. Pour ce faire, prenez l'identité du super-utilisateur root et exécutez les commandes ci-dessous :

# mv linux linux.old
# cd /usr/src
# tar xvfz linux-2.0.31.tar.gz
# tar xvfz /pub/net/ax25/ax25-module-14e.tar.gz 
# patch -p0 </usr/src/ax25-module-14/ax25-2.0.31-2.1.47-2.diff
# cd linux

Une fois les sources du noyau décompactées et la mise à jour appliquée, lancez le script de configuration et activez les options qui correspondent à la configuration matérielle dont vous souhaitez disposer. Vous utiliserez la commande :

# make menuconfig
Si vous êtes bête^H^H^H^Hcourageux, vous pouvez essayer
# make config
Les claviophobes se serviront de :
# make xconfig

Je vais décrire la méthode plein-écran (menuconfig) dont j'apprécie la facilité de déplacement mais vous êtes libre d'en utiliser une autre.

Dans tous les cas, vous devrez choisir parmi une série d'options auxquelles il faudra répondre par `Y' ou `N' (voire `M' si vous avez recours aux modules, ce sur quoi je fais l'impasse pour simplifier).

Options importantes pour la configuration d'AX.25 :

Code maturity level options  --->
    ...
    [*] Prompt for development and/or incomplete code/drivers
    ...
General setup  --->
    ...
    [*] Networking support
    ...
Networking options  --->
    ...
    [*] TCP/IP networking
    [?] IP: forwarding/gatewaying
    ...
    [?] IP: tunneling
    ...
    [?] IP: Allow large windows (not recommended if <16Mb of memory)
    ...
    [*] Amateur Radio AX.25 Level 2
    [?] Amateur Radio NET/ROM
    [?] Amateur Radio X.25 PLP (Rose)
    ...
Network device support  --->
    [*] Network device support
    ...
    [*] Radio network interfaces
    [?] BAYCOM ser12 and par96 driver for AX.25
    [?] Soundcard modem driver for AX.25
    [?] Soundmodem support for Soundblaster and compatible cards
    [?] Soundmodem support for WSS and Crystal cards
    [?] Soundmodem support for 1200 baud AFSK modulation
    [?] Soundmodem support for 4800 baud HAPN-1 modulation
    [?] Soundmodem support for 9600 baud FSK G3RUH modulation
    [?] Serial port KISS driver for AX.25
    [?] BPQ Ethernet driver for AX.25
    [?] Gracilis PackeTwin support for AX.25
    [?] Ottawa PI and PI/2 support for AX.25
    [?] Z8530 SCC KISS emulation driver for AX.25
    ...
Vous devez répondre `Y' aux options marquées d'un *'. Le reste dépend de votre configuration matérielle et d'options laissées à votre choix. Certaines de ces options sont décrites un peu plus loin. Si vous ne voyez pas ce dont il retourne, continuez la lecture et revenez à cette section ultérieurement.

Une fois la configuration du noyau achevée, vous devriez pouvoir compiler proprement un nouveau noyau :

# make dep
# make clean
# make zImage

Déplacez ensuite le fichier arch/i386/boot/zImage et éditez le fichier /etc/lilo.conf en conséquence avant de relancer lilo pour être sûr que vous démarrerez bien sur le bon noyau.

Un mot sur les modules

Je vous recommande de ne pas compiler quelque pilote que ce soit en tant que module. Dans presque toutes les installations, vous n'y gagnez rien sinon une complexité accrue. De nombreuses personnes ont des problèmes avec les modules, non par la faute du code, mais parce que les modules sont plus compliqués à installer et à configurer. [NdT:manifestement nous ne faisons pas le même arbitrage complexité/souplesse]

Si vous avez choisi de compiler certains composants en tant que modules, vous devrez également utiliser :

# make modules
# make modules_install
afin d'installer vos modules à l'emplacement adéquat.

Certains ajouts au fichier /etc/conf.modules sont nécessaires afin que kerneld sache gérer l'interface d'accès aux fonctions modularisées. Les entrées suivantes doivent être présentes :

alias net-pf-3     ax25
alias net-pf-6     netrom
alias net-pf-11    rose
alias tty-ldisc-1  slip
alias tty-ldisc-3  ppp
alias tty-ldisc-5  mkiss
alias bc0          baycom
alias nr0          netrom
alias pi0a         pi2
alias pt0a         pt
alias scc0         optoscc    (or one of the other scc drivers)
alias sm0          soundmodem
alias tunl0        newtunnel
alias char-major-4 serial
alias char-major-5 serial
alias char-major-6 lp
# modprobe -c
vous renverra la configuration courante.

Qu'y a-t-il de nouveau dans les noyaux 2.0.x patchés et les 2.1.y ?

Les noyaux 2.1.* présentent des améliorations au niveau de quasiment tous les pilotes et protocoles. Citons les plus significatives :

Modularisation

tous les protocoles et gestionnaires ont été modularisés de façon à être gérés via insmod et rmmod. La mémoire demandée par le noyau diminue dans le cas de modules employés par intermittence. Le développement et la mise au point des gestionnaires devient également plus facile. Cela étant, la configuration devient légèrement plus compliquée.

Uniformisation des pilotes

l'accès aux périphériques tels les Baycom, SCC, PI, PacketTwin et autres a maintenant lieu via une interface réseau usuelle semblable à celle du gestionnaire ethernet. Ils n'apparaissent désormais plus comme des TNC KISS. L'utilitaire net2kiss permet de créer une interface KISS pour ces périphériques si on le souhaite.

bugs

il y a eu de nombreuses corrections et des fonctionnalités ont été ajoutées tel le protocole Rose.

4.2 Les outils de configuration du réseau

A présent que le noyau est compilé, vous devez faire de même avec les nouveaux outils de configuration du réseau. Ces outils permettent de modifier la configuration des périphériques réseau et des tables de routage.

Le nouveau paquetage alpha des net-tools standard gère AX.25 et NetRom. Je l'ai essayé et il semble fonctionner correctement chez moi.

Patch correctif incluant la gestion Rose

Le paquetage standard net-tools-1.33.tar.gz comporte certains bugs qui affectent AX.25 et NetRom. J'ai produit un correctif qui supporte aussi Rose.

Le patch est disponible à l'adresse suivante : zone.pspt.fi.

Compilation des net-tools standard

Lisez le fichier Release et suivez les indications qui y sont données. Je suis passé par les étapes ci-dessous :

# cd /usr/src
# tar xvfz net-tools-1.33.tar.gz
# zcat net-tools-1.33.rose.tjd.diff.gz | patch -p0
# cd net-tools-1.33
# make config

Arrivés à ce point, vous devrez répondre à une série de questions de configuration d'une façon similaire à ce qui se fait pour le noyau. N'oubliez pas d'inclure tous les protocoles et gestionnaires de périphériques dont vous souhaitez vous servir ultérieurement. Dans le doute, répondez par l'affirmative (``Y'').

Une fois la compilation effectuée :

# make install
installera les programmes à leur place définitive.

Pour disposer des fonctionnalités de type pare-feu IP (firewall), vous aurez besoin des derniers outils d'administration ipfwadm. Ils remplacent ipfw qui ne fonctionne à présent plus.

Pour la compilation d'ipfwadm :

# cd /usr/src
# tar xvfz ipfwadm-2.0beta2.tar.gz
# cd ipfwadm-2.0beta2
# make install
# cp ipfwadm.8 /usr/man/man8
# cp ipfw.4 /usr/man/man4

4.3 Utilitaires et applications AX.25

Une fois les étapes de compilation et de redémarrage du noyau menées à leur terme avec succès, il vous reste à compiler les applications AX.25. Les commandes devraient ressembler à ce qui suit :

# cd /usr/src
# tax xvfz ax25-utils-2.1.42a.tar.gz
# cd ax25-utils-2.1.42a
# make config
# make
# make install

Les fichiers sont installés par défaut dans les sous-répertoires bin, sbin, etc et man du répertoire /usr.

S'il s'agit de la première installation des utilitaires AX.25 sur votre système, vous devrez installer quelques fichiers de configuration type dans le répertoire /etc/ax25/ via :

# make installconf

En cas de messages du type :

gcc -Wall -Wstrict-prototypes -O2 -I../lib -c call.c
call.c: In function `statline':
call.c:268: warning: implicit declaration of function `attron'
call.c:268: `A_REVERSE' undeclared (first use this function)
call.c:268: (Each undeclared identifier is reported only once
call.c:268: for each function it appears in.)
vérifiez encore une fois que les ncurses sont correctement installées. Le script de configuration tente de localiser les ncurses à certains emplacements usuels mais sur des installations faisant n'importe quoi avec les ncurses, le script échoue à cette étape.

5. Numéros d'identification, adresses et préliminaires divers

Chaque port AX.25 et NetRom sur votre système doit se voir allouer un numéro d'identification (callsign/ssid). Il se configure dans les fichiers dont il va être à présent question.

Certaines mises en oeuvre d'AX.25 telles NOS et BPQ permettent l'emploi d'un ssid commun sur un même port AX.25 et NetRom. Pour des raisons techniques assez compliquées, Linux l'interdit. En pratique, ça ne s'avère pas un problème aussi important qu'on pourrait le croire.

Cela signifie que vous devez garder présents à l'esprit certains éléments lorsque vous configurez votre système.

  1. Chaque port AX.25 et NetRom doit disposer d'un ssid unique.
  2. TCP/IP utilise le ssid du port AX.25 par lequel il émet ou reçoit (celui dont il est question juste au-dessus).
  3. NetRom emploie le ssid spécifié dans son fichier de configuration mais seulement lorsqu'il dialogue avec un autre NetRom. Il ne s'agit pas du ssid que les clients AX.25 de votre noeud NetRom vont employer. Davantage de détails sur ce point tout à l'heure.
  4. Rose utilise par défaut le ssid du port AX.25 à moins qu'on ne lui en spécifie explicitement un autre grâce à la commande `rsparms' qui forcera le même ssid sur tous les ports.
  5. Les autres programmes tels `ax25d' écoutent via un ssid quelconque qui n'est soumis à aucune contrainte d'unicité entre ports différents.
  6. Si le routage est fait avec attention, vous pouvez affecter la même adresse IP à tous les ports.

5.1 Que sont les T1, T2, N2 ?

Toutes les piles AX.25 ne sont pas de type TNC2. La nomenclature Linux diffère sur certains points de celle du monde des TNC. Le tableau ci-dessous vous aidera à établir les correspondances entre les différents concepts.

-------+----------+------------------------------------------------
Linux  | TAPR TNC | Description
-------+----------+------------------------------------------------
T1     | FRACK    | Temps d'attente avant retransmission d'une
       |          | trame privée d'accusé de réception.
-------+----------+------------------------------------------------
T2     | RESPTIME | Temps minimum d'attente entre trames avant 
       |          | émission d'un acquittement.
-------+----------+------------------------------------------------
T3     | CHECK    | Périodicité d'émission d'un paquet de
       |          | vérification de l'état de la connexion.
-------+----------+------------------------------------------------
N2     | RETRY    | Nombre de tentatives de retransmission avant
       |          | de signaler un échec.
-------+----------+------------------------------------------------
Idle   |          | Durée d'inactivité d'une connexion avant sa 
       |          | fermeture.
-------+----------+------------------------------------------------
Window | MAXFRAME | Nombre maximal de trames transmises sans
       |          | acquittement.
-------+----------+------------------------------------------------

5.2 Paramètres configurables dynamiquement

Les noyaux 2.1.* et 2.0.* +moduleXX permettent la modification à la volée de paramètres auparavant statiques. Un examen attentif de la structure du répertoire /proc/sys/net/ révèle de nombreux fichiers dont les noms correspondent à ceux de paramètres réseau. Les fichiers dans le répertoire /proc/sys/net/ax25/ représentent chacun un port AX.25 configuré. Le nom du fichier reflète celui du port. La structure des fichiers dans /proc/sys/net/ax25/

Heberge par Ikoula