(( Linux ISDN HOWTO ))
Comment configurer l'accès Numéris à Internet avec GNU/Linux
Documentation obsolète sur la configuration du sous-système (RNIS|ISDN) des noyaux LINUX de la série 2.4.xx
Consultez les documents du site [inetdoc.LINUX] pour obtenir des informations à jour.

précédent suivant

débutsuivant Protocoles

Le principe de la compression des données lors de la transmission sur un canal à faible débit n'a rien de spécifique à la technologie RNIS.

Le protocole de contrôle de la compression défini par le document RFC 1962 : The PPP Compression Control Protocol (CCP) est une des pièces majeures du protocole point à point de l'Internet RFC 1661 : The Point-to-Point Protocol (PPP).

Le document RFC 1662 : PPP in HDLC-like Framing a permis l'utilisation des fonctions du protocole PPP sur les canaux RNIS/ISDN. La connexion d'une liaison RNIS/ISDN à l'Internet est gérée suivant le document RFC 1618 : PPP over ISDN. C'est le rôle du démon ipppd qui gère l'établissement, le maintien et la libération de la connexion.

Les transactions se déroulent dans l'ordre suivant :

Toutes ces transactions sont contrôlées par les options du démon ipppd. Le fichier de configuration du démon ipppd est soit /etc/ppp/ioptions, /etc/isdn/ipppd.ippp0 dans le cas d'une distribution Debian.


débutsuivant Contrôle de la compression

Par défaut de protocole ccp est actif. Pour des besoins de mise au point, il peut être nécessaire de le désactiver avec l'une des options suivantes :

       -ccp   Necessary for a few netblazers on the remote  side.

       noccp  same as -ccp


débutsuivant Compression des en-têtes TCP

Le document RFC 1144 : Compressing TCP/IP Headers for Low-Speed Serial Links spécifie le mode compression des en-têtes de messages TCP.

       -vj    Disable negotiation of Van  Jacobson  style  TCP/IP
              header  compression  (use default, i.e. no compres­
              sion).
 
       -vjccomp
              Disable the connection-ID compression option in Van
              Jacobson  style  TCP/IP  header  compression.  With
              this option, ipppd will not omit the  connection-ID
              byte  from  Van Jacobson compressed TCP/IP headers,
              nor ask the peer to do so.
 
       vj-max-slots n
              Sets the number of connection slots to be  used  by
              the  Van  Jacobson  TCP/IP  header  compression and
              decompression code to n, which must  be  between  2
              and 16 (inclusive).

Personnellement, je n'ai jamais eu à désactiver cette compression. Bien entendu, tout dépend de la configuration logicielle du serveur d'accès appelé.


débutsuivant Compression BSD

Le document RFC 1977 : PPP BSD Compression Protocol indique comment utiliser la compression standard Unix avec les paquets encapsulés par le protocole PPP.

Il s'agit encore d'une option du démon ipppd. Le paramétrage est donné dans les pages de manuel du démon :

       bsdcomp nr,nt
              Request  that  the  peer  compress  packets that it
              sends, using the BSD-Compress scheme, with a  maxi­
              mum  code  size  of  nr bits, and agree to compress
              packets sent to the peer with a maximum  code  size
              of nt bits.  If nt is not specified, it defaults to
              the value given for nr.  Values in the range  9  to
              15  may  be  used for nr and nt; larger values give
              better compression but consume more  kernel  memory
              for  compression  dictionaries.   Alternatively,  a
              value of 0 for nr or nt disables compression in the
              corresponding direction.

       -bsdcomp
              Disables  compression;  ipppd  will  not request or
              agree to compress packets  using  the  BSD-Compress
              scheme.

Module isdn_bsdcomp

Pour utiliser ce type de compression, il faut compiler un module spécifique appelé isdn_bsdcomp. Voir la rubrique Configuration du noyau.

Si le module est chargé avec succès, doit obtenir les informations suivantes dans les logs :

LinuxBox:/home/phil# cat  /var/log/messages |grep BSD
... LinuxBox kernel: PPP BSD Compression module registered
... LinuxBox ipppd[247]: Compressor BSD Compress loaded!

Il faut ajouter le module de compression BSD dans la liste du fichier /etc/modules comme dans l'exemple suivant :

...
hisax
isdn_bsdcomp
...


débutsuivant Compression LZS

Le document RFC 1974 : PPP Stac LZS Compression Protocol indique comment utiliser l'algorithme de compression Stac LZS avec les paquets encapsulés par le protocole PPP.

Un brevet sur cet algorithme a été déposé par la société Stac Electronics. A partir du brevet initial, de nombreuses versions propriétaires ont été dérivées. Les exemples les plus caractéristiques se retrouvent sur les serveurs d'accès (NAS) CISCO et Ascend (acquis par Lucent). Malheureusement, l'utilisation de ces versions propriétaires est très répandue (Wanadoo ;-/) sous les dénominations du type : STAC/MS-??? et STAC/LZS-???.

Module isdn_lzscomp

Pour respecter les conditions légales d'application du brevet Stac Electronics, le module isdn_lzscomp n'est pas distribué avec le noyau Linux.

Le fichier source de ce module est présent dans le paquetage isdn4k-utils dans le répertoire isdn4k-utils/ipppcomp.

Le fichier README.LZS fournit toutes les informations techniques et légales sur la compiltaion de ce module pour la série 2.2.xx des noyaux Linux.

Voici les instructions de compilation du module pour les noyaux 2.4.xx :

  • Copier le fichier isdn_lzscomp.c dans l'arborescence des sources du noyau Linux :
LinuxBox:/home/phil# cd isdn4k-utils/ipppcomp
LinuxBox:/home/phil# cp isdn_lzscomp.c /usr/src/linux/drivers/isdn/

  • Editer le fichier Makefile du répertoire /usr/src/linux/drivers/isdn/ comme suit :
   obj-                  += isdn.o
   obj-      += isdn_bsdcomp.o
+  obj-      += isdn_lzscomp.o

  • Recompiler les modules :
LinuxBox:/home/phil# make modules modules_install

  • Tester le chargement du module :
LinuxBox:/home/phil# modprobe isdn_lzscomp

Si le module est chargé avec succès, doit obtenir les informations suivantes dans les logs :

LinuxBox:/home/phil# cat  /var/log/messages |grep BSD
... LinuxBox kernel: PPP Stac/HiFn LZS (De)Compression registered
... LinuxBox ipppd[5226]: Compressor Stac Electronics LZS loaded!

Il faut ajouter le module de compression LZS dans la liste du fichier /etc/modules comme dans l'exemple suivant :

...
hisax
isdn_lzscomp
...


débutsuivant Tests

Les tests que j'ai pu effectuer avec les 2 fournisseurs d'accès que j'utilise ne sont pas concluants. Voici tout de même une analyse des résultats.

Wanadoo

Comme Wanadoo utilise des serveurs d'accès Ascend, j'ai voulu tester la compression LZS.


ipppd[986]: sent [0][IPCP ConfReq id=0x1 <addr 192.168.1.1> <compress VJ 0f 01>]
ipppd[986]: sent [0][CCP ConfReq id=0x1 <LZS (RFC) hists 1 check 3]
ipppd[986]: rcvd [0][IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 193.251.122.21>]
ipppd[986]: sent [0][IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 193.251.122.21>]
ipppd[986]: rcvd [0][CCP ConfReq id=0x1 <LZS (Ascend pre-RFC)]
ipppd[986]: sent [0][CCP ConfRej id=0x1 <LZS (Ascend pre-RFC)]
kernel: Received CCP frame from peer
kernel: [0/0].ccp-rcv[0]: 01 01 00 0a 11 06 00 01 01 03
kernel: Received CCP frame from daemon:
kernel: [0/0].ccp-xmit[0]: ff 03 80 fd 04 01 00 0a 11 06 00 01 01 03
ipppd[986]: rcvd [0][IPCP ConfNak id=0x1 <addr 193.250.118.32>]
ipppd[986]: sent [0][IPCP ConfReq id=0x2 <addr 193.250.118.32> <compress VJ 0f 01>]
ipppd[986]: rcvd [0][CCP ConfRej id=0x1 <LZS (RFC) hists 1 check 3]
ipppd[986]: sent [0][CCP ConfReq id=0x2]
kernel: Received CCP frame from peer
kernel: [0/0].ccp-rcv[0]: 04 01 00 09 11 05 00 01 03
kernel: Received CCP frame from daemon:
kernel: [0/0].ccp-xmit[0]: ff 03 80 fd 01 02 00 04
kernel: Received CCP frame from peer
kernel: [0/0].ccp-rcv[0]: 04 02 00 04
ipppd[986]: rcvd [0][IPCP ConfAck id=0x2 <addr 193.250.118.32> <compress VJ 0f 01>]
ipppd[986]: rcvd [0][CCP ConfRej id=0x2]


Les fonctions de compression LZS implantées sur le serveur ne sont pas conformes à la RFC 1974.


rcvd [0][CCP ConfReq id=0x1 <LZS (Ascend pre-RFC)]


La demande de compression LZS du sous-système RNIS/ISDN Linux est rejetée par le serveur d'appel Wanadoo.


rcvd [0][CCP ConfRej id=0x1 <LZS (RFC) hists 1 check 3]


Free

Dans ce cas, c'est la compression des en-têtes qui est rejetée d'emblée. Il n'est donc même pas question de négocier une compression des données BSD ou LZS.


ipppd[1298]: sent [0][IPCP ConfReq id=0x1 <addr 192.168.1.1> <compress VJ 0f 01>]
ipppd[1298]: sent [0][CCP ConfReq id=0x1 <bsd v1 9]
ipppd[1298]: rcvd [0][IPCP ConfReq id=0x1 <addr 213.228.38.254>]
ipppd[1298]: sent [0][IPCP ConfAck id=0x1 <addr 213.228.38.254>]
ipppd[1298]: rcvd [0][IPCP ConfRej id=0x1 <compress VJ 0f 01>]
ipppd[1298]: sent [0][IPCP ConfReq id=0x2 <addr 192.168.1.1>]
ipppd[1298]: rcvd [0][LCP ProtRej id=0x1 80 fd 01 01 00 07 15 03 29]
ipppd[1298]: rcvd [0][IPCP ConfNak id=0x2 <addr 213.228.22.162>]
ipppd[1298]: sent [0][IPCP ConfReq id=0x3 <addr 213.228.22.162>]
ipppd[1298]: rcvd [0][IPCP ConfAck id=0x3 <addr 213.228.22.162>]



précédent suivant

$Revision: 721 $ - $Date: 2005-11-10 16:48:33 +0100 (jeu, 10 nov 2005) $

Ces pages sont écrites en DHTML à la main avec WML et sont garanties 100% logiciel libre.
Documentation sous licence OpenContent