3. La topologie RNIS et le sous-système du noyau LINUX

La topologie de base de la technologie RNIS est le bus. Il est donc nécessaire de réaliser une adaptation de la topologie étoile du câblage en paires torsadées cuivre du réseau Ethernet. On utilise des boîtiers de «mise en parallèle» des 8 fils du câble Ethernet.

.--------.                                                              ......
  P      | S0.1                                               .-.     .------,~
      -==|----------------------------------------------------| |-----|Poste |'
  A      | S0.2                           .-.     .------,~   | |-.   | TP   ||
      -==|--------------------------------| |-----|Poste |'   .-. |   \------ /
  B      | S0.3       .-.     .------,~   | |-.   | TP   ||       |    ======/
      -==|------------| |-----|Poste |'   .-. |   \------ /       |
  X      | S0.4       | |-.   | TP   ||       |    ======/        |.....
      -==|------//    .-. |   \------ /       |                 .------,~
         | S0.5           |    ======/        |.....            |Poste |'
      -==|------//        |.....            .------,~           | TP   ||
         | S0.6         .------,~           |Poste |'           \------ /
      -==|------//      |Poste |'           | TP   ||            ======/
.________.              | TP   ||           \------ /
                        \------ /            ======/
                         ======/

Une fois la topologie physique en place, il faut identifier les éléments du noyau LINUX relatifs au sous-système RNIS. Que le noyau en cours d'exécution provienne de la distribution ou bien de la séance de travaux pratiques précédente, le sous-système RNIS a été compilé sous forme modulaire. C'est la méthode la plus pratique pour la mise au point des connexions réseau. On peut (charger|décharger) les modules autant de fois que nécessaire.

Comme le travail à effectuer traite des périphériques matériels du système, la documentation se trouve dans l'arborescence des sources du noyau. Cette documentation peut se présenter sous deux formes.

Le tarball des sources du noyau LINUX

Si les sources du noyau ont été directement téléchargés et installés dans le répertoire /usr/src/linux/, les fichiers de documentation sont placés dans le sous-répertoire Documentation/isdn.

Le paquet linux-doc-2.6.xx

Dans ce cas, le répertoire principal est /usr/share/doc/linux-doc-2.6.xx/ et le sous-répertoire est le même que précédemment : Documentation/isdn.

Q8.

Quel est le nom du module de pilotage de la carte RNIS ?

Consulter la liste des modules chargés et l'arborescence de stockage des modules disponibles : le répertoire /lib/modules/2.6.xx.

Dans le sous-système RNIS/ISDN «historique» du noyau Linux, le principal pilote utilisé est baptisé HiSax. On peut donc rechercher ce mot clé dans l'arborescence des modules du noyau courant.

# find /lib/modules/`uname -r`/ |grep -i hisax
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/elsa_cs.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hfc_usb.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/teles_cs.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/sedlbauer_cs.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hisax.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/avma1_cs.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hisax_isac.ko
/lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hisax_st5481.ko

En faisant correspondre la liste ci-dessus avec les informations données auparavant par la commande lspci, on identifie le module hisax_fcpcipnp.

Q9.

Quelle est la commande à utiliser pour charger le module pilote de la carte RNIS ?

Consulter la liste des fichiers du paquet kmod.

C'est la commande modprobe qui permet de charger un module ainsi que ses dépendances.

# modprobe -v hisax_fcpcipnp
insmod /lib/modules/2.6.32-5-amd64/kernel/drivers/net/slhc.ko 
insmod /lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/i4l/isdn.ko 
insmod /lib/modules/2.6.32-5-amd64/kernel/lib/crc-ccitt.ko 
insmod /lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hisax.ko 
insmod /lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hisax_isac.ko 
insmod /lib/modules/2.6.32-5-amd64/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko

Q10.

Quels sont les messages systèmes qui indiquent que le module pilote de carte RNIS est correctement configuré ?

Rechercher dans les fichiers de messages systèmes contenant les informations sur le matériel. Vérifier que les messages systèmes annoncent que le canal D et les 2 canaux B sont disponibles.

L'analyse des messages système donne les informations suivantes.

[ 3315.748866] ISDN subsystem Rev: 1.1.2.3/1.1.2.3/1.1.2.2/1.1.2.3/1.1.2.2/1.1.2.2 loaded 1
[ 3315.778268] HiSax: Linux Driver for passive ISDN cards
[ 3315.778270] HiSax: Version 3.5 (module)
[ 3315.778272] HiSax: Layer1 Revision 2.46.2.5 2
[ 3315.778274] HiSax: Layer2 Revision 2.30.2.4
[ 3315.778276] HiSax: TeiMgr Revision 2.20.2.3
[ 3315.778277] HiSax: Layer3 Revision 2.22.2.3
[ 3315.778279] HiSax: LinkLayer Revision 2.59.2.4
[ 3315.779643] hisax_isac: ISAC-S/ISAC-SX ISDN driver v0.1.0
[ 3315.781407] hisax_fcpcipnp: Fritz!Card PCI/PCIv2/PnP ISDN driver v0.0.1
[ 3315.781442] HiSax: Card 1 Protocol EDSS1 Id=fcpcipnp0 (0) 3
[ 3315.781448] HiSax: DSS1 Rev. 2.32.2.3
[ 3315.781450] HiSax: 2 channels added
[ 3315.781452] HiSax: MAX_WAITING_CALLS added
[ 3315.781456] hisax_fcpcipnp: found adapter Fritz!Card PCI v2 at 0000:05:01.0

1

Le sous-système RNIS du noyau Linux comprend la machine d'état d'établissement, de maintien et de libération des connexions.

2

Tous les éléments de cette liste correspondent aux fonctions de gestion de la signalisation sur le canal D du bus RNIS.

3

Ces messsages indiquent que les deux canaux B du bus RNIS sont ouverts et que l'interface RNIS est prête à être configurée.

Q11.

Quels sont les paquets qui contiennent les outils de configuration d'interface RNIS/ISDN ?

Effectuer une recherche dans la base de données des paquets avec l'empreinte isdn. Installer les paquets relatifs à la configuration d'interface.

# aptitude search isdn
p   isdnactivecards   - ISDN utilities - active ISDN card support
p   isdnlog           - ISDN utilities - connection logger
p   isdnlog-data      - ISDN utilities - connection logger data
p   isdnutils         - ISDN utilities - dependency package
p   isdnutils-base    - ISDN utilities - minimal set
p   isdnutils-doc     - ISDN utilities - documentation
p   isdnutils-xtools  - ISDN utilities - graphical tools
p   isdnvbox          - ISDN utilities - answering machine dependency package
p   isdnvboxclient    - ISDN utilities - answering machine client
p   isdnvboxserver    - ISDN utilities - answering machine server

C'est le paquet isdnutils-base qui nous intéresse ici.

# aptitude install isdnutils-base

Q12.

Quels sont les fichiers de périphériques ou device files associés aux interfaces RNIS ? Comment créer ces entrées ?

Effectuer des recherches dans le répertoire /dev. Rechercher le paquet qui contient le script MAKEDEV.

Si la commande # find /dev/ -name \*isdn\* ne donne aucun résultat, c'est qu'aucune entrée de périphérique n'a été créée auparavant. Dans ce cas, on doit procéder à une création manuelle à l'aide du script /dev/MAKEDEV/. La recherche des directives de création d'entrées RNIS dans le code de ce script permet d'identifier l'option isdnbri. On exécute alors les instructions suivantes.

# cd /dev && WRITE_ON_UDEV=yes MAKEDEV isdnbri && ln -s /dev/isdnctrl0 /dev/isdnctrl
# ls /dev/isdn[0-9]
/dev/isdn0  /dev/isdn1  /dev/isdn2  /dev/isdn3
/dev/isdn4  /dev/isdn5  /dev/isdn6  /dev/isdn7
/dev/isdn8  /dev/isdn9

Pour pouvoir utiliser MAKEDEV, il faut que le paquet correspondant ait été installé.

# aptitude show makedev

Q13.

Quel est l'utilitaire de paramétrage des messages du sous-système RNIS ?

Utiliser la documentation README.HiSax.

C'est la commande isdnctrl qui sert à configurer les différents types d'interfaces.

Q14.

Quelles sont les interfaces du sous-système qui transmettent les messages ?

Utiliser la documentation README.HiSax.

Par défaut, c'est le fichier /dev/isdnctrl qui sert de canal d'information. Il doit exister dans le répertoire /dev/.

# isdnctrl addif isdn0
Can't open /dev/isdnctrl or /dev/isdn/isdnctrl: No such file or directory
# ln -s /dev/isdnctrl0 /dev/isdnctrl
# isdnctrl addif isdn0
isdn0 added

Q15.

Quelle commande utiliser pour envoyer les messages sur une console ?

Utiliser la documentation README.HiSax.

Comme l'entrée de périphérique /dev/isdnctrl0 est de type caractère, il est possible d'afficher son contenu directement à la console.

# ls -lAh /dev/isdnctrl0
crw-rw---- 1 root dialout 45, 64 12 oct.  00:16 /dev/isdnctrl0

En phase de mise au point d'une connexion, la méthode d'affichage la plus simple consiste à dédier une console à cet usage.

[Avertissement] Avertissement

La commande ci-dessous verrouille l'accès au prériphérique. Il faut impérativement libérer la ressource rapidement avec la séquence Ctrl+C.

# cat /dev/isdnctrl
85:31.79 L3DC State ST_L3_LC_REL Event EV_ESTABLISH_REQ
85:31.79 L3DC ChangeState ST_L3_LC_ESTAB_WAIT
85:31.79 tei State ST_TEI_NOP Event EV_IDREQ
85:31.79 tei assign request ri 60784
85:31.79 Card1 -> PH_DATA_REQ: UI[0]C (sapi 63, tei 127)
85:31.79 tei ChangeState ST_TEI_IDREQ
85:31.97 tei State ST_TEI_IDREQ Event EV_ASSIGN
85:31.97 tei identity assign ri 60784 tei 73
85:31.97 tei ChangeState ST_TEI_NOP
85:31.97 Card1 -> PH_DATA_REQ: SABME[1]C (sapi 0, tei 73)
85:32.07 L3DC State ST_L3_LC_ESTAB_WAIT Event EV_ESTABLISH_CNF
85:32.07 L3DC ChangeState ST_L3_LC_ESTAB
85:32.07 Card1 -> PH_DATA_REQ: I[0](ns 0, nr 0)C (sapi 0, tei 73)
85:32.48 Card1 -> PH_DATA_REQ: RR[0](nr 1)R (sapi 0, tei 73)
85:52.91 Card1 -> PH_DATA_REQ: I[0](ns 1, nr 1)C (sapi 0, tei 73)
85:53.18 Card1 -> PH_DATA_REQ: I[0](ns 2, nr 2)C (sapi 0, tei 73)
85:53.35 L3DC State ST_L3_LC_ESTAB Event EV_RELEASE_REQ
85:53.35 L3DC ChangeState ST_L3_LC_REL_DELAY
85:53.35 Card1 -> PH_DATA_REQ: RR[0](nr 3)R (sapi 0, tei 73)
86:06.05 Card1 -> PH_DATA_REQ: UA[1]R (sapi 0, tei 73)
86:06.05 L3DC State ST_L3_LC_REL_DELAY Event EV_RELEASE_IND
86:06.05 L3DC ChangeState ST_L3_LC_REL

La copie d'écran ci-dessus fait apparaître les différentes étapes d'un appel téléphonique qui n'aboutit pas.