INTRODUCTION AU PILOTE EAGLE 1.04 
pour free dégroupé

modem fast sagem 800, 
modem ADSL sureconnect US robotics 9000,





SOMMAIRE



Pour mandrake 8.2, mandrake 9.0, mandrake 9.1, mandrake 9.2; mandrake 10.0
slackware 9.0, slackware 9.1, slackware 10.0

Mots clés : modem fast sagem 800, modem ADSL sureconnect US robotics 9000,
free dégroupé, mandrake 8.2, mandrake 9.0, mandrake 9.1, mandrake 9.2; mandrake 10.0
slackware 9.0, slackware 9.1, slackware 10.0


La méthode normale pour installer le pilote nécessite de compiler le logiciel source du pilote, puis 
de modifier le fichier de configuration pour adapter les valeurs VCI VPI et choisir le bon protocole.

Cela nécessite d'avoir installer le "kernel source" et les logiciels de compilation. Le kernel source
 est absent de mandrake 9.2 download.

Pour faciliter l'installation il suffit de compiler une fois pour toute le logiciel pour chaque kernel.
Il faut ensuite récupérer le module spécifique à chaque kernel, ajouter le firmware et différents
scripts et fihiers. on obtient ainsi un pilote binaire prêt à l'emploi. Il suffit alors d'ajouter un script d'installation 
(tenant compte de la configuration de free dégroupé) et de désinstallation pour obtenir un logiciel 
facile d'installation. Ceci n'a été fait que pour les versions mentionnées plus haut. Il est donc peu
 probable que ce binaire fonctionne avec d'autres versions de linux.

A noter que le module spécifique pour ce modem est présent dès l'installation de mandrake 10.0



Pour télécharger le pilote eagle1 cliquez ici


I Installation

1 Décompression de l'archive eagle1.tar.bz2
2 En ligne de commande, allez dans le dossier eagle1
3 tapez :
./setup

Le logiciel est maintenant installé. Si vous avez fait une installation complète de slackware ou
 avec le dossier internet pour mandrake, le modem est déjà prêt à l'emploi ! Il peut être utile de 
redémarrer l'ordinateur.


II Utilisation

Le modem doit être relié au PC et à la ligne téléphonique.
Il ne se connecte pas automatiquement au démarrage.
Il faut donc taper en ligne de commande adsl pour obtenir la connexion. Vous pouvez
 ensuite surfer avec votre navigateur préféré. Simpliste...


III Remarques

1 Il faut un logiciel client pour dhcp. Slackware installe dhcpcd. Mandrake dispose de dhclient 
et dhcpcd. Si vous avez installé l'option internet, a priori dhclient est déjà installé. Si vous n'avez
 ni dhcpcd ni dhclient, rechercher dans rpmdrake le fichier dhcp-client pour l'installer.

2 Il n'est pas prévu de pourvoir arrêter le modem. Les différentes possibilités essayées créaient
toutes des problèmes.

3 En cas d'interruption de la ligne téléphonique le modem se reconnecte automatiquement lors 
du rebranchement de la ligne téléphonique. En cas de débranchement modem - ordinateur, il faut
 se reconnecter manuellement. cela risque parfois de bloquer l'ordinateur. Sauvegardez donc vos 
fichiers ouverts avant de relancer le modem.

4 Sous Mandrake linux il est parfois nécessaire de modifier le type de connexion réseau. Dans
 le panneau de contrôle de madrake il faut cliquer sur réseau et internet puis connexion et assistant. 
Il faut alors passer en mode expert, adsl, dhcp, et surtout choisir la bonne interface 
(eth0 ou eth1 etc). L'attribution d'adresse IP doit être automatique mais il ne faut pas de 
boot au démarrage.

5 Pour désinstaller le pilote, tapez dans le répertoire eagle1
./uninstall


IV Fonctionnement : ce que j'ai compris...

1 Il faut monter un module (adiusbadsl.o) dans le noyau (kernel) pour que le modem 
soit reconnu comme une carte ethernet.
2 Il faut envoyer 2 logiciels au modem :
- le firmware (système d'exploitation du driver) et le dsp (logiciel de traitement des données)
 par la commande adictrl -d
- Se connecter au fournisseur d'accès par la commande adictrl -s.
La commande adictrl -w effectue les 2 commandes précédentes.
3 Charger le système de communication IP par un service dhcp dans le cas de free dégroupé.

Le script adsl ou startadsl effectue toutes ces taches automatiquement !


Olivier Ernst Septembre 2004

o.ernst@nomade.fr


NB Cette installation a été essayée sur 3 modems : fast sagem 800 version 1; 
fast sagem 800 version 2; adsl sureconnect 9000 d'US Robotics. Elle a aussi été essayée 
sur 2 ordinateurs différents.



_______________________________________________________

Ce pilote libre est du à
C. Casteyde et Fred Sleeper Ros.

Merci pour leur travail ! Je me suis contenté de l'adapter à quelques cas précis.

Voici maintenant le texte accompagnant le fichier source. Attention, ce texte est général 
et ne tient donc pas compte des modifications introduites pour free dégroupé.










****************************************************************************
*********************************ATTENTION**********************************
****************************************************************************

Ce logiciel est en version beta et est fourni tel quel. Il fonctionne
au niveau du noyau du système d'exploitation et peut donc engendrer la perte
d'une partie ou de la totalité de vos données.

Les auteurs de ce logiciel ainsi que ceux qui ont travaillé dessus (y compris
moi-même) en laissent la responsabilité totale à l'utilisateur. Autrement dit,
vous êtes libre de ne pas l'utiliser, mais si vous le faites, c'est sous votre
entière responsabilité.

****************************************************************************
****************************************************************************
****************************************************************************

I. Introduction

    Ceci est la refonte du driver pour Linux des modems basés sur le chipset
Eagle 8051 d'Analog. Le modem Sagem F@st 800 et les modems ADSL de USRobotics
sont notamment basés sur ce chipset. Toutefois, seul le modem F@st 800 a été
réellement testé.
    La dernière version de ce driver pourra être téléchargée à partir
de la page suivante :

http://sl33p3r.free.fr/

    Vous trouverez un forum dédié au support des drivers Sagem
à l'adresse suivante :

http://www.eagle-usb.fr.st/

    Le code du driver a été partiellement nettoyé/réécrit et a été rendu
complètement compatible avec la GPL par récriture des parties non libres, afin
de permettre les extensions et modifications ultérieures. Un certain nombre
d'abérations ont également été corrigées dans l'organisation des sources et
dans le code lui-même dans le cadre du nettoyage. Enfin, les bugs les plus
graves ont été corrigés afin de rendre le driver utilisable. Le code
de communication avec l'espace utilisateur a été réécrit pour blinder le module
en cas d'erreur de la part des clients.

    Les principale modifications sont les suivantes :
    - correction du memory leak en pppoa ;
    - correction de la perte de connexion en cas de trafic montant élevé ;
    - correction des plantages de pppoa et contrôle des tailles des paquets
reçus de l'interface du driver ;
    - correction des race conditions à l'initialisation ;
    - ajout des codes de contrôles ioctl nécessaires pour un usage sûr ;
    - contrôle de la validité des firmwares envoyés au noyau ;
    - support des noyaux 2.4.x ;
    - simplification et corrections diverses du code du module ;
    - réécriture des fichiers hotplug ;
    - réécriture du programme d'installation ;
    - réécriture complète en GPL de adictrl avec support d'une option
pour obtenir de l'aide et amélioration des messages d'erreur.

    C'est surtout ce dernier point qui va provoquer des incompatibilités
avec le driver original d'ADI, aussi les informations qui suivent
vous seront utiles pour installer cette version.


II. Installation

    Avant tout, le driver demande un certain nombre de fonctionnalités
au niveau du noyau pour fonctionner. Ces fonctionnalités sont les suivantes :
    - support du chargement des modules du noyau avec les informations
de version (options "Enable loadable module suppor", "Set version information
on all module symbols" et "Kernel module loader") ;
    - support pour le chargement des périphériques à chaud (si l'on veut que
le driver soit chargé automatiquement au démarrage, option "Support for
hot-pluggable devices") ;
    - support du réseau (normalement, c'est assuré sur tous les noyaux) ;
    - support ppp (options "PPP (point-to-point protocol) support",
1."PPP support for async serial ports", et éventuellement "PPP support for sync
tty ports" si vous voulez utiliser le mode de connexion synchrone de pppd) ;
    - support USB (options "Support for USB", "Preliminary USB device
filesystem" et le support pour l'un des contrôleurs UHCI ou pour le contrôleur
OHCI). Pour ceux dont le contrôleur USB est UHCI, il est recommandé d'utiliser
le pilote alternatif JE du noyau.

    Les en-têtes du noyau doivent se trouver dans le répertoire
/usr/src/linux, ou celui-ci doit être un lien symbolique vers ce répertoire.

    Les systèmes de fichiers virtuels /proc et /proc/bus/usb doivent être
montés. Pour automatiser cela, il suffit d'ajouter les lignes suivantes
dans le fichier /etc/fstab :

none            /proc                     proc            defaults   0   0
usbdevfs        /proc/bus/usb             usbdevfs        defaults   0   0

    Le démon pppd version 2.4.1 ou plus doit également être installé.

    L'installation du driver en soi doit se faire de la manière suivante :
    
    1. Compilation du driver
    
    make clean
    make

    2. Installation du driver

    make install
    
    Cette étape nécessite d'être sous le compte root. Elle vous demandera
les paramètres de connexion à votre fournisseur d'accès pour générer
les fichiers de configuration /etc/ppp/options, /etc/ppp/pap-secrets et
/etc/ppp/chap-secrets.
    Une fois les drivers installés, vous pourrez vous connecter à l'aide
du script /usr/sbin/startadsl et terminer la connexion avec le script
/usr/sbin/stopadsl. Ces scripts ne peuvent être exécutés que dans le compte
root.

    3. Configuration de la connexion automatique
    
    Cette version n'installe pas les scripts d'automatisation de la connexion
en raison des différences entre les distributions et les goûts de chacun
quant à la manière de réaliser cette automatisation.
    Cependant, un script de reconnexion automatique est fourni dans
le répertoire scripts/adsl. Ce script se nomme adsl.inittab et est écrit pour
être utilisé directement à partir du fichier de configuration /etc/inittab.
Pour l'installer, il suffit de le copier dans le répertoire /usr/sbin et
d'ajouter la ligne suivante dans le fichier /etc/inittab :

adsl:2345:respawn:/usr/sbin/adsl.inittab

Cela permettra de lancer la connexion automatique (et de gérer
les reconnexions) dans les niveaux d'exécution 2, 3, 4 et 5.

Note :
    L'installation ne prend pas en charge les drivers USRobotics pour
l'instant. Le driver est fourni avec les fichiers BNM du code du DSP
de ces modems et les fichiers de configuration, tels qu'ils sont fournis
par USRobotics. Leur utilisation nécessite de reconstruire le fichier binaire
contenant le code du DSP approprié au modèle de modem utilisé à l'aide
de l'outil buildDSP, et d'installer le fichier généré et le fichier
d'options adéquat dans le répertoire /etc/analog.


III. Désinstallation

    Aucun outil de désinstallation n'est fourni dans cette version.
La désinstallation doit donc être effectuée manuellement.
    Pour information, le driver installe les fichiers suivants :
    
    /lib/modules/version/kernel/drivers/usb/adiusbadsl.o
    /usr/sbin/adictrl
    /usr/sbin/startadsl
    /usr/sbin/stopadsl
    /usr/sbin/startmire
    /usr/sbin/showstat
    /etc/analog/adiusbadsl.conf
    /etc/analog/DSPcode.bin
    /etc/hotplug/usb/adiusbfirmware
    /etc/hotplug/usb/adiusbdsp
    /etc/ppp/options.adsl
    /etc/ppp/options.mire
    
    Il modifie également les fichiers de configuration suivants :
    
    /etc/ppp/pap-secrets (ajout du mot de passe de la connexion)
    /etc/ppp/chap-secrets (ajout du mot de passe de la connexion)
    /etc/hotplug/usb.usermap (ajout des entrées pour les périphériques pris
en charge par les fichiers hotplug du driver).


IV. Utilisation

    Lorsque le modem est branche pour la premiere fois, il s'annonce
en tant que modem "pre-firmware". Le driver detecte cet etat et se
charge de lui envoyer le code firmware. Ceci entraine une deconnection
du modem, et une reconnection en tant que modem post-firmware.

    Une fois le firmware chargé dans le modem, celui-ci attend le code
du DSP ADSL, qui doit être chargé avec la commande :

adictrl -d [fichier]

où "fichier" est le fichier binaire contenant le code du DSP. Ce fichier peut
être généré à l'aide du programme driver/firmware/buildDSP à partir
des fichiers .BNM. Par défaut il s'agit de /etc/analog/DSPcode.bin.
    Le module conserve le code du DSP en mémoire car le modem peut en avoir
besoin à tout instant. Cependant, il n'est pas renvoyé automatiquement
lors du rebranchement du modem, aussi est-il nécessaire de relancer
adictrl explicitement dans ce cas.

    Cette commande envoie également les options du fichier
/etc/analog/adiusbadsl.conf au module. Le fichier d'option peut être changé
indépendamment à l'aide de l'option '-o' de adictrl. Toutefois, les options
ne peuvent pas être rechargées tant que l'interface réseau du modem est
en cours d'utilisation.

    Le modem s'initialise dès qu'il reçoit le code du DSP. Une fois
l'initialisation terminée, il est possible de se connecter. À tout instant,
il est possible de visualiser l'état du modem à l'aide du fichier :

/proc/driver/adimodem

(attention, ce fichier était placé au préalable directement dans /proc).
La commande showstat permet d'afficher le contenu de ce fichier plus
facilement.

    Il est possible de se synchroniser avec le modem grâce à la commande
suivante :

atictrl -s [timeout]

qui ne se termine que lorsque le modem passe dans l'état "operational".

    Pour se connecter, il suffit de monter l'interface réseau ethX du modem
(attention, cette interface était nommée "ADIModem" auparavant), où X est
un numéro dépendant du nombre d'interfaces Ethernet déjà installées dans
votre système. Il s'agit généralement de 0 (pas de carte réseau) ou de 1
(une carte résau). Cette interface réseau est créée à la demande à l'aide
de l'option -i de adictrl :

adictrl -i

Cette commande affiche également le nom de l'interface réseau utilisée.
Elle peut être appelée plusieurs fois, une seule interface est créée,
lors du premier appel. Ceci permet de s'assurer que le nom de l'interface
réseau choisi par le driver ne décale pas les noms des éventuelles autres
cartes réseaux installées sur le système.

NOTE: il est possible de forcer le nom de l'interface a utiliser, en
      specifiant une valeur pour la variable teh_name, lors du
      chargement du module.
      Exe: insmod adiusbadsl.i eth_name="eth9"

    Le montage de l'interface réseau se fait classiquement à l'aide
de la commande ifconfig :

/sbin/ifconfig ethX 192.168.60.30 up

Le choix de l'adresse IP utilisée n'a aucune importance, du moment qu'elle
n'entre pas en conflit avec une adresse existante. Il est recommandé de
n'utiliser que des adresses réservées aux réseaux privés.

    Lorsque l'interface réseau est montée, la commande

/usr/sbin/pppd pty "/usr/sbin/pppoa -I ethX" file /etc/ppp/options.adsl

lance la connexion, pourvu que les options et les paramètres
de connexion aient été correctement définis dans /etc/ppp/options.adsl
et /etc/ppp/pap-secrets ou /etc/ppp/chap-secrets. Vous trouverez
des exemples de ces fichiers dans le répertoire scripts/ppp. Le programme
d'installation génère normalement ces scripts correctement à condition que
vous lui fournissiez votre login et votre mot de passe.

    Les opérations de connexion/déconnexion peuvent être automatisées à l'aide
des scripts startadsl et stopadsl. Le script startmire permet de se connecter
à la mire ADSL de France télécom afin de tester la connexion ADSL. Il faut
également utiliser la commande stopadsl pour se déconnecter de la mire.

Remarques :
    L'ordre des opérations est important. Le code du driver et d'adictrl
a été modifié pour empêcher les mauvaises manipulation. En particulier,
il est impossible de recharger les options ou le code du DSP dans le modem
tant que l'interface réseau est montée.
    Le débranchement du modem provoque la disparition de l'interface réseau.
Les scripts de connexions automatique doivent donc en tenir compte.



V. Fonctionnement

    Je décris dans cette section ce que j'ai compris du fonctionnement
du driver. Cette description n'est peut-être pas très précise ni
rigoureusement exacte, mais elle permettra peut-être aux personnes désirant
modifier ou améliorer le driver d'en comprendre plus rapidement
l'architecture.
    Le driver est un driver de périphérique USB prenant en charge
les modems ADSL USB basés sur le chipset Eagle 8051 d'Analog. Les périphériques
sont identifiés par la liste des identifiants de vendeurs et de périphérique
déclarés dans le fichier AdiUsbAdsl.h. La liste des périphériques est déclarée
dans le fichier AdiUsbAdsl.c pour que depmod puisse les localiser.
    Ces périphériques disposent de deux identifiants (ce qui apparemment est
classique dans le monde USB), le premier correspondant au périphérique sans
firmware chargé, et le deuxième au périphérique avec firmware. Lorsque
les périphériques de chaque type sont détectés par le système, la fonction
adi_probe est appelée pour déterminer si le module les prend en charge.
    Le module gère les périphériques sans firmware simplement en leur
envoyant leur firmware. Une fois le firmware chargé, le périphérique
disparaît et réapparaît sous son deuxième identifiant. C'est là que
les opérations intéressantes sont faites.
    Le module commence par sélectionner la bonne configuration USB
et initialise ses structures de données (état du modem et buffers
de réception). Puis il charge le code du DSP dans le modem et
l'initialise. Lorsque cette initialisation est terminée, les scripts
clients peuvent créer une interface réseau de type Ethernet par laquelle
les programmes pppoa et pppoe pourront envoyer et recevoir leurs
paquets. À noter que la disparition du périphérique implique la destruction
de l'interface réseau automatiquement. J'ignore complètement
ce qui se passe du côté des programmes clients à ce moment.
De toutes façons, débrancher le modem en cours d'utilisaiton ne constitue
normalement pas un cadre d'utilisation normal.
    L'outil de configuration adictrl communique avec le module par
l'intermédiaire des fichiers spéciaux de périphériques créés dans le système
de fichiers usbdevfs. Pour cela, il recherche les périphériques qu'il peut
contrôler dans le répertoire /proc/bus/usb, qui contient un sous-répertoire
par bus USB. Lorsque le périphérique cible est localisé, une commande ioctl
est envoyée pour passer ou récupérer les informations du module. La liste
des commandes ioctl prises en charge par le module est déclarée dans
le fichier AdiUsbAdsl.h.
    Entre autres opérations, adictrl permet de charger le firmware,
le mode de fonctionnement et le code du DSP à charger dans le modem.
Le mode de fonctionnemnet indique principalement l'encapsulation utilisée
pour envoyer et recevoir les paquets, ainsi que les canaux VPI/VCI ATM
utilisé par le fournisseur d'accès. Le code du DSP quant à lui est
le programme qui permet au modem de communiquer avec le module d'un côté
et avec le terminal ADSL de l'autre. La communication avec le terminal
ADSL se fait en ATM (Asynchronous Transfer Mode).
    Le code du DSP est envoyé dès que possible au modem. Apparemment,
ce code est trop volumineux pour tenir dans le modem (ou pour être
chargé en une seule étape), il est donc découpé en pages (elles-mêmes
découpées en "blocs") qui peuvent être demandées par le modem de manière
asynchrone. Le code de chargement doit donc être traité en partie
dans l'interruption de traitement des événements provenant du modem.
Cette interruption est donc installée juste avant l'envoi du code du DSP,
qui consiste en fait à envoyer la première page du DSP. Cette interruption
est gérée en câblant un URB (en gros une requête d'entrée / sortie USB)
sur une des interfaces USB du modem. Cette interruption gère également
les notifications de changement d'état du modem. Son point d'entrée
dans le module est la fonction adi_irq. L'amorçage du modem
se fait dans la fonction BootTheModem (fichier Boot.c).
    Une fois le modem booté, son état est susceptible d'évoluer
le temps qu'il se synchronise / resynchronise. La gestion des états
du modem est prise en charge dans les fichiers Sm.c et Me.c (Sate machine
et Management entity respectivement). Les chanbements d'état sont
captés par le code de l'ISR du module (Interrupt Service Routine).
    Le code de gestion de l'état du modem contient un timer qui a pour
but de vérifier régulièrement si le modem est vivant. Dans le cas
contraire, le modem est rebooté par le driver, ce qui provoque
la relecture des pages du DSP. Le module conserve donc en permanence
les pages du DSP en mémoire (500 Ko environ).
    Un code ioctl permet de synchroniser les processus utilisteurs avec
l'état du modem. Lorsque le modem est synchronisé, ces processus peuvent
communiquer avec l'interface Ethernet du module.
    La manière de procéder est toujours la même : il faut ouvrir
l'interface en mode packet, c'est à dire de telle sorte à pouvoir lire
et écrire les paquets Ethernet directement. Pour cela, il faut bien sûr
être dans le compte root. Les outils pppoa et pppoe font exactement cela :
ils communiquent avec le démon pppd par leur flux d'entrée et de sortie
d'un côté, et avec l'interface réseau de l'autre côté. La différence
entre ces deux outils réside dans l'encapulation utilisée pour envoyer
les paquets PPP au point d'accès du fournisseur d'accès (le "peer").
    Les paquets en émission sont donc encapsulés dans une trame
Ethernet étendue d'informations complémentaires. Ces informations
sont dépendantes du type d'encapsulation utilisé. Grosso modo,
l'encapsulation pppoa est plus légère que celle utilisée par pppoe.
Les paquets Ethernet sont également traités au niveau de l'interface
réseau de manière spécifique en fonction de l'encapsulation utilisée.
En gros, les paquets de type pppoe sont transmis tels quels à la couche ATM,
avec les en-têtes Ethernet. Les paquets pppoa en revanche sont "nettoyés"
de leurs en-têtes Ethernet et sont donc plus petits.
    Le module utilise un buffer de réception constitué de plusieurs
URBs en lecture. Ces URBs sont câblés sur l'interface des données
du modem et sont traitées par une fonction de réception de données
appelée en asynchrone par les couches USB. Toutefois, ce traitement
est effectué de manière synchrone dans le contexte d'appel du driver
USB. Le traitement des données en entrée est réalisé dans le fichier
Pipes.c. Grâce à ce buffer, les données peuvent arriver plus vite
que le module ne peut les traiter. Dès qu'une donnée est arrivée,
la fonction de réception récupère les données dans l'URB qui lui est
fourni en paramètre et envoie ces données au code de désencapsulation
ATM (fonction UniProcessInboundData).
    Lorsque les données sont reconstituées par le code ATM du module,
la fonction ReadSendItUp du fichier Pipes.c est appelée. Cette
fonction effectue le traitement adéquat pour reconstituer les paquets
Ethernet. Pour l'encapsulation pppoe, ce traitement consiste à analyser
l'en-tête Ethernet reçu de la couche ATM, et pour l'encapsulation pppoa,
elle consiste à reconstruire un en-tête virtuel (puique l'encapsulation
pppoa fait l'économie de ces en-têtes). Une fois ces traitements
effectués, le paquet Ethernet est retransmis directement aux couches
réseau supérieures de Linux via la méthode netif_rx de Linux. Le noyau
les achemine alors vers pppoa ou pppoe (ceux-ci retirant leur propre
encapsulation et transmettant ensuite les paquets PPP à pppd).
    Le code ATM du module n'a pas été analysé. Il semble que ce soit un code
de découpage de paquets conforme au protocole AAL5. Il réalise donc (encore)
une encapsulation des données fournies par l'interface réseau du module pour
les placer dans des cellules ATM. À noter que l'encapsulation AAL5 se fait
en plusieurs endroits : premièrement les en-têtes permettant de définir
l'encapsulation utilisée sont traités dans le fichier Mpoa.c, puis le découpage
en cellules est réalisé dans les fichiers Uni.c et Sar.c. On notera ici aussi
qu'outre le transfert complet des paquets Ethernet, l'encodage AAL5 ajoute
un en-tête de 10 octets pour le protocole PPPoE (à prendre sur la bande
passante), alors que l'encodage pour le protocole PPPoA / VC ne prend rien.
    En clair, l'encapsulation PPPoA revient à dire que les paquets PPP sont
transmis directement à la couche ATM, via un petit détour par l'interface
Ethernet du module. L'encapsulation PPPoE se fait au niveau de pppoe lui-même,
et les paquets Ethernet ainsi générés sont envoyés (avec leur en-tête et tout
et tout) à la couche ATM. Il s'agit donc de "PPPoEoA" (PPP over Ethernet
over ATM). Cela implique un MTU (Maximum Transmit Unit) plus faible au niveau
du démon pppd. Si je ne me suis pas trompé dans mes calculs, pppoa utilise
14 octets d'en-tête Ethernet + 2 octets d'encapsulation, soit un MTU
de 1500 - 2 = 1498 (les paquets Ethernet faisant 1514 octets au maximum).
pppoe quant à lui utilise 6 octets d'encapsulation, ce qui donne un MTU
de 1494. À ces octets d'encapsulation, il faut ajouter deux octets d'en-tête
ajoutés par PPP (pour les deux protocoles), ce qui fait respectivement
un MTU de 1496 et 1492. De plus, le protocole PPPoA n'utilise pas d'octets
d'encapsulation au niveau ATM alors que le protocole PPPoE en utilise 10.
Je recommande donc l'utilisation du protocole PPPoA, car c'est celle qui
consomme le moins de bande passante (au détriment d'une reconstitution
d'en-tête Ethernet à la réception, les deux protocoles construisant
ces en-têtes à l'émission). La différence théorique entre les deux protocoles
est a priori de 1.9% (un paquet de 1492 octets est transféré en 1514+10=1524
octets avec PPPoE, soit 32 octets de frais ; PPPoA ne réclame que 4 octets
de frais, la différence est donc de 28 octets pour 1492, qu'il faut corriger
d'un facteur 1496/1492 en raison du MTU plus faible de PPPoE). Là, j'ai environ
50% de chances de me planter et de raconter n'importe quoi.


Voilà voilà...

Bon surf,

C. Casteyde (casteyde.christian@free.fr) (a la retraite ;)
Fred Sleeper Ros (sl33p3r@free.fr)