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.