Chapitre suivantIndex des CoursChapitre précedentChapitre 8

Le modele de reference OSI

LA COUCHE LIAISON : NIVEAU 2

 

8. 1. INTRODUCTION

La couche liaison de données fournit les procédures et les moyens fonctionnels nécessaires pour établir, maintenir et libérer des connexions de liaison de données entre ETTD, ETCD et CCD. Une connexion de liaison de données est bâtie sur une ou plusieurs connexions physiques commutées ou non. Cette couche liaison est responsable de l'acheminement sans erreurs de blocs d'information sur la liaison physique. Nous avons représenté sur la Figure 8.1 une liaison de données. La couche liaison de données doit avant tout effectuer un contrôle de flux : l'émetteur et le récepteur doivent se mettre d'accord pour que les blocs d'information n'arrivent pas trop vite au récepteur. Il faut que celui-ci ait le temps de les prendre en compte et de les délivrer à la couche supérieure.

Figure 8. 1. : Une liaison de données.

Dans la plupart des cas, la couche liaison doit remettre à la couche réseau les blocs d'information dans l'ordre dans lequel elle les a reçus. Pour cela une fonction de séquencement est nécessaire. La couche liaison doit principalement détecter et contrôler les erreurs de transmission et provoquer de nouveaux transferts dans les cas d'anomalies. Dans le cas d'erreurs irrécupérables à la suite, par exemple, de défaut de fonctionnement de la couche physique (ex. : coupure d'alimentation de connexion..), la couche liaison doit en avertir la couche supérieure. Une fonction d'établissement et de libération d'une connexion de liaison de données est nécessaire. Cette fonction établit et libère les connexions de liaison de données sur des connexions physiques préalablement activées. Lorsqu'une connexion physique possède des points extrémités multiples (connexion multipoint par exemple), il doit y avoir dans la couche liaison de données une fonction spéciale pour identifier les connexions de liaison de données qui utilisent cette connexion physique. Lorsque des connexions de liaison se partagent une même connexion physique, il faut réglementer l'attribution de la connexion physique commune. De plus, une partie de la connexion physique peut être partagée par toutes les connexions de liaison. Dans ce cas des protocoles d'attribution de la partie commune sont nécessaires. Par exemple, dans le cas d'un réseau de transmission par satellite, les connexions de liaison doivent se partager l'émetteur-récepteur du satellite.

D'autres fonctions sont encore nécessaires pour définir complètement la couche liaison : entre autres la définition d'éléments pour délimiter et synchroniser. Ils permettent de reconnaître la séquence binaire transmise sur la connexion physique comme une unité de données (la trame). Il faut également une fonction permettant l'échange de paramètre entre l'émetteur et le récepteur lors de l'ouverture d'une connexion de liaison. Un grand nombre de protocoles de liaison de données existe aujourd'hui, ce sont ceux imposés par les constructeurs, souvent incompatibles entre eux de manière à ce que l'utilisateur soit obligé de rester fidèle à son constructeur. Le protocole de liaison voué à la plus large utilisation possible est celui qui a été normalisé par l'ISO : le protocole HDLC (High-level Data Link Control). Nous décrivons en détail dans les paragraphes qui suivent les quelques protocoles les plus utilisés.

8. 2. LA PROCÉDURE BSC (BINARY SYNCHRONOUS COMMUNICATION)

La procédure BSC est un protocole de niveau 2 mis au point par IBM pour connecter ses terminaux et en particulier les terminaux 3270 à ses ordinateurs. C'est une des toutes premières procédures à avoir été mise au point et elle est remplacée petit à petit dans la famille IBM par la procédure SDLC (Synchronous Data Link Control) que nous allons décrire ensuite et qui permet une anticipation contrairement à la procédure BSC qui est du type « envoyer et attendre » (send and wait). Le dialogue entre un terminal et un ordinateur sous la procédure BSC utilise les caractères de commande suivants :

EOT                (End Of Transmission: fin de transmission). Ce caractère indique la fin de la transmission d'un texte. Lorsqu'il est émis par l'ordinateur vers le terminal il indique un début de dialogue et il met le terminal en état de contrôle pour être prêt à recevoir de nouvelles commandes s'il est en fonction.

CU ADDR     (Control Unit ADDRess : adresse de l'unité de contrôle pour les invitations à émettre).

DEV ADDR   (DEVice ADDRess : adresse de l'unité) ce caractère indique l'adresse du terminal.

ENQ               (ENQuiry : demande) ce caractère permet d'indiquer une invitation à émettre.

SYN                (SYNchronous idle : synchronisation) ce caractère permet la synchronisation entre l'émetteur et le récepteur.

STX                (Start of TeXt : début de texte) ce caractère permet d'indiquer un début de transmission.

ETX                (End of TeXt : fin de texte) ce caractère indique la fin de la transmission d'un texte.

ESC                (ESCape : échappement) ce caractère permet de différencier d'autres caractères lorsqu'ils sont suivis de ESC.

ACKO            (ACKnowledgement 0         accusé de réception d'un bloc d'information impair).

ACK1             (ACKnowledgement 1         accusé de réception d'un bloc d'information pair).

RVI                 (ReVerse Interrupt : interruption en retour) réponse d'un récepteur pour signaler qu'il n'est pas prêt à recevoir.

WACK           (Wait before transmit positive ACKnowledgement : attendre l'accusé de réception) réponse d'un récepteur qui signale un incident et qui diffère son accusé de réception.

8. 3. LA PROCÉDURE SDLC

SDLC (Synchronous Data Link Control) est la procédure de liaison introduite par IBM pour son architecture de réseau SNA. Cette procédure permet une anticipation de sept trames : on peut émettre jusqu'à sept trames sans avoir besoin d'attendre un acquittement. La structure de la trame est représentée fîgure 8.2.

Figure 8.2. : Structure de la trame SDLC.

Le drapeau indique le début ou la fin de la trame. Il est toujours formé de la suite 01111110. Pour que la même suite ne se retrouve pas dans la trame, on insère automatiquement un 0 dès que l'on trouve une suite de cinq 1. Le récepteur agit de la même façon : s'il trouve un 0 après cinq 1, il l'élimine; s'il trouve un 1, c'est un drapeau. Le même mécanisme a été introduit dans la norme internationale HDLC que nous examinerons ensuite. Le champ d'adresse contient l'adresse de la station secondaire, elle tient sur un octet. Le champ de supervision permet à la fois le numérotage de la trame envoyée et l'envoi des accusés de réception. Ce champ comporte deux compteurs de 3 bits chacun et un bit d'invitation à émettre permettant au primaire de passer la parole au secondaire. Le premier compteur indique le numéro de la trame transmise, le second indique le numéro de la trame attendue par le récepteur. Lorsqu'une erreur de transmission se produit la trame est détruite grâce à la détection de l'erreur par la zone de contrôle (FCS) et un trou dans la numérotation se produit. Le récepteur réclame alors la trame qui n'a pas été reçue ainsi que toutes les trames suivantes. Il n'y a pas de ce fait d'acquittement positif explicite, il n'y a que des demandes de retransmission à partir d'une certaine trame. Enfin dans la zone de supervision un bit spécifique ou bit P est mis à 1 pour indiquer à la station secondaire qu'elle peut commencer à émettre.

La procédure SDLC étant extrêmement similaire à la procédure dissymétrique en mode normal d'HDLC, normalisée par l'ISO, les différents modes de formation et de contrôle d'une liaison SDLC sont laissés de côté pour être examinés en détail plus loin. Le tableau de la fin du paragraphe HDLC regroupe les différentes commandes de SDLC comparées à celles de HDLC et du protocole ADCCP normalisé par l'ANSI.

8. 4. HDLC (HIGH-LEVEL DATA LINK CONTROL)

8. 4. 1. Introduction

HDLC est un ensemble de classes de procédures normalisé par l'ISO (International Standardization Organisation) en 1976, de nombreuses améliorations y ont été apportées pour suivre l'évolution des transports de données. De très nombreuses options existent dans le protocole HDLC et chaque liaison doit choisir sa propre procédure pour minimiser les coûts d'exploitation. De ce fait, les classes de procédures spécifient un ensemble de fonctions de base par un répertoire de commandes et de réponses. Trois modes sont en vigueur : « normal response », « asynchronous response » et « balanced asynchronous » (réponse normale, réponse asynchrone et asynchrone équilibré). Le répertoire de base est considéré comme le minimum nécessaire à la bonne marche du protocole. Nous avons représenté dans le schéma suivant les trois classes de procédure avec le répertoire de commande de base et en dessous les différentes options numérotées de 1 à 14 qui peuvent être ajoutées. La signification des commandes est donnée juste après.


8. 4. 2. Les commandes

                                   Options                                                          Commande     Réponse

            1.         Pour identification                                                    XID                XID

            2.         Pour reprise sur erreur                                               REJ                 REJ

            3.         Pour reprise sur erreur                                               SREJ               SREJ

            4.         Pour le transport d'informations non numérotées     UI                   UI

            5.         Pour l'initialisation                                                     SIM                RIM

            6.         Pour le polling non numéroté                                    UP                  ---

            7.         Adressage sur plusieurs octets                                 

            8.         Pour la commande de trame I seulement                                          I

            9.         Pour la réponse de trame 1 seulement                                   I

            10.       Numérotation étendue des trames                            (7 bits au lieu de 3 bits)

            11.       Pour redémarrage seulement                                     RSET

            12.       Pour des tests de liaison                                            TEST              TEST

            13.       Demande de déconnexion                                                                RO

            14.       FCS sur 32 bits au lieu de 16

--  I    désigne les trames qui portent des informations

--  S    désigne les trames de supervision

--  U   désigne les trames non numérotées

--  RR            (Receive Ready : prêt à recevoir) : ce sont les trames qui portent les accusés de réception lorsque le récepteur n'a pas de trame 1 à envoyer.

--  RNR         (Receive Not Ready : pas prêt à recevoir) trame émise par le récepteur pour stopper l'émetteur, elle porte les accusés de réception des trames reçues jusqu'à l'instant où le récepteur n'est plus prêt.

--  REJ           (REJect) demande la retransmission de toutes les trames à partir d'un numéro spécifié. Cette trame acquitte les trames précédemment reçues.

--  SREJ         (Selective REJect) demande la retransmission d'une trame dont le numéro est spécifié. Cette trame acquitte les trames précédemment reçues.

--  SNRM      (Set Normal Response Mode) commande permettant le passage au mode opérationnel dans le mode de réponse normal dans lequel le secondaire ne peut transmettre qu'avec la permission reçue du primaire.

--  SARM      (Set Asynchronous Response Mode) commande permettant le passage au mode opérationnel dans le mode de réponse asynchrone dans lequel le secondaire peut émettre sans recevoir de permission du primaire.

--  SABM      (Set Asynchronous Balanced Mode) commande permettant le passage au mode opérationnel dans le mode asynchrone équilibré dans lequel le récepteur peut émettre sans recevoir de permission.

--  SNRME    (Set Normal Response Mode Extended) commande identique à SNRM dans le mode étendu (champ de contrôle de 2 octets).

--  SARME    (Set Asynchronous Response Mode Extended) commande identique à SARM dans le mode étendu (champ de contrôle de 2 octets).

--  SABME    (Set Asynchronous Balanced Mode Extended) commande identique à SABM dans le mode étendu (champ de contrôle de 2 octets).

--  SIM          (Set Initialization Mode) commande pour passer du mode opérationnel au mode initialisation pour obtenir un agrément de l'émetteur et du récepteur sur un nouveau mode de fonctionnement.

--  DISC        (DISConnect) met fin au mode opérationnel dans une connexion de liaison.

--  UA            (Unnumbered Acknowledge) acquitte une commande portée par une trame U.

--  DM           (Disconnected Mode) indique que la station est déconnectée.

--  RD            (Request Disconnect) demande que la station soit déconnectée par l'émission d'une commande DISC.

--  RIM          (Request Initialization Mode) demande que la station soit mise en mode d'initialisation par l'envoi d'une commande SIM.

--  XID          (exchange IDentification) commande/réponse permettant l'échange d'informations d'identification ou de valeurs de paramètres dans le champ d'information.

--  UI (Unumbered Information) transfert d'informations dans le champ d'information de cette trame sans que celle-ci soit numérotée.

--  TEST        (TEST) permet l'échange d'informations identiques dans les deux sens de la liaison dans le but de tester la liaison.

--  UP (Unnumbered Poll) commande pour donner la parole au récepteur sans que cette trame soit numérotée. La réponse est optionnelle si le bit P est à 0.

--  RSET        (ReSET) permet la reprise de la numérotation des trames pour une seule direction. La station recevant cette commande remet le numéro N(R) à 0 et la station émettant cette commande remet son compteur N(R) à 0.

--  FRMR      (FRaMe Rejçct) rapporte la réception d'une trame qui n'a pas été acceptée par le récepteur. Le champ d'information indique la raison de ce refus.

8. 4. 3. Le format du bloc d'informations

Sur la figure 8. 3 nous avons représenté le format des blocs d'information qui doivent transiter sur la liaison. Le drapeau est constitué par une suite de 8 bits 01111110 qui définit les frontières de la trame. Un seul drapeau peut être utilisé entre deux trames adjacentes, pour fermer et ouvrir à la fois deux trames. Le drapeau sert aussi de caractère de synchronisation. Il peut aussi être envoyé en continu lorsque la liaison n'est pas utilisée, de manière à conserver la liaison ouverte et détecter des cassures de la ligne. Une trame qui n'est pas bornée par deux drapeaux et qui contient moins de 32 bits est considérée comme non valide.

Figure 8. 3. : Une trame HDLC.

Pour distinguer le drapeau d'une suite de bits identiques dans la trame, on insère un bit 0 après toute suite de 5 bits à 1. Ce bit supplémentaire est automatiquement détruit par le récepteur pour régénérer la suite initiale. Deux exemples sont donnés ci-dessous.

            suite originale             0111110001

            suite transmise                        01111100001

            suite originale             011111101

            suite transmise                        0111110101

Le champ d'adresse qui provient du format HDLC est sous-utilisé puisque seulement deux possibilités existent :

- 11000000 signifie une commande d'un premier noeud vers un deuxième noeud,

- 10000000 signifie une commande du deuxième noeud vers le premier noeud.

Les deux premiers numéros sont déterminés à l'initialisation. Le champ de contrôle indique le type de trame et le numéro de la trame. Il sera décrit en détail dans les éléments de procédure. Le champ d'information est optionnel. Il transporte les bits qui sont remis au niveau paquet du récepteur. Le FCS est utilisé pour la détection des erreurs de transmission à l'intérieur des trames, il porte sur les champs adresse, contrôle et informations.

8. 4. 4. Les éléments de la procédure

Dans sa forme actuelle la procédure X25 niveau 2 a adopté la procédure HDLC en mode équilibré : les noeuds reliés sont traités de la même façon. La liaison est full duplex. La version de HDLC qui est actuellement utilisée s'appelle LAPB. Une autre version existe : LAP, mais elle s'est montrée inopérante dans certains cas, la liaison étant initialisée dans un seul sens puis dans l'autre. Dans certains cas cette situation peut mener à un verrou mortel : « deadlock ». Pour remédier à cette situation, le CCITT a normalisé une nouvelle version LAPB qui permet d'initialiser une liaison dans les deux sens à la fois par une simple commande.

Nous donnons dans la figure 8.4 la description des trois types de trames qui peuvent être utilisées et qui se différencient par leur champ de contrôle : les trames contenant des informations (trame 1), les trames de supervision (trames S) et les trames non numérotées (Unnumbered).

Figure 8.4. : Description des trois types de trames.

Les trames I (Information)

Ce sont les trames qui portent les informations données par la couche supérieure, c'est-à-dire par la couche réseau. Elles transportent un numéro N(S) qui permet de les reconnaître et un numéro N(R) qui indique la prochaine trame que l'émetteur s'attend à recevoir. Cette information sera interprétée par le récepteur comme un acquittement positif des trames : N(R) - 1 ,               N(R) - 2... .

On voit que les trames I sont donc responsables de racheminement des acquittements positifs. Par contre, les acquittements négatifs seront transmis par des trames de supervision spéciales (trames S). Avant d'aller plus loin, il nous faut décrire deux autres variables d'état qui sont gérées aux noeuds extrémités :

- V(S) est le numéro de la prochaine trame qui va être transmise par l'émetteur. Quand une trame est formée on met N(S) = V(S) puis V(S) = V(S) + 1 (modulo 8);

- V(R) est le numéro de la prochaine trame qui doit être reçue par le récepteur; on doit donc dans le cas normal avoir V(R) = N(S) lorsqu'une trame arrive. On incrémente ensuite V(R) de 1 (modulo 8).

Remarques - Les variables d'état sont numérotées modulo 8, c'est-à-dire quelles prennent les valeurs 0, 1, 2, .... 7. Une extension est prévue pour le cas de transmission par un canal satellite: la numérotation est alors modulo 128.

Figure 8. 5. : Les variables d'état.

Nous avons représenté sur la figure 8.5 l'emplacement des variables d'état. On peut remarquer que l'anticipation maximum, c'est-à-dire le nombre de trames que l'on peut envoyer sans en avoir reçu les acquittements est de 7 seulement et non de 8 comme le laisse présumer la numérotation modulo 8 des trames; en effet si l'anticipation maximum était de 8, et dans le cas où cette anticipation serait atteinte on ne pourrait savoir si le N(R) qui arrive, acquitte la dernière trame envoyée avant le blocage de l'émetteur ou le N(R) - 8 (modulo 8) = N(R), c'est-à-dire la première trame non acquittée.

Le bit 5 de la trame I est appelé le bit P/F. Il est interprété par le récepteur comme une demande de transmission vers l'émetteur d'une trame pour donner son état. Un exemple d'utilisation sera donné dans le paragraphe suivant.

Les trames S (Supervision)

Nous regroupons dans la figure 8.6 les commandes et réponses permises par les trames de supervision.

Figure 8. 6. : Les trames S.

La trame RR

Cette trame de supervision permet d'indiquer que la station émettrice est prête à recevoir de nouvelles trames. Elle-peut être utilisée pour annuler un ordre de non-réception (trame RNR). Elle acquitte toutes les trames précédeminent reçues jusqu'au numéro N(R) - 1. Son utilité réside principalement dans son rôle d'acquitter positivement des trames reçues par un récepteur n'ayant aucune trame I à transmettre. Le bit P/F peut être utilisé; s'il est à 1, la trame RR demande l'état de son correspondant. Donnons un exemple d'utilisation du bit P/F. Soit un noeud A qui n'a à transmettre qu'une trame vers le noeud B et le noeud B qui n'a aucune trame à transmettre vers A. Supposons que la trame envoyée par A soit erronée et de ce fait ignorée par le noeud B. Le noeud B ne peut pas envoyer de trame spéciale, REJ, pour demander une transmission puisque les erreurs sont détectées par des ruptures de séquence et que le noeud B ne reçoit pas de trame dont le numéro N(S) est différent de V(R). La reprise ne devrait pouvoir s'effectuer que sur un temps maximum (time-out) dépassé. Cependant le noeud A peut émettre à la suite de sa trame d'information des trames RR avec le bit P/F à 1 pour réclamer un état du récepteur. Le noeud B émettra une trame RR avec N(R) = V(R) ce qui permettra au noeud A de s'apercevoir que le noeud B n'a pas reçu la trame envoyée auparavant. La retransmission pourra s'effectuer sans attendre la fin d'un temps maximum.

La trame RNR

Elle est utilisée pour indiquer à l'émetteur correspondant que le récepteur n'est plus apte à recevoir de nouvelles trames, ceci à cause de pannes passagères aussi bien que d'un manque d'espace de mémorisation. Les trames reçues par le noeud après l'envoi du bloc RNR sont détruites. L'émetteur ne reprendra son activité qu'après la réception d'une trame RR ou REJ, donnant le numéro de la prochaine trame attendue.

La trame REJ

La trame REJ est initialisée lorsque le numéro contenu dans la trame arrivant N(S) est différent du numéro de la trame attendue V(R). Ceci se produit lorsqu'une trame a été incorrectement transmise. La trame suivante a dans ce cas le numéro N(S) = V(R) + 1 qui montre qu'une trame n'a pas été reçue. La trame REJ demande la transmission de toutes les trames à partir du numéro N(R). Dans le même temps elle acquitte les trames N(R) - 1, N(R) - 2....

8. 4. 5. LAPB et LAPX

Le protocole HDLC dans le cas équilibré permet une reprise sur erreur par l'intermédiaire d'une trame SREJ qui ne demande que la retransmission du bloc de données erroné. Cette retransmission n'est pas permise dans le protocole X25 dans un but de simplification. En effet pour le protocole X25 le récepteur ne peut utiliser que la procédure REJ qui permet très simplement le séquencement. En effet la procédure SREJ complique un reséquencement éventuel : les trames sont obligées d'attendre dans le récepteur, la réception correcte du bloc erroné. Le protocole X25 de niveau 2 adopté par le CCITT est un mode équilibré du type primaire/primaire ou encore asynchrone ABM. Si la liaison est duplex, la procédure est appelée LAPB. Si la liaison est exploitée en mode semi-duplex, la procédure LAPX est utilisée. Cette dernière est décrite en détail dans l'avis T71 du CCITT.

8. 4. 6. Comparaison avec SDLC et ADCCP

L'ANSI (American National Standards Institute) a aussi normalisé un protocole de liaison : ADCCP qui ressemble fortement à HDLC et à SDLC. Nous avons représenté dans la figure 8.7 les différentes commandes et réponses qui existent dans HDLC, SDLC et ADCCP pour les comparer.

Figure 8.7. : Comparaison des procédures HDLC, SDLC et ADCCP.

Chapitre précedentIndex des CoursChapitre suivant

Révisé le :23-Sep-2007| ©2007 www.technologuepro.com