PPP Partie 1
Origine
PPP (Point-to-Point Protocol) est connu comme étant le successeur de SLIP (Serial Line IP) publié dans la RFC 1055 :
The TCP/IP protocol family runs over a variety of network media:
IEEE 802.3 (ethernet) and 802.5 (token ring) LAN's, X.25 lines,
satellite links, and serial lines. There are standard encapsulations
for IP packets defined for many of these networks, but there is no
standard for serial lines. SLIP, Serial Line IP, is a currently a de
facto standard, commonly used for point-to-point serial connections
running TCP/IP. It is not an Internet standard.
Cette introduction justifie le besoin de SLIP : en ce temps (début 1980), IP fonctionne déjà sur diverses technologies mais non sur les lignes séries (ou du moins, il n'y a aucun standard). Une « ligne série » est une ligne point-à-point longue distance, par exemple utilisée pour raccorder deux sites distants d'une entreprise. Une telle ligne ne correspond pas forcément à un unique câble physique établi entre les sites mais à de la ressource physique entièrement et permanentement dédiée à l'entreprise. Tel un protocole L2, SLIP a été développé spécifiquement pour transporter des paquets IP sur ces lignes séries :
SLIP has its origins in the 3COM UNET TCP/IP implementation from the
early 1980's. It is merely a packet framing protocol: SLIP defines a
sequence of characters that frame IP packets on a serial line, and
nothing more.
Des problèmes de SLIP…
SLIP présente plusieurs problèmes recensés dans la RFC 1547 qui est le cahier des charges de PPP :
But SLIP only provides
for sending IP packets over asynchronous serial lines. Since it
provides no higher level protocol field for demultiplexing, SLIP
cannot support multiple concurrent higher level protocols. Providing
only a framing protocol, SLIP would be entirely redundant when used
with a LAPB synchronous link. SLIP includes absolutely no mechanism
for error detection, not even parity.
Autrement dit :
- SLIP n'est adapté que pour les lignes séries asynchrones et non pour les synchrones (E-Carrier/T-Carrier, SONET/SDH), davantage utilisées aujourd'hui.
- SLIP n'a été conçu que pour encapsuler de l'IP (il n'est pas multi-protocoles).
- SLIP ne détecte pas les erreurs de transmission (cela n'est pas gênant pour IP qui effectue un contrôleur d'erreur—un paquet erroné est supprimé—mais cela serait gênant si SLIP était multi-protocoles car certains s'attendent à une transmission fiable).
PPP ou ISPPP (Internet Standard PPP) a été conçu pour pallier ces faiblesses et pour apporter des fonctionnalités telles que :
2.6 Protocol Multiplexing
The ISPPP must support multiplexing of many higher level protocols.
Although the Internet community is interested mainly in IP, co-
existence of other protocols is frequently required. IP networks
must often support additional protocols such as AppleTalk, DECnet,
IPX, and XNS.
2.12 Connection Liveness
The ISPPP must include a mechanism to automatically determine when
a link is functioning properly and when it is defunct.
2.15 Network Layer Address Negotiation
The ISPPP must allow network layer (such as IP) addresses to be
negotiated.
2.17 Extensibility and Option Negotiation
The ISPPP must allow for future extensions in a flexible way. The
Internet will never cease to evolve. (...) The option
negotiation protocol could be used for the negotiation of network
layer addresses, data compression schemes, MTU, encryption, etc.
Autrement dit :
- PPP doit être multi-protocoles (cela a déjà été dit mais cela est suffisamment important pour le répéter).
- PPP doit permettre de gérer l'état du lien (mode connecté de niveau 2, à l'instar de TCP au niveau 4).
- PPP doit permettre aux pairs d'échanger leur adresse IP respective (ou encore, de permettre à un pair d'assigner une adresse IP à l'autre).
- PPP doit être extensible et doit permettre aux pairs de négocier des options entre eux (notamment, cela permettra aux pairs de s'authentifier entre eux).
Ce sont là les avantages clés qu'il faut retenir de PPP.
L'évolution de PPP
Il est intéressant de remarquer l'évolution de PPP. Dans sa RFC 1134 initiale (1989) et jusqu'à la RFC 1331 (1992), il a été défini comme un protocole L2 basé sur HDLC et dont voici le format :
+----------+---------+---------+----------+------------
| Flag | Address | Control | Protocol | Information
| 01111110 | 1111111 | 0000011 | 16 bits | *
+----------+---------+---------+----------+------------
---+---------+----------+
| FCS | Flag |
| 16 bits | 01111110 |
---+---------+----------+
C'est pourquoi beaucoup d'articles mentionnent PPP comme étant un protocole L2. Cependant, à partir de la RFC 1548 (1993), PPP a été redéfini de façon indépendante du protocole L2 sous-jacent, et ce, pour pouvoir profiter des avantages clés cités plus haut sur d'autres protocoles L2 (Ethernet notamment). Le format en est alors devenu simplifié :
+----------+-------------+---------+
| Protocol | Information | Padding |
| 8/16 bits| * | * |
+----------+-------------+---------+
En parallèle, le PPP originel basé sur HDLC a été repris dans la RFC 1549 (1993). Ces deux dernières RFC ont respectivement été supplantées par la RFC 1661 (1994) et la RFC 1662 (1994) qui sont celles actuellement en vigueur. Le fait d'avoir défini un PPP indépendant a donné suite à une panoplie de RFC—et d'implémentation de la part des équipementiers—dont :
RFC 1549 PPP in HDLC Framing
RFC 1598 PPP in X.25
RFC 1618 PPP over ISDN
RFC 1619 PPP over SONET/SDH -- ou PoS (Packet over SONET/SDH)
RFC 1973 PPP in Frame Relay
RFC 2364 PPP Over AAL5 -- ou PPPoA
RFC 2516 A Method for Transmitting PPP Over Ethernet (PPPoE) -- ou PPPoEoVLAN/PPPoEoA si transporté sur un VLAN/sur ATM
RFC 2661 Layer Two Tunneling Protocol "L2TP" -- ou PPPoL2TP/PPPoVPDN/PPPoLNS
Les RFC mentionnées jusqu'à celle de PPPoA incluse décrivent l'encapsulation de PPP sur les technologies associées mais ne définissent pas de protocoles proprement dits, contrairement aux deux dernières RFC avec PPPoE et L2TP.
Vue d'ensemble de PPP
Ainsi a été conçu PPP. Il est aujourd'hui présenté comme ayant trois composants principaux :
The Point-to-Point Protocol (PPP) provides a standard method for
transporting multi-protocol datagrams over point-to-point links. PPP
is comprised of three main components:
1. A method for encapsulating multi-protocol datagrams.
2. A Link Control Protocol (LCP) for establishing, configuring,
and testing the data-link connection.
3. A family of Network Control Protocols (NCPs) for establishing
and configuring different network-layer protocols.
Nous retrouvons là les avantages clés cités plus haut, à savoir : une capacité multi-protocoles, un contrôle du lien (LCP—l'authentification peut être considérée comme étant dans cette étape) et l'échange possible des adresses IP entre les pairs (NCP). Le mieux pour concrétiser ces composants est d'analyser une capture réseau de PPP (article suivant). Mais avant cela, il est préférable de connaître le schéma d'étapes de PPP :
+------+ +-----------+ +--------------+
| | UP | | OPENED | | SUCCESS/NONE
| Dead |------->| Establish |---------->| Authenticate |--+
| | | | | | |
+------+ +-----------+ +--------------+ |
^ | | |
| FAIL | FAIL | |
+<--------------+ +----------+ |
| | |
| +-----------+ | +---------+ |
| DOWN | | | CLOSING | | |
+------------| Terminate |<---+<----------| Network |<-+
| | | |
+-----------+ +---------+
Voici comment interpréter ce simple schéma :
Étape | Description | Exemple pratique |
---|---|---|
Dead |
Initialement, le lien PPP est down et rien ne se passe. | La box d'un abonné Internet est débranchée ou le lien physique entre la box et le FAI a été rompu (équipement défaillant, coup de pelleteuse, etc.). |
Establish |
Dès que le lien physique est up, les pairs le détectent automatiquement et s'ensuit l'étape d'établissement du lien PPP. | La box d'un abonné Internet vient d'être branchée ou le lien physique entre la box et le FAI vient d'être rétabli. |
Authenticate |
Suite à l'établissement du lien PPP, s'ensuit une étape optionnelle d'authentification des pairs entre eux, de sorte à ce que n'importe qui ne se connecte pas sur le réseau concerné. | La box d'un abonné Internet s'authentifie auprès de l'équipement de terminaison du FAI couramment appelé BAS (Broadband Access Server). |
Network |
Une fois l'étape d'authentification réussie (s'il y en avait une), les pairs peuvent s'échanger leur adresse IP respective ou un pair peut en assigner une à l'autre (ou encore, un pair peut envoyer les adresses IP des serveurs DNS à utiliser). Noter que cette étape est optionnelle et qu'un lien PPP peut tout à fait être établi sans adresse IP. Cependant, cela est peu utile dans la pratique, l'adresse IP permettant l'accès aux services (accès Internet, VoIP, etc.) ainsi que la supervision à distance (ICMP, SSH, etc.). | La box d'un abonné Internet se voit assigner une adresse IP de la part du BAS et récupère les adresses IP des serveurs DNS à utiliser. |
Terminate |
Enfin, le lien PPP reviendra down à un moment donné. | La box d'un abonné Internet vient d'être éteinte ou le lien physique entre la box et le FAI vient d'être rompu. |
Vous remarquerez que les exemples donnés relèvent de l'accès Internet et non de l'interconnexion de sites distants d'une entreprise, pourtant citée comme besoin moteur de SLIP puis de PPP. C'est car aujourd'hui, à ma connaissance, PPP est davantage utilisé pour cela. Une entreprise qui veut raccorder ses sites a un autre choix que la ligne louée aujourd'hui, il s'agit du VPN (L2VPN ou L3VPN), moins onéreux et qui répond tout autant au besoin (la technologie ayant évoluée). Noter qu'un L2VPN point-à-point est parfois appelé VLL (Virtual Leased Line) en hommage aux lignes louées davantage répandues dans le passé. Trêve de concepts et place maintenant à la pratique avec la deuxième partie sur PPP.