Un brin de réseau


Tel un cahier de notes, ce blog propose des articles sur les technologies réseaux et leur utilisation pratique, le tout illustré avec des maquettes et des captures.

Python freeradius-api Python diffplus

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 :

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 :

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.