RFC: 1661
Statut : Standard
Retour à l'index des normes : INDEX FRANCAIS

# POINT TO POINT PROTOCOL - PPP

## SPECIFICATION

W. Simpson / Juillet 1994
Traduction : Valéry G. FREMAUX Ingénieur Professeur / EISTI
Edition originale : Mai 1996 / Version FR: Janvier 1998

Retour au sommaire - Précédent - Suivant

## 5. Formats de paquets LCP

Il existe trois classes de paquets LCP :

1. Les paquets de Configuration de Liaison utilisés pour établir et configurer une communication (Requête-Configuration, Configuration-Acquittée, Configuration-NonAcquittée et Configuration-Rejetée).
2. Les paquets de Fermeture de Liaison utilisés pour couper une communication (Requête-Fermeture et Fermeture-Acquittée).
3. Les paquets de Maintenance de Liaison utilisés pour gérer et déverminer une liaison (Code-Rejeté, Protocole-Rejeté, Requête-Echo, Réponse-Echo, et Requête-Elimination).

Par souci de simplicité, il n'existe pas de champ de version dans les paquets LCP. Une implémentation LCP fonctionnelle correcte répondra toujours à des Protocoles et des Codes inconnus par un paquet LCP parfaitement univoque, ce qui procure un mécanisme automatique de reconnaissance de version non compatibles.

Quelles que soient les options de Configuration activées, tous les paquets LCP de Configuration, Fermeture et Rejet de Code (codes 1 à 7) seront systématiquement envoyés comme si aucune option de Configuration n'avait été négociée. En particulier, à chaque option de Configuration est attribuée une valeur par défaut. Ceci assure que tel paquet LCP restera toujours reconnaissable, même lorsqu'une extrémité de la ligne considère par erreur que la ligne est ouverte.

Un et un seul paquet LCP est encapsulé dans le champ d'information PPP, lorsque le champ Protocole du paquet PPP indique une valeur hexadécimale c021 (Link Control Protocol).

Un résumé des formats de paquets LCP est donné ci-après. Les champs sont transmis de la gauche vers la droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      | Identificateur|           Longueur            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |    Données ...
       +-+-+-+-+
`

#### Code

Le champ Code comporte un octet, et identifie le type de paquet LCP. Lorsqu'un paquet reçu affiche un code inconnu, un paquet Code-Rejeté est transmis en retour. Les valeurs de codes LCP reconnus les plus récents sont mentionnés dans la RFC "Assigned Numbers" [2]. Cette spécification donne les codes de base suivants :

1 | Requête-Configuration
2 | Configuration-Acquittée
3 | Configuration-NonAcquittée
4 | Configuration-Rejetée
5 | Requête-Fermeture
6 | Fermeture-Acquittée
7 | Code-Rejeté
8 | Protocole-Rejeté
9 | Requête-Echo
10 | Réponse-Echo
11 | Requête-Elimination

#### Identificateur

Le champ Identificateur comporte un octet, et fournit un moyen d'associer requêtes et réponses. Lorsqu'un paquet présente un Identificateur invalide, il est ignoré sans affecter l'automate.

#### Longueur

Le champ Longueur comporte deux octets, et donne la longueur du paquet LCP, y compris l'octet de Code, d'Identificateur, le champ Longueur lui-même et le champ Données. La longueur NE DOIT PAS excéder l'URM de la liaison.

Les octets reçus en dehors de la plage définie par le champ Longueur sont traités comme des octets de bourrage et sont ignorés. Lorsqu'un paquet affiche une Longueur invalide, il est ignoré sans affecter le fonctionnement de l'automate.

#### Données

Le champ Données comporte zéro ou un nombre quelconque d'octets, selon l'indication du champ Longueur. Le format interne du champ Données dépend de la valeur présente dans le champ Code.

### 5.1. Requête-Configuration

#### Description

Une implémentation désireuse d'initialiser une communication DOIT transmettre une Requête-Configuration. Le champ d'Options est renseigné avec tous les changements à faire par rapport à la configuration par défaut. Les Options de Configuration NE DOIVENT PAS y apparaître lorsqu'elles ont leur valeur par défaut.

Sur réception d'une Requête-Configuration, une réponse appropriée DOIT être émise.

Le format de ce paquet est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |           Longueur            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Options ...
       +-+-+-+-+
`

#### Code

1 pour signifier Requête-Configuration.

#### Identificateur

Le champ Identificateur DOIT changer lorsque le contenu des Options change, et dans la mesure où une réponse valide a été reçu pour la requête précédente. Pour toute retransmission, l'Identificateur PEUT demeurer inchangé.

#### Options

Le champ d'Options est de longueur variable, et contient une liste de zéro ou plus Options de Configuration que l'émetteur désire renégocier. Toutes les Options de Configuration sont négociables simultanément. Le format des Options de Configuration est décrit dans un des chapitres suivants.

### 5.2. Configuration-Acquittée

#### Description

Si toutes les Options de Configuration reçues dans une Requête-Configuration est reconnaissable et toutes les valeurs valides, alors l'implémentation DOIT transmettre un paquet Configuration-Acquittée. La confirmation des Options de Configuration NE DOIT PAS en changer l'ordre ni les valeurs.

Sur réception d'un paquet Configuration-Acquittée, le champ Identificateur DOIT correspondre en valeur à celui de la dernière Requête-Configuration reçue. De plus, la liste d'Options de Configuration d'un paquet Configuration-Acquittée DOIT correspondre en tous points à celle de la Requête-Configuration précédente. Des paquets invalides sont ignorés.

Le format de ce paquet est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |          Longueur             |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Options ...
       +-+-+-+-+
`

#### Code

2 pour signifier Configuration-Acquittée.

#### Identificateur

Le champ Identificateur contient une copie de l'identificateur de la Requête-Configuration motivant l'envoi de ce paquet.

#### Options

Le champ d'Options varie en longueur, et contient une liste de zéro ou plus Options de Configuration à acquitter. Toutes les Options de Configuration sont toujours Acquittées collectivement.

### 5.3. Configuration-NonAcquittée

#### Description

Si toutes les instances d'Options de Configuration reçues peuvent être reconnues, mais avec pour certaines des valeurs non valides, alors l'implémentation DOIT transmettre un paquet Configuration-NonAcquittée. Le champ d'Options est renseigné avec les Options de Configuration non acceptables de la requête correspondante. Toutes les Options validées doivent être filtrées dans le paquet Configuration-NonAcquittée, celles qui restent dans la réponse ne DEVANT PAS être changées d'ordre.

Le rejet d'Options sans champ de valeur (options booléennes) DOIT s'effectuer à l'aide de paquets Configuration-Rejetée.

A toute Option de Configuration dont une seule instance peut être présente DOIT être attribuée une valeur acceptable pour l'émetteur de l'accusé de réception. La valeur par défaut PEUT être utilisée, lorsque celle-ci est différente de la valeur requise par l'initiateur.

Pour toute Option de Configuration pouvant apparaître plusieurs fois avec des valeurs différentes, le paquet Configuration-NonAcquittée DOIT fournir une liste de toutes les valeurs acceptable par l'émetteur de l'acquittement. Cette liste inclura les valeurs acceptées présentes dans la requête.

Finalement, une implémentation peut être configurée pour requérir la négociation d'une Option de Configuration spécifique. Si cette option n'apparaît pas dans la requête, elle PEUT être ajoutée à la liste d'Options de Configuration dans l'accusé de réception, de sorte à inciter l'initiateur à spécifier cette option lors de l'émission de la Requête corrective suivante. Cette option DEVRA figurer avec toutes les valeurs acceptées par l'émetteur de l'accusé de réception.

Sur réception d'un paquet Configuration-NonAcquittée, le champ Identificateur DOIT contenir la même valeur que celle présente dans la dernière Requête-Configuration. Des paquets non valides seront ignorés.

Un paquet Configuration-NonAcquittée valide indique à son récepteur qu'une nouvelle Requête-Configuration est demandée, en indiquant les valeurs attendues et permises. Lorsqu'une Option de Configuration apparaît en plusieurs exemplaires dans l'accusé de réception, listant ainsi les valeurs permises, l'initiateur DEVRA en choisir une pour la constitution de la requête corrective suivante.

Certaines Options de Configuration sont de longueur variable. Comme l'option retournée par l'accusé a été modifiée entre temps par le distant, l'implémentation DOIT pouvoir traiter un retour d'Option de longueur différente à celle émise initialement dans la Requête-Configuration. Le format de ce paquet est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |           Longueur            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Options ...
       +-+-+-+-+
`

#### Code

3 pour signifier Configuration-NonAcquittée.

#### Identificateur

L'identificateur doit être la copie de celui présent dans le Requête-Configuration à l'origine de cet accusé de réception. Options

Le champ d'Options est de longueur variable, et contient une liste de zéro ou plus Options de Configuration dont l'émetteur accuse réception. Toutes les Options de Configuration sont traitées en une fois.

### 5.4. Configuration-Rejetée

#### Description

Lorsque certaines Options de Configuration reçues dans une requête ne sont pas reconnaissables ou ne sont pas négociables (parce que par exemple configurées en fixe par un administrateur réseau), alors l'implémentation DOIT répondre par un paquet Configuration-Rejetée. Le champ d'Options est renseigné avec les seules Options de Configuration non conformes présentes dans la requête. Toutes les Options reconnues et négociables sont expurgées de la requête originale, celles qui restent ne devant en AUCUN CAS être réordonnées ni modifiées.

L'identificateur du paquet Configuration-Rejetée, DOIT nécessairement correspondre à celui de la requête initiale. De plus, l'ensemble des Options de Configuration figurant dans un rejet DOIT être exclusivement un sous ensemble de ceux transmis dans la requête originatrice. Les paquets non valides sont ignorés.

Un paquet Configuration-Rejetée indique à son récepteur que dans toute requête ultérieure corrective NE DEVRA figurer AUCUNE des Options stipulées dans le rejet.

Le format de ce paquet est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |           Longueur            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Options ...
       +-+-+-+-+
`

#### Code

4 pour signifier Configuration-Rejetée.

#### Identificateur

L'identificateur doit être la copie de celui présent dans le Requête-Configuration à l'origine de cet accusé de rejet.

#### Options

Le champ d'Options est de longueur variable, et contient une liste de zéro ou plus Options de Configuration que l'émetteur rejette. Toutes les Options de Configuration sont rejetées en une fois.

### 5.5. Requête-Fermeture et Fermeture-Acquittée

#### Description

Le LCP inclue des codes particuliers de Requête-Fermeture et Fermeture-Acquittée afin d'inclure un mécanisme de clôture d'une connexion.

Une implémentation désireuse de suspendre une connexion DEVRAIT transmettre un paquet Requête-Fermeture. Ces paquets DEVRAIENT être émis continuellement jusqu'à réception d'un paquet Fermeture-Acquittée, ou jusqu'à ce que la couche inférieure ait signalé sa désactivation, ou encore jusqu'à ce que le nombre de requêtes soit suffisant pour que le distant puisse être raisonnablement considéré comme déconnecté.

Sur réception d'une Requête-Fermeture, un paquet Fermeture-Acquittée DOIT être renvoyé.

La réception d'un paquet Fermeture-Acquittée sans sollicitation indique que le distant est dans un des états Fermé ou Arrêté, ou réclame une renégociation de la liaison.

Le format de ce paquet est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |           Longueur            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |    Données ...
       +-+-+-+-+
`

#### Code

5 pour signifier Requête-Fermeture;
6 pour signifier Fermeture-Acquittée.

#### Identificateur

Lors de l'émission, la valeur d'identification DOIT être modifiée chaque fois que le contenu du champ de données change, et dès qu'une réponse valide a été reçue pour une requête antérieure. Lors de la retransmission d'une même requête, la valeur d'identification reste inchangée.

Sur réception, la valeur d'identification de la Requête-Fermeture est recopiée dans le champ d'identification du paquet Fermeture-Acquittée émis en réponse.

#### Données

Le champ de Données est de longueur zéro ou plus d'octets, et contient les données non interprétées par l'émetteur. Les données peuvent être constituées de n'importe quelle séquence d'octets binaires. La fin de ce champ est donnée par calcul à l'aide du champ Longueur.

### 5.6. Code-Rejeté

#### Description

La réception d'un paquet LCP affichant un code non reconnaissable indique que le distant dispose d'une autre version de protocole que celle utilisée par le récepteur. Ceci DOIT être reporté à l'émetteur du paquet litigieux par l'émission d'un paquet Code-Rejeté.

Sur réception d'un rejet d'un code émis et implémentant une fonction indispensable pour la version de protocole implémentée, l'implémentation DEVRAIT signaler le problème et avorter le processus de connexion, dans la mesure où il est fortement improbable que le problème puisse être corrigé automatiquement.

Le format de ce paquet est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |           Longueur            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Paquet-rejeté ...
       +-+-+-+-+-+-+-+-+
`

#### Code

7 pour signifier Code-Rejeté.

#### Identificateur

La valeur d'identification DOIT changer à chaque émission d'un nouveau rejet.

#### Paquet-Rejeté

Le champ Paquet-Rejeté contient une copie du paquet LCP ayant été refusé. Il commence par le champ d'Information, et ne contient aucune en-tête Data Link Layer ni de FCS. Le Paquet-Rejeté DOIT être tronqué si nécessaire pour se conformer à la valeur d'URM maximale du distant.

### 5.7. Protocole-Rejeté

#### Description

La réception d'un paquet PPP dont le champ Protocole affiche une valeur inconnue indique que le distant essaie d'utiliser un protocole qui n'est pas supporté par le récepteur. Ceci peut arriver lorsque le distant essaie de configurer un nouveau protocole. Si l'automate LCP est dans l'état Ouvert, le caractère illicite de cette opération DOIT être signalé au distant par l'émission d'un paquet Protocole-Rejeté.

Sur réception d'un paquet Protocole-Rejeté, l'implémentation DOIT cesser toute émission de paquets de ce protocole aussi rapidement qu'il le peut.

Les paquets Protocole-Rejeté ne peuvent être émis que par un LCP en état Ouvert. Les paquets Protocole-Rejeté reçus lorsque le LCP est dans tout autre état que le précédent doivent être ignorés.

Le format de ce paquet est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |           Longueur            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |       Protocole-Rejeté        |    Information-Rejetée...
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
`

#### Code

8 pour signifier Protocole-Rejeté.

#### Identificateur

La valeur d'identification DOIT être modifiée à chaque nouveau rejet émis.

#### Protocole-Rejeté

Le champ Protocole-Rejeté est de deux octets, et contient la copie du champ de protocole PPP du paquet refusé.

#### Information-Rejetée

Le champ Information-Rejetée contient une copie du paquet ayant été refusé. Il commence par le champ d'Information, et ne contient aucune en-tête Data Link Layer ni de FCS. L'Information-Rejetée DOIT être tronqué si nécessaire pour se conformer à la valeur d'URM maximale du distant.

### 5.8. Requête-Echo et Réponse-Echo

#### Description

Le LCP prévoit les paquets Requête-Echo et Réponse-Echo pour introduire un mécanisme de rebouclage du lien de données permettant d'implémenter des fonctions de test. Ce rebouclage permet notamment le déverminage d'un nouveau prototype d'implémentation, la mesure de la qualité de la ligne, la mesure de performances, ainsi que de nombreuses autres fonctions annexes.

Sur réception d'une Requête-Echo en état Ouvert, le LCP DOIT répondre par un paquet Réponse-Echo.

Les paquets Requête-Echo et Réponse-Echo ne DOIVENT être transmis que lorsque les LCP sont dans l'état Ouvert. Ces deux types de paquets, lorsqu'ils sont reçus dans tout autre état de l'automate, doivent être ignorés par celui-ci.

Le format de ces paquets est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |          Longueur             |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                        Nombre-magique                         |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |    Données ...
       +-+-+-+-+
`

#### Code

9 pour signifier Requête-Echo;

10 pour signifier Réponse-Echo.

#### Identificateur

En transmission, la valeur d'identification DOIT être changée dès que le contenu du champ de Données est modifié, ou qu'une réponse valide a été reçue pour une requête donnée. Lors des retransmissions, La valeur d'identification PEUT rester inchangée.

En réception, l'identificateur d'une Requête-Echo sera copié dans la Réponse-Echo émise en retour.

#### Nombre-Magique

Le Nombre-Magique a une longueur de quatre octets, et permet de détecter des liaisons en condition de rebouclage. Tant que l'Option de Configuration relative aux Nombres-Magiques n'a pas été négociée avec sucés, Le Nombre-Magique DOIT être transmis à zéro. Voir le paragraphe concernant l'Option de Configuration Nombres-Magiques pour plus de détails.

#### Données

Le champ de Données contient zéro ou plus d'octets, et contient des données non interprétées. Ces données peuvent constituer n'importe quelle séquence d'octets binaires. La fin de ce champ est obtenue par calcul grâce à l'indication de Longueur.

### 5.9. Requête-Elimination

#### Description

Le LCP dispose d'un code de Requête-Elimination dans le but de fournir un mécanisme de test de la liaison de donnée dans le sens local vers distant. Ce mécanisme permet la mise en œuvre de fonctions de déverminage de nouveaux prototypes, de fonctions de mesure de performances, et d'autres fonctions accessoires.

Les paquets Requête-Elimination NE DOIVENT ETRE émis que par un LCP en l'état Ouvert. Sur réception, ces paquets doivent être ignorés par le récepteur.

Le format de ce paquet est exprimé ci-dessous. Les champs sont transmis de gauche à droite.

`
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Code      |Identificateur |           Longueur            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                        Nombre-Magique                         |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |    Données ...
       +-+-+-+-+
`

#### Code

11 pour signifier Requête-Elimination.

#### Identificateur

La valeur d'identification DOIT changer à chaque émission.

#### Nombre-Magique

Le Nombre-Magique a une longueur de quatre octets, et permet de détecter des liaisons en condition de rebouclage. Tant que l'Option de Configuration relative aux Nombres-Magiques n'a pas été négociée avec sucés, Le Nombre-Magique DOIT être transmis à zéro. Voir le paragraphe concernant l'Option de Configuration Nombres-Magiques pour plus de détails.

#### Données

Le champ de Données contient zéro ou plus d'octets, et contient des données non interprétées. Ces données peuvent constituer n'importe quelle séquence d'octets binaires. La fin de ce champ est obtenue par calcul grâce à l'indication de Longueur.

Retour au sommaire - Précédent - Suivant