Guide pratique de la gestion d'ATM sous Linux

Version française du ATM on Linux HOWTO

Paul B Schroeder

IBM Corporation

François Romieu - Traduction française

Frédéric Delanoy - Relecture de la version française

Version 2.4.0.fr.1.0

2003-03-11

Ce document décrit l'installation et la configuration des pilotes et outils nécessaires au fonctionnement d'ATM sous Linux.

Pour les dernières informations, reportez-vous à la page d'accueil de ATM sous Linux.

La prise en charge d'ATM par Linux est encore au stade pré-alpha. La version actuelle gère les connexions ATM brutes au niveau PVC et SVC, IP sur ATM, l'émulation LAN, MPOA, Arequipa et d'autres choses.

Historique des versions
Version 2.4.0.fr.1.0 11/03/2003 Revu par : FRom, FDel
Traduction de la version 2.4.0 de « ATM-Linux-HOWTO ».
Version 2.4.0 18/10/2001 Revu par : PBS
Converti de LaTeX en DocBook avec quelques ajouts et changements supplémentaires. (Converted from LaTeX to DocBook along with some other additions and changes.)

Table des matières
1. Introduction
1.1. Origine et remerciements
1.2. Droits d'utilisation
1.3. Copyright
1.4. Liste de diffusion
1.5. Accès CVS
2. Installation
2.1. Les binaires RPM
2.2. L'arborescence des sources
2.3. Configuration du noyau
2.4. Messages des gestionnaires de périphériques
2.5. Débogage mémoire
2.6. Utilitaires ATM
2.7. Paquets supplémentaires
3. Configuration des périphériques
3.1. ATM au-dessus de TCP
3.2. ZN1221 / ZN1225
3.3. Fichiers du répertoire /proc/net/atm/
3.4. Diagnostic ATM
3.5. Diagnostic SONET
4. Circuits virtuels permanents ATM natifs (PVC)
4.1. Outils de génération de trafic
4.2. Accès direct aux cellules
5. Signalisation
5.1. Fichier des hôtes ATM
5.2. ANS
5.3. Démon de signalisation
5.4. Démon ILMI
5.5. Configuration manuelle d'adresse
5.6. Emploi de deux adaptateurs ATM directement connectés
5.7. Analyseur-producteur de messages Q.2931
6. IP au-dessus d'ATM
6.1. CLIP
6.2. Émulation de LAN
6.3. MPOA
Bibliographie

1. Introduction

1.1. Origine et remerciements

Ce guide s'inspire largement du document Usage Instructions qui a été inclus dans le paquet ATM on Linux jusqu'à la version 0.79. Werner Almesberger l'a rédigé pendant son séjour au Institute for computer Communications and Applications (ICA).

Richard Jones est à l'origine de la partie Emploi de deux adaptateurs ATM directement connectés.


1.2. Droits d'utilisation

Note

Le texte ci-dessous est la version française de la licence de ce document. Seule la version originale de cette licence, présentée dans la section suivante, fait foi.

La version originale de ce document a été réalisé par la société IBM Corporation en 2001.

Vous avez le droit de copier, distribuer et modifier la version originale de ce document selon les termes de la licence de documentation libre GNU (GFDL) version 1.1 ou ultérieures, telle que publiée par la Free Software Foundation ; sans section invariante, sans texte de première de couverture ni texte de quatrième de couverture. Une copie de la licence est disponible sur http://www.gnu.org/copyleft/fdl.html.

Une partie importante de ce document provient du guide Usage Instructions, inclus dans le paquet ATM on Linux jusqu'à la version 0.79, qui a été disponible sous les licences BSD, GNU General Public License (GPL) et GNU Lesser General Public License (LGPL).

La version française de document a été réalisée par François Romieu et Frédéric Delanoy. La version française de ce guide pratique est publiée en accord avec les termes de la licence de documentation libre GNU (GFDL) ; sans section invariante, sans texte de première de couverture ni texte de quatrième de couverture. Une copie de la licence est disponible sur http://www.gnu.org/copyleft/fdl.html. Une version française non officielle de cette licence est disponible sur http://cesarx.free.fr/gfdlf.html.


1.3. Copyright

Note

Le texte ci-dessous est la licence de ce document. Ce texte fait foi. Il est composé de la licence en anglais du document orignal, suivi de la licence en français de sa traduction.

Copyright 2001 IBM Corporation.

Permission is granted to copy, distribute and/or modify this document under the terms of the 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.

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).

La version française de document a été réalisée par François Romieu et Frédéric Delanoy. La version française de ce guide pratique est publiée en accord avec les termes de la licence de documentation libre GNU (GFDL) ; sans section invariante, sans texte de première de couverture ni texte de quatrième de couverture. Une copie de la licence est disponible sur http://www.gnu.org/copyleft/fdl.html.


1.4. Liste de diffusion

Il existe une liste de diffusion pour discuter d'ATM sous Linux. Pour faire part de remarques, poser des questions ou vous impliquer, n'hésitez pas à rejoindre cette liste. Vous pouvez vous y abonner (subscribe) et vous en désabonner (unsubscribe) à l'adresse http://lists.sourceforge.net/lists/listinfo/linux-atm-general.

La liste de diffusion est archivée sur http://www.geocrawler.com/lists/3/SourceForge/6487/0/.


1.5. Accès CVS

Il est conseillé aux utilisateurs d'employer les publications stables plutôt que de récupérer la dernière version depuis le référentiel CVS. Voici néanmoins la marche à suivre pour les amateurs de sensations fortes.

Commencez par vous connecter de façon anonyme :

% cvs -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm login

Appuyez sur Entrée à l'invite du mot de passe. Récupérez ensuite l'arborescence :

% cvs -z6 -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm co -P linux-atm

Il est possible de spécifier une branche particulière :

% cvs -z6 -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm co -r V2_5_0 linux-atm

Dans tous les cas, un répertoire « linux-atm » contenant la dernière version des sources est créé. Une fois à l'intérieur de ce répertoire, l'option « -d » de CVS n'est plus nécessaire. Par exemple, tapez :

% cvs -z6 up -d

pour obtenir les modifications apportées au référentiel (l'option « -d » de l'exemple se rapporte à la sous-commande « up » et n'a rien à voir avec le paramètre « -d » employé pour spécifier l'emplacement de la racine CVS).

Après avoir récupéré l'arborescence, exécutez le script autotools dans le répertoire de plus haut niveau avant d'entamer la configuration, la compilation et l'installation.

# ./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'...

Pour construire un paquet .tar.gz ou un RPM, exécutez respectivement make dist ou make rpm. Le fichier .tar.gz se trouvera dans le répertoire de plus haut niveau de l'arborescence tandis que le RPM sera placé dans le répertoire src/extra/RPMS.

Une interface web permet de visualiser le contenu du référentiel CVS : http://cvs.linux-atm.sourceforge.net/cgi-bin/viewcvs.cgi/linux-atm/linux-atm/.

Enfin, si vous souhaitez recevoir un courrier électronique pour chaque modification apportée au référentiel, abonnez-vous à la liste de diffusion « linux-atm-commits » : http://lists.sourceforge.net/lists/listinfo/linux-atm-commits.

Cette liste de diffusion est en lecture seule et aucune discussion ni question n'y est autorisée (idem pour les patches). Les discussions ont lieu sur la liste de diffusion linux-atm-general.


2. Installation

Pour installer le paquet, il vous faut :




2.1. Les binaires RPM

Si vous ne souhaitez pas extraire et compiler les sources vous-même, les utilitaires ATM existent également sous forme de paquet RPM installable comme suit :

rpm -ivh linux-atm-x.x.x-x.rpm

2.2. L'arborescence des sources

Commencez par décompacter le paquet ATM pour Linux :

tar xzvf linux-atm-x.x.x.tar.gz

Ceci crée une arborescence de racine linux-atm-x.x.x/. On notera les répertoires suivants :

doc/

documentation au format SGML DocBook (ce HOWTO compris)

src/sigd/

démon de signalisation UNI 3.0, UNI 3.1 et UNI 4.0 atmsigd

src/saal/

bibliothèque de signalisation AAL (SSCOP, SSCF et SAAL)

src/qgen/

gestion des messages de type Q.2931

src/ilmid/

démon d'enregistrement d'adresses ILMI : ilmid

src/maint/

utilitaires de maintenance ATM : atmaddr, atmdiag, atmdump, atmloop, atmtcp, enitune, esi, sonetdiag, saaldump et zntune

src/test/

programmes de test : align, aping, aread, awrite, br, bw, isp, ttcp_atm, window

src/arpd/

outils et démon ATMARP : atmarp, atmarpd

src/led/

démon LAN Emulation : zeppelin

src/lane/

serveurs LAN Emulation : bus, lecs, les

src/mpoad/

démon MPOA (Multi-Protocol Over ATM) : mpcd

src/debug/

outils d'examen : delay, ed, encopy, endump, svctor, zndump et znth

src/lib/

bibliothèques pour démons et applications

src/man/

pages de manuel diverses

src/extra/

outils supplémentaires et fichiers de directives RPM.

src/config/

fichiers de configuration et exemples de fichiers de type rc

src/switch/

unité de commutation (en cours de développement)


2.3. Configuration du noyau

Avertissement

Si vous n'avez pas l'habitude de compiler et d'installer un nouveau noyau, reportez-vous au guide pratique du noyau Linux (Linux Kernel HOWTO).

Après avoir décompacté le paquet du noyau, exécutez la commande habituelle au sommet de l'arborescence des sources du noyau : make config, make menuconfig ou make xconfig. Activez ensuite :

Prompt for development and/or incomplete code/drivers
  (CONFIG_EXPERIMENTAL)

Les options suivantes doivent apparaitre :

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)

Les paramètres « burst » du gestionnaire ENI sont ajustables. Les modifier peut s'avérer nécessaire si le positionnement par défaut provoque des épuisements de tampons mémoire lors des transferts PCI. On se reportera à la documentation en ligne relative à « CONFIG_ATM_ENI_TUNE_BURST » pour une explication détaillée de l'impact de ce paramètre.

Le fichier drivers/atm/nicstar.h contient les variables sur lesquelles on peut jouer pour le pilote IDT 77201.

Les gestionnaires peuvent être employés avec certaines cartes compatibles. La référence la plus à jour pour ces dernières se trouve sur la page d'information relative à ATM on Linux.

Recompilez ensuite le noyau et redémarrez.


2.4. Messages des gestionnaires de périphériques

Si vous avez activé le pilote ENI155p-MF, deux lignes semblables aux suivantes devraient apparaître (512kB pour la version -C, 2048kB pour la version -S) :

eni(itf 0): rev.0,base=0xff400000,irq=10,mem=512kB (00-20-EA-00-07-56)
eni(itf 0): FPGA,MMF

Si vous avez activé le pilote ZN1221 / ZN1225, il apparaît des messages du genre :

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

Notez qu'une carte de révision 3 ou plus est nécessaire pour une carte-mère équipée d'un jeu de composants Triton.

Si vous n'avez activé que le pilote ATM au-dessus de TCP, aucun message n'apparaît au démarrage parce que les périphériques correspondants ne sont créés qu'au moment de l'invocation de la commande atmtcp.


2.5. Débogage mémoire

Si on désire analyser d'éventuels problèmes relatifs aux allocations mémoire, il est nécessaire d'installer MPR avant de compiler les outils ATM.

Si vous récupérez un paquet RPM binaire, MPR s'installe comme suit :

rpm -ivh mpr-x.x-x.rpm

Si vous partez des sources, décompactez mpr-x.x.tar.gz ainsi :

tar xzvf mpr-x.x.tar.gz

Puis exécutez les commandes suivantes :

cd mpr-x.x
./configure x86-linux
make
make install

Une détection automatique de certains usages erronés des fonctions malloc et free aura alors lieu automatiquement si les utilitaires ont été compilés après installation de MPR. Le suivi des allocations est activé en positionnant MPRPC et MPRFI. Reportez-vous aux fichiers doc/mpr.html et doc/mpr.ps dans le paquet MPR pour davantage de détails.

Bien que le débogage des allocations n'implique qu'un léger surcoût à l'exécution, ces variables d'environnement ne sont pas positionnées par défaut.


2.6. Utilitaires ATM

Pour finir, configurez et compilez les outils ATM. La configuration n'est requise que si votre commutateur utilise UNI 3.1 ou 4.0 ou s'il présente certains dysfonctionnements. Les options de configuration sont activées par passage au script ./configure du paquet linux-atm.

Note

Exécutez ./configure --help à partir de la racine de l'arborescence linux-atm pour visualiser toutes les options disponibles.

Les commandes suivantes compilent les utilitaires ATM :

cd linux-atm-x.x.x
./configure
make
make install

Sauf spécification particulière lors de l'invocation de la commande ./configure, make install installera les exécutables dans les répertoires /usr/local/bin et /usr/local/sbin. À l'exception du fichier hosts.atm (qui est installé dans le répertoire /etc), les fichiers de configuration se situeront en /usr/local/etc. Les bibliothèques et les fichiers d'en-tête sont respectivement copiés dans /usr/local/lib et /usr/local/include. Les pages de manuel se retrouvent dans /usr/local/man.


2.7. Paquets supplémentaires

Certains programmes reposent sur des paquets de grande taille qui ne sont pas contrôlés par linux-atm. Pour d'autres, des patches sont fournis dans le paquet ATM-Linux. Ils se trouvent dans le répertoire src/extra de la distribution ATM-Linux.

Les paquets suivants sont disponibles :

tcpdump

capture de trafic réseau (amélioré pour ATM)

ANS

serveur de noms ATM (repose sur named 4.9.5)

Notez que text2atm emploie automatiquement ANS s'il est disponible, et que celui-ci ne doit dès lors être installé que sur les systèmes qui fournissent le service de résolution de noms ou lorsque des outils de maintenance au fait d'ATM sont requis (nslookup, …).

Le script hosts2ans.pl dans le répertoire src/extra/ANS/ convertit un fichier /etc/hosts.atm en un fichier de zone ANS. Son utilisation est décrite en tête de fichier.


3. Configuration des périphériques

Cette partie décrit des options de configuration propres à chaque type de périphériques ainsi que des méthodes de diagnostic ATM ou SONET générales. Reportez-vous à la documentation du périphérique pour les détails relatifs à son installation et aux méthodes de diagnostic.


3.1. ATM au-dessus de TCP

En l'absence de véritable matériel ATM, vous pouvez utiliser l'API par l'intermédiaire du gestionnaire ATM au-dessus de TCP. Il émule des périphériques ATM qui sont directement connectés les uns aux autres à distance (c.-à-d. sans manipulation de paires VPI/VCI).

Pour établir un lien (bidirectionnel) entre deux systèmes, devenez root sur chacun d'entre eux (ou exécutez les deux commandes sur le même système pour connecter deux interfaces) et exécutez la commande suivante sur l'un d'eux (que l'on désignera par « a ») :

# atmtcp virtual listen

Puis, sur l'autre système (« b ») :

# atmtcp virtual connect adresse_de_a

Les utilitaires atmtcp émettront des messages au fur et à mesure de leur avancement. Par exemple :

Link 0: virtual interface 2
Link 1: incoming ATMTCP connection from 127.0.0.1

et

Link 0: virtual interface 3
Link 1: ATMTCP connection to localhost

On notera que la commande atmtcp s'exécute en permanence et que l'interrompre brise le lien virtuel.

Une même machine peut accepter plusieurs liens en spécifiant des numéros de port différents (2812 par défaut). Aucun traitement AAL n'est effectué et il n'est par conséquent pas possible d'employer une couche d'adaptation différente (p.ex. AAL0) de celle utilisée à l'émission.


3.2. ZN1221 / ZN1225

Les cartes ZeitNet ZN1221 et ZN1225 emploient des réserves de mémoire allouées à l'avance pour la réception. Dés qu'un circuit virtuel d'une certaine SDU est activé en réception, la réserve correspondante est remplie de tampons vides par le gestionnaire. La carte consomme les tampons lors de la réception et, lorsque leur nombre passe en dessous d'une certaine limite, le gestionnaire alloue à nouveau la réserve.

Les limites inférieures et supérieures du nombre de tampons libres ainsi que la valeur limite pour l'adaptation à un nouveau décalage de données (voir ci-dessous) sont ajustables grâce au programme zntune. Emploi :

zntune [-l marque_basse] [-h marque_haute] [-t seuil] interface [réserve]

Les modifications sont appliquées à toutes les réserves si aucun indice de réserve n'est spécifié. La réserve 2 stocke les paquets de 64 octets, la réserve 3 les paquets de 128 octets, etc. Les réserves 0 et 1 ne sont pour l'instant pas utilisées.

La configuration courante ainsi que des statistiques d'utilisation peuvent être obtenues en invoquant la commande zntune sans paramètre supplémentaire :

zntune [-z] interface [réserve]

La colonne « Size » indique la taille de tampon mémoire en octets. La colonne « Ref » correspond au nombre de VC ouverts qui emploient cette réserve. La colonne « Alarm » indique combien de fois le nombre de tampons mémoire disponibles a franchi la limite basse depuis la dernière remise à zéro des compteurs. De même, la colonne « « Under » » fournit le nombre d'unités de données de protocole (PDU, Protocol Data Unit) jetées à cause d'un manque de mémoire.

Les colonnes « Offs », « NxOf », « Count » et « Thres » indiquent l'état d'alignement. « Offs » est le décalage des données utiles dans les PDU attendues. Dans le cas d'une copie simple, les tampons de réception sont alignés de telle sorte que les données soient reçues à partir de frontières de page. « NxOf » correspond au décalage des données utiles de la dernière PDU reçue pour laquelle le décalage diffère de celui attendu. « Count » indique le nombre de PDU reçues consécutivement avec un décalage de « NxOf ». Enfin, lorsque « Count » atteint « Thres », « NxOf » devient la nouvelle valeur de décalage.

L'option -z permet de remettre à zéro les compteurs « Alarm » et « Under ».


3.3. Fichiers du répertoire /proc/net/atm/

Des informations sur l'état du système ATM sont accessibles via les fichiers du répertoire /proc/net/atm/. /proc/net/atm/arp contient des informations propres à CLIP (Classical IP over ATM), cf. CLIP.

Les périphériques ATM actifs sont énumérés dans le fichier /proc/net/atm/devices. Chaque entrée comprend le numéro de l'interface, son type, l'identifiant ESI (End System Identifier) ainsi que des compteurs d'usage. Ces derniers correspondent à ceux fournis par l'utilitaire atmdiag.

Les périphériques ATM peuvent déclarer des enregistrements de la forme type:indice (par exemple eni:0).

Les fichiers /proc/net/atm/pvc et /proc/net/atm/svc énumèrent les sockets de type PVC et SVC. L'interface et la paire d'indices VPI, VCI est donnée pour chaque socket. Dans le cas des PVC, cette information est suivie du type d'AAL, de la classe de trafic et du PCR en réception et en émission. Pour les SVC, on trouve l'état du SVC et l'adresse du correspondant. Les SVC de numéro d'interface 999 sont destinés à des mesures de contrôle particulières comme indiqué dans la colonne « State ».

Enfin, le fichier /proc/net/atm/vc comprend les tailles de tampon mémoire et d'autres données internes pour les sockets ATM.


3.4. Diagnostic ATM

L'utilitaire atmdiag permet de récupérer divers compteurs d'usage des gestionnaires de périphériques ATM. Reportez-vous à la page de manuel associée pour davantage de détails.


3.5. Diagnostic SONET

L'outil de diagnostic SONET peut s'employer pour surveiller l'état du lien et pour simuler des erreurs. Pour obtenir les compteurs d'usage SONET, invoquez-le avec l'indice de l'interface ATM en argument. Par exemple :

% sonetdiag 0

L'option -z remet les compteurs à zéro :

# sonetdiag -z 0

Les erreurs suivantes peuvent être simulées[1]  :

sbip

insertion d'erreur de section (B1)

lbip

insertion d'erreur de ligne (B2)

pbip

insertion d'erreur de chemin (B3)

frame

perte de trame en réception (RX)

los

perte de signal

lais

insertion d'un signal d'alarme de ligne

pais

insertion d'un signal d'alarme de chemin

hcs

insertion d'erreurs de somme de contrôle de l'en-tête

Une erreur est activée par ajout du mot-clé correspondant à la ligne de commande. L'erreur est désactivée en préfixant le mot-clé par un signe négatif, par exemple :

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

Si des insertions d'erreurs sont demandées, leurs identifiants sont indiqués lorsque les compteurs sont relevés via sonetdiag. On notera que le matériel peut spontanément désactiver certaines insertions d'erreur.


4. Circuits virtuels permanents ATM natifs (PVC)

Les circuits permanents s'utilisent pour des machines directement connectées ou reliées à un commutateur. Dans le dernier cas, la transmission des cellules doit être activée manuellement au niveau du commutateur.


4.1. Outils de génération de trafic

aread/awrite et br/bw sont des programmes élementaires donnant accès à l'API ATM. awrite transmet la chaîne de texte donnée en deuxième argument via une PDU AAL5. aread reçoit une PDU AAL5 et l'affiche en hexadécimal. Ces deux programmes affichent également la valeur de retour des appels système correspondants ainsi que celle de errno.

bw transmet le contenu de son entrée standard ou un flux de données arbitraires (si on lui passe un nombre en quatrième argument). Les données transitent dans des PDU AAL5 de 8 Ko. br reçoit les PDU AAL5 et les affiche sur sa sortie standard.

Le premier argument des commandes aread, awrite, br et bw correspond à l'adresse du circuit permanent, à savoir le numéro de l'interface ATM, le VPI et le VCI séparés à chaque fois par un point. Le numéro de l'interface peut être omis s'il est nul. Par exemple :

% awrite 1.0.42 hi

Certains matériels ne supportent qu'un VPI nul. Par ailleurs, la plage des VCI peut être limitée, p.ex. entre 0 et 1023. Le numéro de l'interface ATM s'obtient à partir des messages d'initialisation du gestionnaire ATM concerné. atm0 correspond à l'interface 0, atm1 correspond à l'interface 1, etc. Dans un système muni d'un véritable périphérique ATM (autre que atmtcp donc), celui-ci se situe normalement en atm0.

L'utilitaire aping émet et reçoit de petites PDU AAL5 via un PVC. Il s'attend à ce que les messages soient renvoyés en écho à l'autre extrémité ou à ce qu'une application similaire y émette un flux de messages. aping signale une erreur si rien n'est reçu pendant une certaine durée. Il s'invoque comme aread, en spécifiant le PVC.

Pour des tests plus poussés, servez-vous de la version modifiée de ttcp incluse dans le paquet. La version originale est disponible à l'adresse : ftp://ftp.sgi.com/sgi/src/ttcp/. Les options suivantes ont été ajoutées :

-a

emploi natif d'ATM au lieu d'UDP/TCP. L'adresse doit être de cette forme pour les PVC : [itf.]vpi.vci. Pour les SVC, il s'agit d'une adresse terminale ATM.

-P num

utilisation d'une connexion CBR avec un débit crête de num cellules par secondes. Une classe de trafic UBR est appliquée par défaut.

-C

désactivation des sommes de contrôle (UDP)

Exemples :

%a ttcp_atm -r -a -s 0.90
%b ttcp_atm -t -a -s 0.90

4.2. Accès direct aux cellules

Les cellules peuvent être formées et analysées avec l'utilitaire atmdump pour les périphériques dont le gestionnaire permet les accès directs aux cellules (mode AAL0). Par exemple :

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. Signalisation

5.1. Fichier des hôtes ATM

Les adresses ATM étant peu pratiques à manipuler, la plupart des outils ATM acceptent également des noms au lieu des adresses numériques. La conversion entre les noms et les adresses s'effectue via le fichier /etc/hosts.atm dont la structure est analogue à celle du fichier /etc/hosts :

adresse_numérique nom(s)

Par exemple :

47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 pc2-a.fqdn pc2-a
47.0005.80FFE1000000F21A26D8.0020D4102A80.00 pc3-a.fqdn pc3-a

L'adresse numérique est spécifiée dans un des formats décrits dans [api]. L'adresse d'un système Linux peut être déterminée avec la commande atmaddr -n (voir également la section Configuration manuelle d'adresse).

De nombreux outils ATM tentent également d'obtenir le nom qui correspond à une adresse lorsqu'ils affichent cette dernière. Le premier nom qui apparaît dans le fichier en regard d'une adresse est alors utilisé.

Outre les adresses ATM pour les SVC, les adresses des PVC peuvent également être stockées dans le fichier /etc/hosts.atm. Lorsque différents types d'adresses correspondent au même nom d'hôte, la première dont le type convient est employée. Ainsi, lorsqu'une application ne demande que des adresses de SVC, celles des PVC sont ignorées.


5.2. ANS

Si vous avez accès au service de nom ATM (ATM Name Service), par exemple parce que vous avez installé l'option ANS, vous pouvez l'employer en remplacement ou en complément du fichier de noms en spécifiant le nom de l'hôte qui héberge le service ANS dans le fichier /etc/resolv.conf.

La liste des codes téléphoniques doit être connue pour effectuer la résolution inverse des adresses E.164. Cette liste se trouve sur le site de l'ITU-T (International Telecommunications Union). La liste des codes E.164 nationaux assignés par l'ITU-T est disponible aux formats PDF et Word.

Note

Si l'URL venait à changer, le document devrait être facilement localisé en utilisant le moteur de recherche du site.

Le script src/lib/pdf2e164_cc.pl du paquet atm-linux permet de créer un tableau des codes nationaux E.164 à partir de la version PDF. Par exemple :

perl pdf2e164_cc.pl e164_xxx.pdf >/etc/e164_cc

Le script s'appuie sur l'utilitaire pdftotext. Celui-ci est disponible avec l'application xpdf.


5.3. Démon de signalisation

Pages de manuel : atmsigd(8) atmsigd.conf(4)

Notez que la prise en charge point-à-multipoint d'atmsigd est très limitée : seul l'emploi en tant que feuille d'un arbre point-à-multipoint fonctionne.

Par défaut, atmsigd est configuré pour se conformer à la version d'UNI choisie dynamiquement. Il peut être compilé pour UNI 3.0, 3.1 ou 4.0 en employant l'argument --with-uni=VERSION du script ./configure au sommet des sources du paquet linux-atm.

Notez que la configuration de atmsigd est assez contraignante. Il s'arrête souvent en cas d'anomalie. Ceci devrait changer dans le futur.

atmsigd cherche un fichier de configuration à l'emplacement spécifié via l'option -c. /usr/local/etc/atmsigd.conf correspond à l'emplacement par défaut.


5.4. Démon ILMI

ILMI offre un mécanisme de configuration automatique des adresses. En l'absence de commutateur ou si celui-ci ne gère pas ILMI, les adresses ATM doivent être renseignées manuellement (se reporter à la section Configuration manuelle d'adresse). On notera que le démon ILMI ne doit pas être employé avec des interfaces pour lesquelles les adresses sont positionnées manuellement.

Le démon ILMI est invoqué comme suit :

ilmid [-b] [-d] [-i ip_locale] [-l fichier_journal] [-q qos] [-u version_uni] [-v] [-x] [itf]

-b

arrière-plan. S'exécute dans un processus fils après initialisation.

-d

messages de débogage. Par défaut, ilmid est très discret.

-i ip_locale

adresse IP à annoncer au commutateur quand il en demande une. Elle est spécifiée sous forme décimale pointée ou textuelle. Par défaut, ilmid la détermine de façon heuristique.

-l fichier_journal

fichier d'enregistrement des messages de diagnostic (au lieu de la sortie standard). Le nom spécial syslog implique l'envoi des messages vers l'enregistreur système syslog.

-q qos

configure la classe de service pour le circuit ILMI. Par défaut une classe UBR à la vitesse du lien est employée.

-u version_uni

version d'UNI. Les valeurs possibles sont : 3.0, 3.1, et 4.0. Le point est facultatif. La valeur employée par défaut dépend de la façon dont ilmid a été compilé. Il s'agit typiquement de la valeur 3.0.

-v

verbosité de débogage accrue.

-x

désactive l'inclusion des liaisons de variables dans les ColdstartTrap SNMP. Certains commutateurs (les LS1000 par exemple) ne fonctionnent que si cette option est activée.

En l'absence de numéro d'interface, ilmid se sert de l'interface 0. La commande atmaddr permet de vérifier le succès de l'enregistrement d'adresse.

L'agent ne supporte que les procédures d'enregistrement d'adresse spécifiées dans la section 5.8 des spécification UNI 3.1 d'ATM Forum. Ces procédures impliquent l'enregistrement du préfixe réseau de l'hôte par le commutateur tandis que l'hôte enregistre en retour l'adresse finale auprès du commutateur. L'hôte y parvient en ajoutant un identificateur de système (ESI/End System Identifier) et un octet sélecteur nul au préfixe réseau enregistré par le commutateur. L'identificateur correspond à l'adresse physique ou MAC de l'interface ATM.


5.5. Configuration manuelle d'adresse

Si votre commutateur ne prend pas en charge ILMI, vous devez positionner manuellement l'adresse ATM au niveau du commutateur et de l'ordinateur. Vérifiez au préalable qu'ilmid est désactivé et utilisez la commande atmaddr pour spécifier la ou les adresses.

Page de manuel : atmaddr(8)

La configuration du commutateur dépend de son modèle. Par exemple, pour un Fore ASX-200 :

conf nsap route new adresse_nsap 152 port vpi

c'est-à-dire

conf nsap route new 47000580ffe1000000f21510650020ea000ee000 152 1a2 0
                    |<---- préfixe NSAP ---->||<--ESI--->|^^
                                                          SEL

La longueur de l'adresse NSAP complète doit toujours être de 40 chiffres hexadécimaux. Il est possible d'employer des adresses avec un préfixe différent et un ESI différent de ceux des périphériques. La valeur de l'octet de sélection (SEL) est ignorée.


5.6. Emploi de deux adaptateurs ATM directement connectés

Il est également possible d'utiliser deux cartes ATM directement connectées sans avoir besoin de commutateur. Ceci est très pratique pour des environnements de test simples.

Un câblage adéquat est nécessaire si vous employez du câble UTP ou STP-5. Nos essais avec des câbles croisés standard 100Base-T n'ont rien donné. Le câblage est différent comme indiqué sur la figure suivante :

RJ45                            RJ45
   1        ------------        7
   2        ------------        8

   7        ------------        1
   8        ------------        2

Les broches 3, 4, 5, 6 ne sont pas connectées.

Les couleurs aux extrémités des connecteurs RJ45 permettent de mieux illustrer ce montage. Le premier connecteur utilise le câblage ci-dessous :

RJ45-1
   1 - marron
   2 - blanc/marron
   3 - non connecté
   4 - non connecté
   5 - non connecté
   6 - non connecté
   7 - orange
   8 - blanc/orange

Et le second connecteur le câblage suivant :

RJ45-2
   1 - orange
   2 - blanc/orange
   3 - non connecté
   4 - non connecté
   5 - non connecté
   6 - non connecté
   7 - marron
   8 - blanc/marron

Un câblage 1 -- 7 et 2 -- 8 fournit une boucle des plus économiques.

On considérera par la suite deux machines nommées « virgil » et « nestor ».

Une extrémité de la connexion ATM doit activer le démon réseau atmsigd tandis que l'autre se sert de la version utilisateur usuelle. On exécute sur nestor la commande :

atmsigd -b -m network

et sur virgil :

atmsigd -b

ILMI n'est pas utilisable sans commutateur ATM. Créez un fichier /etc/hosts.atm avec deux adresses bidon, par exemple :

47.0005.80FFE1000000F21A26D8.0020EA000EE0.00    nestor-atm
47.0005.80FFE1000000F21A26D8.0020D4102A80.00    virgil-atm

Ces adresses sont complètement fantaisistes mais cela n'a pas grande importance tant qu'on n'est pas connecté à un réseau ATM public ou privé. Les adresses sont transmises aux gestionnaires de périphériques via (sur virgil) :

atmaddr -a virgil-atm

et (sur nestor) :

atmaddr -a nestor-atm

Démarrez à présent atmarpd sur les deux machines de la façon habituelle. Vous devriez (en principe) disposer d'un système ATM opérationnel. Pour activer IP au-dessus d'ATM, suivez les instructions données à la section IP au-dessus d'ATM.


5.7. Analyseur-producteur de messages Q.2931

Le compilateur de messages Q.2931 génère également un embellificateur pour les messages Q.2931. L'exécutable se nomme q.dump et se trouve dans le répertoire src/qgen. Notez que la commande make install ne le copiera nulle part.

q.dump attend une suite d'octets sous forme de chiffres hexadécimaux séparés par des espaces sur l'entrée standard et affiche la structure du message si celui-ci est analysable. Exemple :

% 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 au-dessus d'ATM

IP via ATM est pris en charge via CLIP (Classical IP over ATM) comme défini dans la RFC1577 [RFC1577], LANE (LAN Emulation, cf. [lanev1] et [lanev2]) et MPOA (Multi-Protocol Over ATM, cf. [mpoav1]) en mode client.


6.1. CLIP

Un démon gère la génération et l'analyse des requêtes ARP. Le noyau ne maintient qu'une petite table de recherche avec des informations partielles.

Pages de manuel : atmarpd(8), atmarp(8)

atmsigd et ilmid doivent être démarrés avant atmarpd. Utilisez l'option -b pour être sûr que ces démons sont correctement synchronisés. Par exemple :

#!/bin/sh
atmsigd -b
ilmid -b
atmarpd -b
...

Le script suivant ne fonctionnera par contre que rarement :

#!/bin/sh
atmsigd &
ilmid &
atmarpd &
...

atmarp permet de configurer ATMARP. Une fois atmsigd, ilmid et atmarpd démarrés, créez une interface et configurez-la :

# atmarp -c nom_interface
# ifconfig atm0 adresse_locale options_supplémentaires_éventuelles up

Par exemple :

# atmarp -c atm0
# ifconfig atm0 10.0.0.3 up

Dans le cas où seuls des PVC sont employés, on peut les créer avec :

# atmarp -s 10.0.0.4 0.0.70

L'encapsulation est de type NULL si le mot clef null est passé en argument. Notez qu'ARP demande une encapsulation de type LLC/SNAP. Le type NULL est donc limité aux PVC.

L'usage de SVC peut nécessiter davantage de configuration. Si l'hôte joue le rôle de serveur ATMARP sur ce sous-réseau IP logique (LIS, Logical IP Subnet), aucune autre opération n'est nécessaire. Sinon, l'adresse ATM du serveur ARP doit être renseignée. Ceci s'effectue en créant une entrée avec l'option arpsrv. Par exemple :

# atmarp -s \
  10.0.0.0 47.0005.80.ffe100.0000.f215.1065.0020EA000756.00 \
  arpsrv

Le serveur ATMARP doit être opérationnel en préalable à la configuration des clients.

La table ATMARP du noyau peut se lire via /proc/net/atm/arp. La table utilisée par atmarpd est régulièrement affichée sur la sortie standard lorsque le démon a été invoqué avec l'option -d. Sans cette option de configuration, la table est écrite dans le fichier atmarpd.table du répertoire de sortie (par défaut /var/run, modifiable avec l'option -D). La commande atmarp -a permet de la lire.


6.2. Émulation de LAN

Outre CLIP, LANE (Lan Emulation) convoie du trafic IP au-dessus d'ATM. LANE émule le comportement d'un (ancien) réseau local, par exemple dans son aspect diffusion des messages. Le serveur LANE est décrit dans le fichier src/lane/USAGE du paquet linux-atm.

Pages de manuel : bus(8), lecs(8), les(8) et zeppelin(8)

Si vous comptez utiliser plusieurs clients ou services LANE, chaque démon doit disposer de sa propre adresse ATM locale. Tous les démons emploient la même prise d'accès (SAP, Service Access Point) et la distinction entre connexions s'effectue donc avec les adresses ATM.

Tout comme CLIP, LANE se compose d'un processus démon en espace utilisateur, zeppelin, qui gère le protocole LANE, et d'une partie noyau qui s'occupe du cache ARP LANE.

atmsigd et ilmid doivent être lancés avant zeppelin. Le noyau crée une nouvelle interface au démarrage de zeppelin. Celle-ci peut alors être configurée :

# zeppelin options_supplémentaires_éventuelles &
# ifconfig lec0 adresse_locale options_supplémentaires_éventuelles up

Dans l'exemple suivant, deux clients LANE sont démarrés. Le premier client utilise l'interface par défaut lec0, l'adresse d'écoute par défaut et se connecte au pseudo-réseau par défaut. Le second client LANE se voit attribuer l'interface lec2, s'attache à l'adresse locale ma_machine3, essaie de joindre le pseudo-réseau mon_réseau et fait office de pont entre le pseudo-réseau et le segment Ethernet. L'adresse ma_machine3 est spécifiée dans le fichier /etc/hosts.atm. Le reste du fonctionnement du pont est décrit dans le mini-HOWTO correspondant, [bridge-howto].

# zeppelin &
# ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \
                          broadcast 10.1.1.255 up
#
# zeppelin -i 2 -l ma_machine3 -n mon_réseau -p &
# ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \
                          broadcast 10.1.2.255 up

zeppelin emploie l'interface lec0 par défaut et s'attache à une adresse ATM dont l'octet de sélection est à zéro. Il essaie de contacter le LECS (LAN Emulation Configuration Server) à l'adresse standard et de joindre le pseudo-réseau spécifié par ce dernier. zeppelin utilise la MTU définie par le LES et n'agit pas en tant que proxy LEC (LAN Emulation Client). Ce paramétrage est modifiable avec les options de ligne de commandes définies dans zeppelin(8).

zeppelin rejoint automatiquement tout pseudo-réseau dont la MTU dépasse les 1516 octets de MTU par défaut. La MTU de l'interface LANE s'ajuste en fonction de la MTU du pseudo-réseau courant.

L'état du cache ARP LANE est accessible via le fichier /proc/net/atm/lec. Les adresses MAC, ATM et l'état de chaque entrée sont affichés. Les identifiants de connexion pour les enregistrement actifs sont également présents.

Le service LANE (lecs(8), les(8) et bus(8)) se configure au moyen de fichiers. La syntaxe des fichiers de configuration est décrite dans les pages de manuel respectives.

Une description plus détaillée des services LANE de Linux se trouve dans le mémoire d'études de Marko Kiiskilä [kiis].


6.3. MPOA

Le client MPOA de Linux s'inscrit dans la tradition des services ATM divisés en un démon utilisateur et un service noyau. Le démon mpcd traite les paquets de contrôle MPOA tandis que le noyau tient à jour les caches entrant et sortant et effectue le renvoi des paquets.

Page de manuel : mpcd(8)

atmsigd et ilmid doivent être lancés avant mpcd. Puisque MPOA détecte les flux IP à partir du trafic LANE, zeppelin doit être démarré au préalable. L'ordre de lancement des démons zeppelin et mpcd n'est toutefois pas fixé. Ils peuvent être arrêtés et redémarrés indépendamment l'un de l'autre. La méthode la plus simple pour désactiver MPOA consiste à envoyer un signal au démon mpcd.

Ci-dessous se trouve un exemple tiré de la section Émulation de LAN qui démarre deux clients LANE. La configuration a été enrichie de deux clients MPOA alimentés par les clients LANE :

# zeppelin &
# ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \
                          broadcast 10.1.1.255 up
# mpcd -s ma_machine1 -l ma_machine2 &
#
# zeppelin -i 2 -l ma_machine3 -n mon_réseau -p &
# ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \
                          broadcast 10.1.2.255 up
# mpcd -i 2 -s ma_machine4 -l ma_machine5 &

Le démon MPOA a besoin de deux adresses ATM locales qu'il emploie pour initialiser et recevoir les connexions de contrôle et de données. Les adresses peuvent être les mêmes que pour zeppelin, par exemple, mais elles doivent différer entre démons mpcd. Par défaut, mpcd ne récupère pas les informations de configuration du LECS. Les options de ligne de commande et un exemple d'emploi de LECS se trouvent dans la page de manuel de mpcd.

Le contenu des caches entrant et sortant de MPOA peut être contrôlé via le fichier /proc/net/atm/mpc.

Le client MPOA Linux accepte la classe de trafic CBR pour les SVC directs au lieu de la classe par défaut UBR. La QoS des SVC à venir est modifiable par l'intermédiaire de /proc/net/atm/mpc.

# echo add 130.230.54.146 tx=80000,1600 rx=tx > /proc/net/atm/mpc
#             # créer assez de trafic pour déclencher un raccourci
# 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
...

Le raccourci avec l'adresse IP 130.230.54.146 a été établi avec les paramètres ci-dessus. Des patches étendent la détection de flux à un support complet de niveau 4. Les flux de niveau 4 sont exprimés sous la forme d'un quintuplet (protocole, adresse locale, port local, adresse distance, port distant). Ils identifient des flux applicatifs.


Bibliographie

Références

[api] Linux ATM API, Werner Almesberger, http://linux-atm.sourceforge.net/API/ , juillet 1996.

[RFC1577] Classical IP and ARP over ATM (RFC1577), Mark Laubach, janvier 1994.

[lanev1] LAN Emulation Over ATM -- Version 1.0, ATM Forum, février 1996.

[lanev2] LAN Emulation Over ATM -- Version 2 -- LUNI Specification, ATM Forum, juillet 1997.

[mpoav1] Multi-Protocol Over ATM -- Version 1.0, ATM Forum, juillet 1997.

[bridge-howto] Bridging mini-Howto, Christopher Cole, http://www.traduc.org/docs/HOWTO/mini/lecture/Bridge.html , mars 2001.

[kiis] Implementation of LAN Emulation Over ATM in Linux, Marko Kiiskilä, http://linux-atm.sourceforge.net/misc.php , octobre 1996.

Notes

[1]

Certains périphériques ne gèrent qu'un sous-ensemble de cette liste.

HTML 4.01 valide !