Groupe de travail Réseau	ANSI X3S3.3 86-80	
Request for Comments : 994	ISO TC97/SC6/N 3998	
Traduction Claude Brière de L’Isle	mars 1986	

ISO :   INTERNATIONAL ORGANIZATION FOR STANDARDIZATION
ORGANISATION INTERNATIONALE DE NORMALISATION

ISO/TC 97/SC 6 Télécommunications et échange d’informations entre systèmes
Secrétariat : USA (ANSI)

Titre : Texte final du DIS 8473,

Protocole pour la fourniture du service réseau en mode sans connexion

Source : Éditeur du DIS 8473

Table des Matières
0. Introduction	2
1. Portée et domaine d’application	2
2. Références	3
Chapitre un : Généralités	3
3. Définitions	3
3.1 Définitions du modèle de référence	3
3.2 Définitions des conventions de service	3
3.3 Définitions de l’architecture de couche réseau	4
3.4 Définitions de l’adressage de couche réseau	4
3.5 Définitions supplémentaires	4
4. Symboles et abréviations	4
4.1 Unités de données	4
4.2 Unités de données de protocole	4
4.3 Champs d’unités de données de protocole	4
4.4 Paramètres	5
4.5 Divers	5
5. Vue d’ensemble du protocole	5
5.1 Organisation interne de la couche réseau	5
5.2 Sous-ensembles du protocole	6
5.3 Adresses et titres	6
5.4 Service fourni par la couche réseau	6
5.5 Service sous-jacent supposé par le protocole	7
5.6 Service supposé à partir de l’environnement local	8
Chapitre deux : Spécification du protocole	8
6. Fonctions du protocole	8
6.1 Fonction de composition de PDU	9
6.2 Fonction de décomposition de PDU	9
6.3 Fonction d’analyse de format d’en-tête	9
6.4 Fonction de contrôle de durée de vie de PDU	10
6.5 Fonction de PDU de chemin	10
6.6 Fonction de PDU de transmission	10
6.7 Fonction de segmentation	10
6.8 Fonction de réassemblage	11
6.9 Fonction de PDU d’élimination	12
6.10 Fonction de rapport d’erreur	12
6.11 PDU de détection d’erreur d’en-tête	13
6.12 Fonction de bourrage	14
6.13 Sécurité	14
6.14 Fonction d’acheminement de source	14
6.15 Fonction d’enregistrement de chemin	15
6.16 Fonction de maintenance de qualité de service	16
6.17 Fonction de priorité	16
6.18 Fonction de notification d’encombrement	16
6.19 Classification des fonctions	16
7. Structure et codage des PDU	17
7.1 Structure	17
7.2 Partie fixe	18
7.3 Partie adresse	20
7.4 Partie segmentation	20
7.5 Partie options	21
7.6 Partie Données	24
7.7 PDU de Données (DT)	25
7.8 Protocole de couche réseau inactive	26
7.9 PDU de rapport d’erreur (E/R)	26
8. Conformité	28
8.1 Fourniture des fonctions pour la conformité	28

0.	Introduction

La présente norme de protocole fait partie d’un ensemble de normes internationales produites pour faciliter l’interconnexion des systèmes ouverts. L’ensemble de normes couvre les services et protocoles nécessaires pour réaliser une telle interconnexion.

La présente norme de protocole se positionne par rapport aux autres normes voisines par les couches définies dans le modèle de référence pour l’interconnexion des systèmes ouverts (ISO 7498). En particulier, c’est un protocole de la couche réseau. Ce protocole peut être utilisé entre des entités réseau dans les systèmes d’extrémité ou dans les systèmes relais de la couche réseau (ou les deux). Il fournit le service réseau en mode sans connexion tel que défini dans l’Addendum 1 à la définition de service réseau couvrant la transmission en mode sans connexion (ISO 8348/AD1).

Les inter-relations de ces normes sont illustrées dans la Figure 1 ci-dessous :

--------------------+--- FOURNISSEUR DE SERVICE RÉSEAU ISO ---^-----------------
                    |                                         |
                    |                                         |
                    |                                         |
    SPÉCIFICATION   |  RÉFÉRENCE AUX BUTS --------------------+
          DE        |
      PROTOCOLE     |  RÉFÉRENCE AUX HYPOTHÈSES --------------+
                    |                                         |
                    |                                         |
                    |                                         |
--------------------+-DÉFINITIONS DE SERVICE DE SOUS RÉSEAU---v-----------------

Figure 1 : Inter-relations des normes

1.	Portée et domaine d’application

La présente norme internationale spécifie un protocole qui est utilisé pour fournir le service réseau en mode sans connexion tel que décrit dans l’Addendum 1 à la définition de service réseau couvrant la transmission en mode sans connexion. Le protocole s’appuie sur la fourniture d’un service en mode sans connexion sous-jacent par des sous réseaux et ou liaisons de données réels. Le service sous-jacent en mode sans connexion supposé par le protocole peut être obtenu soit directement, à partir d’un sous réseau réel en mode sans connexion, soit indirectement, par le fonctionnement d’une fonction de convergence dépendante d’un sous réseau (SNDCF, Subnetwork Dependent Convergence Function) ou protocole (SNDCP) approprié sur un sous réseau réel en mode connexion, comme décrit dans la norme ISO 8648, "Organisation interne de la couche réseau".

La présente norme spécifie :
a)	les procédures pour la transmission sans connexion de données et d’informations de commande d’une entité réseau à une entité réseau homologue ;
b)	le codage des unités de données de protocole (PDU, protocol data units) utilisées pour la transmission des données et des informations de commande, comprenant un format d’en-tête de protocole de longueur variable ;
c)	les procédures pour l’interprétation correcte des informations de contrôle du protocole ; 
d)	les exigences fonctionnelles pour les mises en œuvre qui revendiquent la conformité à la norme.

Les procédures sont définies en termes :
a)	d’interactions entre les entités réseau homologues à travers l’échange des unités de données de protocole ;
b)	d’interactions entre une entité réseau et un utilisateur de service réseau par l’échange des primitives de service réseau ;
c)	d’interactions entre une entité réseau et un fournisseur de service sous-jacent par l’échange de primitives de service.

2.	Références

ISO 7498, “Systèmes de traitement de l’information --- Interconnexion des systèmes ouverts --- Modèle de référence de base"

DIS 7498/AD1, "Systèmes de traitement de l’information --- Interconnexion des systèmes ouvert --- Addendum à ISO 7498 couvrant la transmission en mode sans connexion"

ISO 8348, "Systèmes de traitement de l’information --- Télécommunications et échange d’informations entre systèmes --- Définition du service réseau"

ISO 8348/AD1,"Systèmes de traitement de l’information --- Télécommunications et échange d’informations entre systèmes --- Addendum à la définition du service réseau couvrant la transmission en mode sans connexion"

ISO 8348/AD2, "Systèmes de traitement de l’information --- Télécommunications et échange d’informations entre systèmes --- Addendum à la définition du service réseau couvrant l’adressage de couche réseau"*

DIS 8648, "Systèmes de traitement de l’information --- Télécommunications et échange d’informations entre systèmes --- Organisation interne de la couche réseau"

ISO 8509, Rapport technique --- "Conventions du service OSI"

ISO 9074, "Technique de description formelle fondée sur un modèle de transition d’état étendu"
________________________________
*À présent, à l’état de projet ; la publication est prévue prochainement.

Chapitre un : Généralités
3.	Définitions
3.1	Définitions du modèle de référence
Le présent document utilise les concepts suivants qui sont définis dans ISO 7498 :
(a)	Système d’extrémité (End system)
(b)	Entité réseau (Network entity)
(c)	Couche réseau (Network layer)
(d)	Protocole réseau (Network protocol)
(e)	Unité de données de protocole réseau (Network protocol data unit)
(f)	Relais réseau (Network relay)
(g)	Service réseau (Network service)
(h)	Point d’accès de service réseau (Network service access point)
(i)	Adresse de point d’accès de service réseau (Network service access point address)
(k)	Service
(l)	Unité de données de service (Service data unit)

3.2	Définitions des conventions de service
La présente norme de protocole utilise les termes suivants tirés du rapport technique sur les conventions de service OSI (ISO TR 8509) :
(a)	Fournisseur de service (Service provider)
(b)	Utilisateur de service (Service user)

3.3	Définitions de l’architecture de couche réseau
La présente norme de protocole utilise les termes suivants tirés de Organisation interne de la couche réseau (ISO 8648):
(a)	Système intermédiaire (Intermediate system)
(b)	Système relais (Relay system)
(c)	Sous réseau (Subnetwork)

3.4	Définitions de l’adressage de couche réseau
La présente norme de protocole utilise les termes suivants tirés de ISO 8348/AD2, Addendum à la définition de service réseau couvrant l’adressage de couche réseau :
(a)	Domaine d’adressage réseau (Network addressing domain)
(b)	Informations d’adresse de protocole réseau (Network protocol address information)
(c)	Point de rattachement de sous réseau (Subnetwork point of attachment)

3.5	Définitions supplémentaires
Pour les besoins de la présente norme de protocole, on applique les définitions suivantes  :

(a)	PDU dérivée (derived PDU) --- unité de données de protocole dont les champs sont identiques à ceux d’une PDU initiale, excepté qu’elle ne porte qu’un segment des données d’utilisateur provenant d’une demande N-UNITDATA.

(b)	PDU initiale --- unité de données de protocole qui porte la totalité des données userq provenant d’une demande N-UNITDATA.

(c)	affaire locale (local matter) --- décision prise par un système au sujet de son comportement dans la couche réseau qui n’est pas prescrite ou contrainte par la présente norme de protocole.

(d)	titre d’entité réseau (network-entity title) --- identifiant pour une entité réseau qui a la même syntaxe abstraite qu’une adresse NSAP, et qui peut être utilisée pour identifier sans ambiguïté une entité réseau dans un système d’extrémité ou intermédiaire.

(e)	réassemblage --- acte de régénération d’une PDU initiale à partir de deux ou plus PDU dérivées.

(f)	segment --- unité distincte de données consistant en tout ou partie des données d’utilisateur fournies dans la demande N-UNITDATA et livrées dans l’indication N-UNITDATA.

(g)	segmentation --- acte de génération de deux PDU dérivées ou plus à partir d’une PDU initiale ou dérivée. Les PDU dérivées portent ensemble la totalité des données d’utilisateur de la PDU initiale ou dérivée à partir de laquelle elles ont été générées.

Note : Il est possible qu’une telle PDU initiale ne soit jamais réellement générée pour une demande N-UNITDATA particulière, du fait de l’application immédiate de la segmentation.

4.	Symboles et abréviations
4.1	Unités de données
NSDU (Network Service Data Unit) : unité de données de service réseau
PDU (Protocol Data Unit)  : unité de données de protocole
SNSDU (Subnetwork Service Data Unit) : unité de données de service de sous réseau

4.2	Unités de données de protocole
DT PDU (Data Protocol Data Unit) : unité de données de protocole de données
ER PDU (Error Report Protocol Data Unit) : unité de données de protocole de rapport d’erreur

4.3	Champs d’unités de données de protocole
CS (Checksum) : somme de contrôle
DA (Destination Address) adresse de destination
DAL (Destination Address Length) longueur d’adresse de destination
DUID (Data Unit Identifier) identifiant d’unité de données
E/R (Error Report Flag) : fanion de rapport d’erreur
LI (Length Indicator) : indicateur de longueur
LT (Lifetime) : durée de vie
MS (More Segments Flag) : fanion Autres segments à venir
NLPID (Network Layer Protocol Identifier) : identifiant de protocole de couche réseau
SA (Source Address) : adresse de source
SAL (Source Address Length) : longueur de l’adresse de source
SL (Segment Length) : longueur de segment
SO (Segment Offset) : décalage du segment
SP (Segmentation Permitted Flag) : fanion Segmentation permise
TL (Total Length) : longueur totale
TP (Type) : Type
V/P (Version/Protocol Identifier Extension)  : extension d’identifiant de version/protocole

4.4	Paramètres
DA 	Adresse de destination
QS 	Qualité de service
SA 	Adresse de source

4.5	Divers
CLNP 	(Connectionless-mode Network Protocol) protocole de réseau en mode sans connexion
NS 	(Network Service) service réseau
NPAI 	(Network Protocol Address Information) informations d’adresse de protocole réseau
NSAP 	(Network Service Access Point) point d’accès de service réseau
SDU 	(Service Data Uni) unité de données de service
SN  	(Subnetwork) sous réseau
SNDCF 	(Subnetwork Dependent Convergence Function) fonction de convergence dépendante du sous réseau
SNDCP 	(Subnetwork Dependent Convergence Protocol) protocole de convergence dépendant su sous réseau
SNICP 	(Subnetwork Independent Convergence Protocol) protocole de convergence indépendant du sous réseau
SNPA 	(Subnetwork Point of Attachment) point de rattachement de sous réseau

5.	Vue d’ensemble du protocole
5.1	Organisation interne de la couche réseau
L’organisation architecturale de la couche réseau est décrite dans un document séparé, "Organisation interne de la couche réseau" (ISO 8648). La norme ISO 8648 identifie et catégorise la façon dont les fonctions peuvent être effectuées au sein de la couche réseau par les protocoles de couche réseau, fournissant ainsi un cadre uniforme pour décrire comment les protocoles qui fonctionnent, soit individuellement, soit en coopération, dans la couche réseau peuvent être utilisés pour fournir le service réseau OSI. Le présent protocole est conçu pour être utilisé dans le contexte de l’approche du protocole d’inter réseautage de la fourniture du service réseau en mode sans connexion défini dans la présente norme.

Ce protocole est destiné à être utilisé dans le rôle de protocole de convergence indépendant du sous réseau (SNICP). Un protocole qui satisfait au rôle de SNICP fonctionne pour construire le service réseau OSI sur un ensemble défini de services sous-jacents, effectuant les fonctions qui sont nécessaires pour prendre en charge l’apparence uniforme du service réseau OSI en mode sans connexion sur un ensemble homogène ou hétérogène de sous réseaux interconnectés. Ce protocole est défini pour s’accommoder de la variabilité lorsque les protocoles de convergence dépendants du sous réseau et/ou les protocoles d’accès de sous réseau ne fournissent pas toutes les fonctions nécessaires pour prendre en charge le service réseau en mode sans connexion sur tout ou partie du chemin allant d’un NSAP à un autre.

Comme décrit dans la norme ISO 8648, un protocole à la couche réseau peut tenir différents rôles dans différentes configurations. Bien que ce protocole soit conçu particulièrement pour tenir le rôle de SNICP dans le contexte de l’approche de protocole d’inter réseautage pour la fourniture du service réseau en mode sans connexion, il peut aussi être utilisé pour tenir d’autres rôles et peut donc être utilisé dans le contexte d’autres approches pour l’interconnexion de sous réseaux.

La spécification de ce protocole commence par une définition du service sous-jacent qu’il assume. Ce service est rendu disponible par le fonctionnement d’autres protocoles de couche réseau ou par la fourniture du service de liaison de données. Le service sous-jacent assumé par ce protocole est décrit au paragraphe 5.5.

5.2	Sous-ensembles du protocole
Deux sous ensembles appropriés du protocole complet sont définis pour permettre l’utilisation des caractéristiques connues des sous réseaux et qui ne sont donc pas indépendants du sous réseau.

Le sous ensemble inactif de protocoles de couche réseau est un sous ensemble de fonction nulle qui peut être utilisé quand on sait que les systèmes d’extrémité de source et de destination sont connectés par un seul sous réseau, et quand aucune des fonctions effectuées par le protocole complet n’est requise pour fournir le service réseau en mode sans connexion entre une paire quelconque de systèmes d’extrémité.

Le sous ensemble de protocole non segmenteur permet une simplification de l’en-tête lorsque on sait que les systèmes d’extrémité de source et de destination sont connectés par des sous réseaux dont la taille de l’unité de données de service est supérieure ou égale à une limite connue qui est assez grande pour que la segmentation ne soit pas requise. Ce sous ensemble est choisi en réglant le fanion Segmentation permise à zéro.

5.3	Adresses et titres
Les paragraphes qui suivent décrivent les adresses et les titres utilisés par le présent protocole.

5.3.1	Adresses
Les paramètres Adresse de source et Adresse de destination mentionnés au paragraphe 7.3 de la présente norme internationale sont les adresses de point d’accès de service réseau OSI. La syntaxe et la sémantique d’une adresse de point d’accès de service réseau OSI sont décrites dans un document séparé, ISO 8348/AD2, Addendum à la définition de service réseau couvrant l’adressage de couche réseau.

Le codage utilisé par ce protocole pour porter les adresses NSAP devra être le codage binaire préféré spécifié dans la norme ISO 8348/AD2 ; l’adresse NSAP entière, prise comme un tout, est représentée explicitement comme une chaîne d’octets binaires. Cette chaîne est portée dans sa totalité dans les champs d’adresse décrits au paragraphe 7.3. Les règles qui gouvernent la génération du codage binaire préféré sont décrites dans la norme ISO 8348/AD2.

5.3.2	Titres des entités réseau
Un titre d’entité réseau est un identifiant d’entité réseau dans un système d’extrémité ou un système intermédiaire. Les titres d’entité réseau sont alloués à partir du même espace de nom que les adresses NSAP, et la détermination de si une adresse est une adresse NSAP ou un titre d’entité réseau dépend du contexte dans lequel l’adresse est interprétée. Les entrées dans les paramètres Acheminement de source et Enregistrement de chemin définis aux paragraphes 7.5.4 et 7.5.5 sont des titres d’entité réseau. Les paramètres Adresse de source et Adresse de destination dans la PDU Rapport d’erreur définie au paragraphe 7.9.1.2 sont aussi des titres d’entité réseau.

Le codage utilisé par ce protocole pour porter des titres d’entité réseau devra aussi être le codage binaire préféré ; là encore, le titre d’entité réseau entier, pris comme un tout, est représenté explicitement comme une chaîne d’octets binaires. Cette chaîne est portée dans sa totalité dans les champs décrits aux paragraphes 7.5.4, 7.5.5, et 7.9.1.2.

5.4	Service fourni par la couche réseau
Le service fourni par ce protocole est le service réseau en mode sans connexion décrit dans la norme ISO 8348/AD1, Addendum à la définition de service réseau couvrant la transmission en mode sans connexion. Les primitives de service réseau fournies sont résumées au Tableau 1 :

Primitives	Paramètres	
N_UNITDATA         .Request
                                .Indication	N_Source_Address, 
N_Destination_Address, 
N_Quality_of_Service, 
N_Userdata	

Tableau 1 : Primitives de service pour le service sous-jacent

L’Addendum à la définition de service réseau couvrant la transmission en mode sans connexion (ISO 8348/AD1) déclare que la taille maximum d’une unité de données de service en mode sans connexion (NSDU) est limitée à 64  512 octets.

5.5	Service sous-jacent supposé par le protocole
Le service sous-jacent requis pour prendre en charge ce protocole est défini par les primitives suivantes :

Primitives	Paramètres	
SN_UNITDATA        .Request
                                .Indication	SN_Source_Address, 
SN_Destination_Address, 
SN_Quality_of_Service, 
SN_Userdata	

Tableau 2 : Primitives de service pour le service sous-jacent

Note : Ces primitives de service sont utilisées pour décrire l’interface abstraite qui existe entre la machine de protocole ISO 8473 et le sous réseau sous-jacent réel ou une fonction de convergence dépendante du sous réseau qui fonctionne sur un sous réseau réel ou une liaison de données réelle pour fournir le service sous-jacent requis.

5.5.1	Points de rattachement de sous-réseau
Les adresses de source et de destination spécifient les points de rattachement à un ou des sous réseaux publics ou privés impliqués dans la transmission. Les adresses des points de rattachement de sous réseau (SNPA) sont définies par chaque autorité de sous réseau individuel.

La syntaxe et la sémantique des SNPA ne sont pas définies dans la présente norme.

5.5.2	Qualité de service de sous-réseau
La qualité de service de sous réseau décrit les aspects d’un service sous-jacent en mode sans connexion qui sont seulement attribuables au service sous-jacent.

Associées à chaque transmission en mode sans connexion, certaines mesures de qualité de service sont demandées quand l’action de la primitive est initiée. Ces mesures (ou valeurs et options de paramètres) demandées se fondent sur une connaissance a priori du ou des services qui lui sont mis à disposition par le sous réseau. La connaissance de la nature et du type de service disponible est normalement obtenue avant une invocation du service en mode sans connexion sous-jacent.

Les paramètres de qualité de service identifiés pour le service en mode sans connexion sous-jacent peuvent dans certaines circonstances être directement déductibles ou transposés de ceux identifiés dans le service réseau en mode sans connexion. On peut employer les paramètres suivants, définis dans ISO 8348/AD1 "Addendum à la définition de service réseau couvrant la transmission en mode sans connexion" :
(a)	délai de transit ;
(b)	protection contre l’accès non autorisé ;
(c)	déterminants du coût ;
(d)	priorité ;
(e)	probabilité d’erreurs résiduelles.

Note : Pour les sous réseaux qui ne fournissent par eux-mêmes la qualité de service comme paramètre lorsque l’action primitive est initiée, la façon dont est préservée la sémantique du service demandé est une affaire locale. En particulier, il peut y avoir des instances dans lesquelles la qualité de service demandée ne peut être conservée. Dans de telles circonstances, on devra tenter de livrer l’unité de données de protocole à la qualité de service disponible quelle qu’elle soit.

5.5.3	Données d’utilisateur de sous-réseau
Le SN-Userdata est un multiple ordonné d’octets, et est transféré de façon transparente entre les points de rattachement du sous réseau spécifié.

Il est demandé au service sous-jacent assumé par le CLNP de prendre en charge une taille d’unité de données de service d’au moins 512 octets.

Si les tailles minimum d’unité de données de service prises en charge par tous les sous réseaux impliqués dans la transmission d’une certaine PDU sont connues comme assez grandes pour que la segmentation ne soit pas requise, le sous ensemble Non segmentation du protocole peut être utilisé.

5.5.4	Fonctions de convergence dépendantes du sous-réseau
Les fonctions de convergence dépendantes du sous réseau peuvent être effectuées pour fournir un service sous-jacent en mode sans connexion dans le cas où un sous réseau réel ne fournit pas par lui-même le service en mode sans connexion supposé par le protocole. Si un sous réseau fournit de lui-même un service en mode connexion, une fonction de convergence dépendante du sous réseau fournit une transposition dans le service sous-jacent requis. Les fonctions de convergence dépendantes du sous réseau peuvent aussi être requises dans les cas où les fonctions assumées par le service sous-jacent ne sont pas effectuées. Dans certains cas, cela peut exiger le fonctionnement d’un protocole explicite (c’est-à-dire, un protocole impliquant des échanges explicites d’informations de commande de protocole entre les entités homologues du réseau) dans le rôle de protocole de convergence dépendante du sous réseau (SNDCP). Cependant, il peut aussi y avoir des cas où la fonctionnalité requise pour tenir le rôle SNDCP consiste simplement en un ensemble de règles de manipulation du service sous-jacent.

5.6	Service supposé à partir de l’environnement local
Un service de temporisation doit être fourni pour permettre à l’entité de protocole de programmer les événements.

Trois primitives sont associées au service S-TIMER :
1	S--TIMER Request,
2	S--TIMER Response,
3	S--TIMER Cancel.

La primitive S--TIMER Request indique à l’environnement local qu’il devrait initier un temporisateur du nom et indice spécifiés et le maintenir pour la durée spécifiée par le paramètre de temps.

La primitive S--TIMER Response est initiée par l’environnement local pour indiquer que le délai demandé par la primitive S-TIMER Request correspondante est écoulé.

La primitive S--TIMER Cancel est une indication à l’environnement local que le ou les temporisateurs spécifiés devraient être annulés. Si l’indice du paramètre n’est pas spécifié, tous les temporisateurs du nom spécifié sont alors annulés ; autrement, le temporisateur du nom et de l’indice mentionné sont annulés. Si aucun temporisateur ne correspond aux paramètres spécifiés, l’environnement local n’effectue aucune action.

Les paramètres des primitives de service S--TIMER sont spécifiées dans le Tableau 3.

Primitives	Paramètres	
S--TIMER   .Request
                    .Response	S-Time, S-Name, S-Subscript
S-Name, S-Subscript	

Tableau 3 : Primitives de temporisation

Le paramètre Time indique la durée du temporisateur spécifié. Une étiquette d’identification est associée à un temporisateur au moyen du paramètre Name. Le paramètre Subscript (indice) spécifie une valeur pour différencier les temporisateurs du même nom. Le nom et l’indice pris ensemble constituent une référence unique au temporisateur.

Les temporisateurs utilisés en association avec une fonction de protocole spécifique sont définis par cette fonction de protocole.

Note : La présente norme internationale ne définit pas de valeurs spécifiques pour les temporisateurs. Les exemples décrits dans la présente norme ne sont pas obligatoires. Les valeurs de temporisateur devraient être choisies de façon à ce que la qualité de service demandée puisse être fournie, selon les caractéristiques connues du service sous-jacent.

Chapitre deux : Spécification du protocole
6.	Fonctions du protocole

Cette section décrit les fonctions effectuées au titre du protocole.

Toutes les fonctions ne doivent pas être effectuées par toutes les mises en œuvre. Le paragraphe 6.17 spécifie quelles fonctions peuvent être omises, et le comportement correct lorsque les fonctions requises ne sont pas mises en œuvre.

6.1	Fonction de composition de PDU
Cette fonction est chargée de la construction d’une unité de données de protocole conformément aux règles qui gouvernent le codage des PDU données à la Section 7. Les informations de contrôle du protocole exigées pour la livraison de l’unité de données à sa destination sont déterminées à partir de l’état en cours et des informations locales, et à partir des paramètres associés à la demande N-UNITDATA.

Les informations d’adresse de protocole réseau (NPAI) pour les champs Adresse de source et Adresse de destination de l’en-tête de la PDU sont déduites des paramètres NS-Source-Address et NS-Destination-Address. Les paramètres NS-Destination-Address et NS-Quality-of-Service, avec l’état en cours et les informations locales, sont utilisés pour déterminer quelles fonctions facultatives sont à choisir. Les données d’utilisateur passées de l’utilisateur de service réseau (NS-Userdata) forment le champ Données de l’unité de données de protocole.

Durant la composition de l’unité de données de protocole, un identifiant d’unité de données est alloué pour distinguer cette demande de transmettre les NS-Userdata à un utilisateur NS de destination particulier des autres demandes de cette sorte. Le générateur de la PDU doit choisir l’identifiant d’unité de données de telle façon qu’il reste unique (pour cette paire d’adresses de source et de destination) pour la durée de vie maximum de la PDU initiale dans le réseau ; cette règle s’applique à toutes les PDU dérivées de la PDU initiale par suite de l’application de la fonction de segmentation (voir le paragraphe 6.7). Les PDU dérivées sont considérées correspondre à la même PDU initiale, et donc la même demande N-UNITDATA, si elles ont la même adresse de source, adresse de destination, et identifiant d’unité de données.

L’identifiant d’unité de données est aussi disponible pour les fonctions auxiliaires telles que le rapport d’erreurs (voir le paragraphe 6.10).

La longueur totale de la PDU en octets est déterminée par le générateur et est placée dans le champ Longueur totale de l’en-tête de la PDU. Ce champ n’est pas changé dans les PDU dérivées pour la durée de vie de l’unité de données de protocole.

Lorsque le sous ensemble Non segmenté est employé, ni le champ Longueur totale ni le champ Identifiant d’unité de données ne sont présents. Les règles qui gouvernent la fonction de composition de PDU sont modifiées comme suit dans ce cas. Durant la composition de l’unité de données de protocole, la longueur totale de la PDU en octets est déterminée par le générateur et est placée dans le champ Longueur de segment de l’en-tête de la PDU. Ce champ n’est pas changé pendant la durée de vie de la PDU. Aucune identification d’unité de données n’est fournie.

6.2	Fonction de décomposition de PDU
Cette fonction est chargée de retirer les informations de contrôle de protocole de l’unité de donnée de protocole. Durant ce processus, les informations pertinentes pour la génération de l’indication N-UNITDATA sont déterminées comme suit. Les paramètres NS-Source-Address et NS-Destination-Address de l’indication N-UNITDATA sont récupérées auprès de la NPAI dans les champs Adresse de source et Adresse de destination de l’en-tête de PDU. Le champ Données de la PDU reçue est réservé jusqu’à ce que tous les segments de l’unité de données de service originale aient été reçues ; elles forment collectivement le paramètre NS-Userdata de l’indication N-UNITDATA. Les informations qui se rapportent à la qualité de service fournie durant la transmission de la PDU sont déterminées à partir de la qualité de service et des autres informations contenues dans la partie Options de l’en-tête de PDU. Ces informations constituent le paramètre NS-Quality-of-Service de l’indication N-UNITDATA.

6.3	Fonction d’analyse de format d’en-tête
Cette fonction détermine si le protocole décrit dans la présente norme est pleinement employé, ou si c’est un des sous ensembles qui y sont définis. Si l’unité de données de protocole a un identifiant de protocole de couche réseau indiquant que c’est une version standard du protocole, cette fonction détermine si une PDU reçue a atteint sa destination, en utilisant l’adresse de destination fournie dans la PDU. Si l’adresse de destination fournie dans la PDU identifie un NSAP servi par cette entité réseau, la PDU a alors atteint sa destination; sinon, elle doit être transmise.

Si l’unité de données de protocole a un identifiant de protocole de couche réseau qui indique que le sous ensemble Inactif de protocole de couche réseau est utilisé, aucune autre analyse de l’en-tête de PDU n’est requis. Dans ce cas, l’entité réseau détermine que, soit l’adresse de point de rattachement de sous réseau codée comme informations d’adresse de protocole réseau dans le protocole de sous réseau de support correspond directement à une adresse de NSAP desservie par cette entité réseau, soit qu’une erreur s’est produite. Si l’unité de données de protocole de sous réseau a été livrée correctement, la PDU peut alors être décomposée conformément aux procédures décrites pour ce protocole de sous réseau particulier.

6.4	Fonction de contrôle de durée de vie de PDU
Cette fonction est utilisée pour mettre en application la durée de vie maximum de PDU. Elle est étroitement associée à la fonction d’analyse de format d’en-tête. Cette fonction détermine si une PDU reçue peut être transmise ou si sa durée de vie allouée a expiré, auquel cas elle doit être éliminée.

Le fonctionnement de la fonction de contrôle de la durée de vie de PDU dépend du champ Lifetime dans l’en-tête de PDU. Ce champ contient, à tout moment, la durée de vie restante de la PDU (représentée en unités de 500 millisecondes). La durée de vie de la PDU initiale est déterminée par l’entité réseau génératrice, et placée dans le champ Lifetime de la PDU. Lorsque la fonction Segmentation est appliquée à une PDU, la valeur du champ Lifetime de la PDU initiale est copiée dans toutes les PDU dérivées.

La durée de vie de la PDU est décrémentée par chaque entité réseau qui traite la PDU. Lorsque une entité réseau traite une PDU, elle décrémente la durée de vie de la PDU d’au moins un. La valeur du champ Durée de vie de la PDU devra être décrémentée de plus de un si la somme du délai de transit dans le service sous-jacent d’où la PDU a été reçue, et du délai au sein du système qui traite la PDU excède ou est estimée excéder 500 millisecondes. Dans ce cas, le champ Durée de vie devrait être décrémenté de un pour chaque 500 milliseconde de délai supplémentaire. La détermination du délai n’a pas besoin d’être précise, mais lorsque une valeur précise ne peut pas être assurée, la valeur utilisée devra être une surestimation, non une sous-estimation.

Si le champ Durée de vie atteint une valeur de zéro avant la livraison de la PDU à la destination, elle doit être éliminée. La fonction de rapport d’erreur devra être invoquée comme décrit au paragraphe 6.10, "Fonction de rapport d’erreur", et peut résulter en la génération d’une PDU de rapport d’erreur. L’exécution par l’entité réseau de destination de la fonction de contrôle de durée de vie est une affaire locale.

6.5	Fonction de PDU de chemin
Cette fonction détermine l’entité réseau à laquelle une unité de données de protocole devrait être transmise et le service sous-jacent qui doit être utilisé pour atteindre cette entité réseau, en utilisant l’adresse de destination et la longueur totale de la PDU. Lorsque la segmentation est requise, la fonction de PDU de chemin détermine sur quel service sous-jacent les PDU dérivées/segments doivent être envoyés afin d’atteindre cette entité réseau. Le résultat de la fonction de PDU de chemin est passé à la fonction de transmission de PDU (avec la PDU elle-même) pour la suite du traitement. Le choix du service sous-jacent qui doit être utilisé pour atteindre le "prochain" système sur le chemin est initialement influencé par le paramètre NS-Quality-of-Service de la demande N-UNITDATA, qui spécifie la QS demandée par l’usager NS envoyeur. La question de savoir si cette QS doit être fournie directement par le CLNP, par la sélection du paramètre Maintenance de qualité de service et d’autres paramètres facultatifs, ou par les facilités de QS offertes par chacun des services sous-jacents est déterminée avant l’invocation de la fonction de transmission de PDU. Le choix du chemin par les systèmes intermédiaires peut ensuite être influencé par les valeurs du paramètre Maintenance de qualité de service (si il est présent) et d’autres paramètres facultatifs (si il en est).

6.6	Fonction de PDU de transmission
Cette fonction produit une primitive Demande SN-UNITDATA (voir au paragraphe 5.5) fournissant le sous réseau ou la SNDCF identifiée par la fonction de chemin de PDU à l’unité de données de protocole comme données d’utilisateur à transmettre, les informations d’adresse requises par ce sous réseau ou SNDCF pour identifier le "prochain" système au sein du domaine d’adressage spécifique du sous réseau (qui peut être un système intermédiaire ou le système d’extrémité de destination) et les contraintes de qualité de service (si il y en a) à considérer dans le traitement des données d’utilisateur.

Lorsque la PDU à transmettre est plus longue que la taille maximum de service de données d’utilisateur fournie par le service sous-jacent, la fonction de segmentation est appliquée (Voir au paragraphe 6.7).

6.7	Fonction de segmentation
La segmentation est effectuée lorsque la taille de l’unité de données de protocole est supérieure à la taille maximum de l’unité de données de service acceptée par le service sous-jacent pour transmettre la PDU.

La segmentation consiste à composer deux nouvelles PDU (des PDU dérivées) ou plus à partir de la PDU reçue. La PDU reçue peut être la PDU initiale, ou elle peut être une PDU dérivée. Toutes les informations de l’en-tête provenant de la PDU à segmenter, à l’exception des champs Longueur du segment et Somme de contrôle de la partie fixe, et le décalage de segment de la partie segmentation, sont dupliquées dans chaque PDU dérivée, incluant toute la partie adresse, l’identifiant d’unité de données et la longueur totale de la partie segmentation, et la partie options (si elle est présente).

Note : Les règles de transmission et de segmentation garantissent que la longueur de l’en-tête est la même pour tous les segments (PDU dérivées) de la PDU initiale, et est la même que la longueur d’en-tête de la PDU initiale. La taille d’un en-tête de PDU ne changera pas du fait d’une fonction de protocole.

Les données d’utilisateur encapsulées dans la PDU reçue sont divisées de telle sorte que les PDU dérivées satisfassent aux exigences de taille du champ Paramètres de données d’utilisateur de la primitive utilisée pour accéder au service sous-jacent.

Les PDU dérivées sont identifiées comme provenant de la même PDU initiale au moyen de  :
(a)	l’adresse de source,
(b)	l’adresse de destination,
(c)	l’identifiant d’unité de données.

La segmentation ne devra pas résulter en la génération d’une PDU dérivée contenant moins de huit (8) octets de données d’utilisateur.

Les champs suivants de l’en-tête de PDU sont utilisés en conjonction avec la fonction de segmentation :
(a)	Décalage de segment --- identifie, par rapport au début de la PDU initiale, l’octet de début du segment ;
(b)	Longueur de segment --- spécifie le nombre d’octets dans la PDU dérivée, incluant l’en-tête et les données ;
(c)	Fanion Segments à suivre --- il est établi à un si cette PDU dérivée ne contient pas, comme octet final des données d’utilisateur, l’octet final de la PDU initiale ; 
(d)	Longueur totale --- spécifie la longueur entière de la PDU initiale, incluant l’en-tête et les données.

Les PDU dérivées peuvent être resegmentées sans contraintes pour l’acheminement des PDU dérivées individuelles. Le fanion Segmentation permise est établi à un pour indiquer que la segmentation est permise. Si la PDU initiale ne doit jamais être segmentée pendant toute sa durée de vie dans le réseau, le fanion est réglé à zéro par l’entité réseau de source. Le réglage du fanion Segmentation permise ne peut pas être changé par une autre entité réseau pour toute la durée de vie de la PDU initiale et dans aucune PDU dérivée.

6.8	Fonction de réassemblage
La fonction de réassemblage reconstruit la PDU initiale à partir des PDU dérivées générées par le fonctionnement de la fonction de segmentation sur la PDU initiale (et, de façon récurrente, sur les PDU dérivées ultérieurement). Elle fournit une limite au temps durant lequel les segments (PDU dérivées) d’une PDU initiale seront conservés à un point de réassemblage avant d’être éliminés, afin que les ressources de réassemblage puissent être libérées lorsque on n’espère plus qu’aucun segment en cours de la PDU n’arrive au point de réassemblage. À réception d’une PDU dérivée, un temporisateur de réassemblage est initié avec une valeur qui indique la quantité de temps qui doit s’écouler avant qu’aucun segment en cours de la PDU initiale soit réputé perdu. Lorsque ce temporisateur arrive à expiration, tous les segments (PDU dérivées) de la PDU initiale détenus au point de réassemblage sont éliminés, les ressources allouées pour ces segments sont libérées, et si cela a été choisi, un rapport d’erreur est généré (voir au paragraphe 6.10). Alors que la relation exacte entre la durée de vie de réassemblage et la durée de vie de la PDU est une affaire locale, la fonction de réassemblage doit préserver l’intention de la durée de vie de la PDU. Par conséquent, la fonction de réassemblage doit éliminer les PDU dont la durée de vie serait autrement arrivée à expiration si elles n’avaient pas été sous le contrôle de la fonction de réassemblage.

Notes : 
1.	Les méthodes de limitation de la durée de vie du réassemblage sont exposées à l’Annexe B.
2.	Les fonctions de segmentation et de réassemblage sont destinées à être utilisées d’une façon telle que le moins de segments possibles soient générés à chaque point de segmentation et que le réassemblage ait lieu à la destination finale d’une PDU. Cependant, d’autres schémas qui
(a)	interagissent avec l’algorithme d’acheminement pour favoriser les chemins sur lesquels le moins de segments sont générés ;
(b)	génèrent plus de segments que ce qui est absolument exigé afin d’éviter une segmentation supplémentaire à certains points suivants ; ou
(c)	permettre un réassemblage partiel ou complet à un point intermédiaire le long du chemin
ne sont pas interdits. Les informations nécessaires pour permettre l’utilisation d’une de ces stratégies de remplacement peuvent être disponibles par l’utilisation d’une fonction de gestion de couche réseau ou par d’autres moyens.
3.	Le générateur de la PDU initiale détermine la valeur du fanion Segmentation permise dans la PDU initiale et dans toutes les PDU dérivées (si il y en a). Le réassemblage partiel ou complet dans un système intermédiaire (Note 2 (c) ci-dessus) ne peut pas changer cette valeur dans la PDU initiale ou dans aucune PDU qui en est dérivée, et ne peut donc pas ajouter ou retirer la partie segmentation de l’en-tête.

6.9	Fonction de PDU d’élimination
Cette fonction effectue toutes les actions nécessaires pour libérer les ressources réservées par l’entité réseau lorsque une des situations suivantes est rencontrée (Note : la liste n’est pas exhaustive) :
(a)	une violation de la procédure du protocole s’est produite  ;
(b)	une PDU est reçue dont la somme de contrôle n’est pas cohérente avec son contenu  ;
(c)	une PDU est reçue, mais à cause d’un encombrement local, elle ne peut pas être traitée  ;
(d)	une PDU est reçue dont l’en-tête ne peut pas être analysé ;
(e)	une PDU est reçue qui ne peut pas être segmentée et ne peut pas être transmise parce que sa longueur excède la taille maximum d’unité de données de service prise en charge par tous les services sous-jacents disponibles pour la transmission de la PDU à la prochaine entité réseau sur le chemin choisi  ;
(f)	une PDU est reçue dont l’adresse de destination est injoignable ou inconnue  ;
(g)	un acheminement de source incorrect ou invalide a été spécifié. Cela peut inclure une erreur de syntaxe dans le champ Acheminement de source, une adresse inconnue ou injoignable dans le champ Acheminement de source, ou un chemin qui n’est pas acceptable pour d’autres raisons  ;
(h)	une PDU est reçue dont la durée de vie de PDU a expiré ou dont la durée de vie expire durant le réassemblage  ;
(i)	une PDU est reçue qui contient une option non acceptée.

6.10	Fonction de rapport d’erreur
6.10.1	Généralités
Cette fonction cause une tentative de retourner une PDU de rapport d’erreur à l’entité réseau de source lorsque une unité de données de protocole est éliminée conformément au paragraphe 6.9.

La PDU de rapport d’erreur identifie la PDU éliminée, spécifie le type d’erreur détectée, et identifie la localisation dans l’en-tête de la PDU éliminée à laquelle l’erreur a été détectée. Au moins l’en-tête entier de la PDU éliminée (et, à la discrétion du générateur de la PDU de rapport d’erreur, aucun, tout, ou une partie des champs de données) est placé dans le champ de données de la PDU de rapport d’erreur.

Le générateur d’une PDU de données peut contrôler la génération des PDU de rapport d’erreur. Un fanion Rapport d’erreur dans la PDU originale est établi par l’entité réseau de source pour indiquer qu’une PDU de rapport d’erreur va être retournée si la PDU initiale ou une des PDU dérivées de celle-ci est éliminée ; si le fanion n’est pas établi, les rapports d’erreur sont à supprimer.

Notes :
1.	La suppression des PDU de rapport d’erreur est contrôlée par l’entité réseau génératrice et non par l’utilisateur NS. Le générateur devrait veiller à ce que les rapports d’erreur ne soient pas supprimés pour toutes les PDU générées.
2.	La non réception d’une PDU de rapport d’erreur n’implique pas une livraison correcte d’une PDU produite par une entité réseau de source.

6.10.2	Exigences
Une PDU de rapport d’erreur ne devra pas être générée pour rapporter l’élimination d’une PDU de rapport d’erreur.

Une PDU de rapport d’erreur ne devra pas être générée pour rapporter l’élimination d’une PDU de données sauf si cette PDU a le fanion Rapport d’erreur établi pour permettre les rapports d’erreur.

Si une PDU de données est éliminée, et si le fanion Rapport d’erreur (E/R) a été établi pour permettre les rapports d’erreur, une PDU de rapport d’erreur devra être générée si la raison de l’élimination est une des raisons d’élimination énumérées au paragraphe 6.9, sous réserve des conditions décrites au paragraphe 6.10.4.

Note : si une PDU de données avec le fanion E/R établi pour permettre les rapports d’erreur est éliminée pour toute autre raison, une PDU E/R peut être générée (comme option de mise en œuvre).

6.10.3	Traitement des rapports d’erreur
Une PDU de rapport d’erreur est composée d’informations contenues dans l’en-tête de la PDU de données éliminée à laquelle le rapport d’erreur se réfère. Le contenu du champ Adresse de source de la PDU de données éliminée est utilisé comme adresse de destination de la PDU de rapport d’erreur. Cette valeur, qui dans le contexte de la PDU de données était utilisé comme une adresse de NSAP, est utilisée dans le contexte de la PDU E/R comme titre d’entité réseau de l’entité réseau qui génère la PDU de données. Le titre d’entité réseau du générateur de la PDU E/R est porté dans le champ Adresse de source de l’en-tête de la PDU E/R. La valeur du champ Durée de vie est déterminé conformément au paragraphe 6.4. Les paramètres facultatifs sont choisis conformément au paragraphe 6.10.4.

La segmentation des PDU de rapport d’erreur n’est pas permise ; donc, aucune partie Segmentation n’est présente. La longueur totale de la PDU E/R en octets est placée dans le champ Longueur de segment de l’en-tête de la PDU E/R. Ce champ n’est pas changé pendant la durée de vie de la PDU E/R. Si le générateur de la PDU E/R détermine que la taille de la PDU E/R excède la taille maximum d’unité de données de service du service sous-jacent, la PDU E/R devra être tronquée à la taille maximum d’unité de données de service (voir le paragraphe 5.5.3) et transmise sans autre changement. Les PDU de rapport d’erreur sont acheminées et transmises par les entités réseau des systèmes intermédiaires de la même façon que les PDU de données.

Note : l’exigence que le service sous-jacent assumé par le CLNP doit être capable de prendre en charge une taille d’unité de données de service d’au moins 512 octets garantit que l’en-tête entier de la PDU de données éliminée peut être convoyé dans le champ de données de toute PDU E/R.

Lorsque une PDU E/R est décomposée en atteignant sa destination, les informations qui peuvent être utilisées pour interpréter le rapport d’erreur et agir sur lui sont obtenues comme suit  : le titre d’entité réseau récupéré de la NPAI dans le champ Adresse de source de l’en-tête de la PDU E/R est utilisé pour identifier l’entité réseau qui a généré le rapport d’erreur. La raison de la génération du rapport d’erreur est extraite de la partie Options de l’en-tête de PDU. L’en-tête entier de la PDU de données éliminée (et tout ou partie des données d’utilisateur originales) est extrait du champ de données de la PDU E/R pour aider à déterminer la nature de l’erreur.

6.10.4	Relations entre les options de PDU de données et les rapports d’erreur
La génération d’un rapport d’erreur est affectée par les options qui sont présentes dans la PDU de données correspondante. La présence d’options dans la PDU de données originale non prises en charge par le système qui a éliminé cette PDU peut causer la suppression d’un rapport d’erreur même si la PDU de données originale indiquait qu’un rapport d’erreur devrait être généré en cas d’élimination.

Le traitement d’un rapport d’erreur est aussi affecté par les options qui sont présentes dans la PDU de données correspondante. En particulier, les options choisies pour la PDU de données originale affectent les options qui seront incluses dans la PDU de rapport d’erreur correspondante. Le choix des options pour une PDU de rapport d’erreur est gouverné par les exigences suivantes :

(a)	Si l’option Priorité ou l’option Maintenance de QS est choisie dans la PDU de données originale, et si le système qui génère la PDU de rapport d’erreur accepte l’option, la PDU de rapport d’erreur devra alors spécifier l’option.

(b)	Si l’option Sécurité est choisie dans la PDU de données, et si le système qui génère le rapport d’erreur accepte cette option, la PDU de rapport d’erreur devra alors spécifier l’option en utilisant la valeur qui était spécifiée dans la PDU de données originale. Si le système ne prend pas en charge l’option Sécurité, un rapport d’erreur ne doit pas être généré pour une PDU de données qui choisit l’option Sécurité.

(c)	Si l’option Route de source complète est choisie dans la PDU de données originale, et si le système qui génère la PDU de rapport d’erreur accepte cette option, le rapport d’erreur devra alors spécifier l’option Route de source complète. La valeur du paramètre Route de source est obtenue en extrayant de la PDU de données originale cette portion de la route de source complète qui a déjà été traversée, et en inversant l’ordre des titres d’entité réseau qui comprend la liste. Si le système ne prend pas en charge l’option Route de source complète, un rapport d’erreur ne doit pas être généré pour une PDU de données qui a choisi l’option Route de source complète.

(d)	Les options Bourrage, Acheminement partiel de source, et Enregistrement de chemin, si elles sont prises en charge, peuvent être spécifiées dans la PDU de rapport d’erreur.
Note : les valeurs des paramètres facultatifs en (d) ci-dessus peuvent être déduites selon des règles locales, ou elles peuvent se fonder sur les valeurs correspondantes dans la PDU de données originale.

6.11	PDU de détection d’erreur d’en-tête
La fonction de PDU de détection d’erreur d’en-tête protège contre les défaillances des entités réseau de système intermédiaire ou d’extrémité dues au traitement d’informations erronées dans l’en-tête de PDU. La fonction est réalisée par une somme de contrôle calculée sur l’en-tête de PDU entier. La somme de contrôle est vérifiée à chaque point où est traité l’en-tête de PDU. Si le calcul de la somme de contrôle échoue, la PDU doit être éliminée. Si les champs d’en-tête de PDU sont modifiés (par exemple, à cause de l’exécution de la fonction de durée de vie) la somme de contrôle est alors modifiée afin que la somme de contrôle reste valide.

L’utilisation de la fonction de détection d’erreur d’en-tête est facultative, et elle est choisie par l’entité réseau génératrice. Si la fonction n’est pas utilisée, le champ Somme de contrôle de l’en-tête de PDU est réglé à zéro.

Si la fonction est choisie par l’entité réseau génératrice, la valeur du champ Somme de contrôle cause la satisfaction des formules suivantes :

(La somme de i=1 à L de a(i)) (mod 255) = 0

(La somme de i=1 à L de (L - i + 1) * a(i)) (mod  255) = 0

où L = nombre d’octets dans l’en-tête de PDU, et a(i) = valeur de l’octet à la position i. Le premier octet dans l’en-tête de PDU est considéré occuper la position i = 0.

Lorsque la fonction est utilisée, aucun octet du champ Somme de contrôle ne doit être réglé à zéro.

Notes :
1.	Pour s’assurer que des modifications involontaires pendant le traitement d’une PDU par un système intermédiaire (par exemple, à cause d’une faute de mémorisation) peuvent quand même être détectées par la fonction de détection d’erreur d’en-tête de PDU, une entité réseau de système intermédiaire ne doit pas recalculer la somme de contrôle pour l’en-tête entier, même si des champs sont modifiés.
2.	L’Annexe C contient les descriptions des algorithmes qui peuvent être utilisés pour calculer la valeur correcte du champ Somme de contrôle lorsque la PDU est créée, et pour mettre à jour la valeur du champ Somme de contrôle lorsque l’en-tête est modifié.

6.12	Fonction de bourrage
La fonction de bourrage est fournie pour permettre de réserver de l’espace dans l’en-tête de PDU qui n’est pas utilisé pour prendre en charge une autre fonction. L’alignement des octets doit être conservé.

Note : un exemple d’utilisation de cette fonction est de faire commencer le champ Données d’une PDU sur une frontière pratique pour l’entité réseau génératrice, comme une limite de mot informatique.

6.13	Sécurité
La fourniture de services de protection (par exemple, authentification de l’origine des données, confidentialité des données, et intégrité des données d’une seule NSDU en mode sans connexion) est effectuée par la fonction de sécurité.

La fonction de sécurité se rapporte au paramètre de qualité de service Protection contre l’accès non autorisé décrit dans la norme ISO 8348/AD1, "Addendum à la définition de service réseau couvrant la transmission en mode sans connexion". La fonction est réalisée par le choix du paramètre Sécurité dans la partie options de l’en-tête de PDU.

La présente norme ne spécifie pas la façon dont les services de protection doivent être fournis ; elle donne juste le codage des informations de sécurité dans l’en-tête de PDU. Pour faciliter l’inter fonctionnement entre les systèmes d’extrémité et les système relais du réseau en évitant des interprétations différentes du même codage, le paragraphe 7.5.3 décrit un moyen pour distinguer les codages de sécurité définis par l’utilisateur des codages de sécurité normalisés.

Note : à titre de considération de mise en œuvre, l’authentification de l’origine des données peut être fournie par l’utilisation d’une somme de contrôle générée cryptographiquement ou chiffrée (unique à partir du mécanisme de détection d’erreur d’en-tête de PDU) ; la confidentialité des données et l’intégrité des données peuvent être fournies via les mécanismes de contrôle de chemin.

6.14	Fonction d’acheminement de source
La fonction d’acheminement de source (Source Routing) permet au générateur de spécifier le chemin que doit prendre la PDU générée. L’acheminement de source peut seulement être choisi par le générateur d’une PDU. L’acheminement de source est réalisé en utilisant une liste de titres d’entité réseau détenus dans un paramètre au sein de la partie options de l’en-tête de PDU. La longueur de ce paramètre est déterminée par l’entité réseau génératrice, et ne change pas lorsque la PDU traverse le réseau.

Le paramètre Route de source inclut des informations utilisés par le système d’extrémité générateur lorsque il détermine le chemin initial de la PDU. Seuls les titres des entités réseau de système intermédiaire sont incluses dans la liste ; le titre d’entité réseau de la destination de la PDU n’est pas inclus dans la liste.

Un indicateur associé à la liste des titres d’entité réseau identifie la prochaine entrée à utiliser dans la liste ; cet indicateur est avancé par le receveur de la PDU quand le prochain titre de la liste correspond au sein. L’indicateur est mis à jour lorsque la PDU est transmise afin d’identifier l’entrée appropriée à chaque étape de relais.

Deux formes de la fonction d’acheminement de source sont fournies. La première forme, appelée acheminement de source complet, exige que le chemin spécifié soit emprunté ; c’est-à-dire que seuls les systèmes identifiés dans la liste peuvent être visités par la PDU en route pour la destination, et chaque système doit être visité dans l’ordre spécifié. Si le chemin spécifié ne peut pas être emprunté, la PDU doit être éliminée. Le paragraphe 6.10 décrit les circonstances dans lesquelles une tentative doit être faite d’informer le générateur de l’élimination en utilisant la fonction de rapport d’erreur.

La seconde forme est appelée l’acheminement de source partiel. Là encore, chaque système identifié dans la liste doit être visité dans l’ordre spécifié en route pour la destination. Cependant, avec cette forme d’acheminement de source, la PDU peut prendre tout chemin nécessaire pour arriver au prochain système intermédiaire dans la liste, ce qui peut inclure de visiter des systèmes intermédiaires qui ne sont pas identifiés dans la liste. La PDU ne sera pas éliminée (pour des raisons en rapport avec l’acheminement de source) sauf si un des systèmes spécifiés ne peut pas être atteint par un des chemins disponibles.

6.15	Fonction d’enregistrement de chemin

La fonction d’enregistrement de chemin (Record Route) enregistre le ou les chemins empruntés par une PDU lorsque elle traverse une série de systèmes intermédiaires. Un chemin enregistré consiste en une liste de titres d’entité réseau détenus dans un paramètre au sein de la partie options de l’en-tête de PDU. La longueur de ce paramètre est déterminée par l’entité réseau génératrice, et ne change pas lorsque la PDU traverse le réseau.

La liste est construite lorsque la PDU est transmise le long d’un chemin vers sa destination. Seuls les titres des entités réseau de système intermédiaire sont incluses dans le chemin enregistré. Le titre d’entité réseau du générateur de la PDU n’est pas enregistré dans la liste.

Lorsque une entité réseau de système intermédiaire traite une PDU contenant le paramètre Record Route, le système ajoute son propre titre d’entité réseau à la fin de la liste des titres d’entité réseau enregistrés. Un indicateur est tenu pour identifier le prochain octet disponible à utiliser pour enregistrer le chemin. Cet indicateur est mis à jour comme suit lorsque des entrées sont ajoutées à la liste. La longueur de l’entrée à ajouter à la liste est ajoutée à la valeur de l’indicateur du prochain octet disponible, et cette somme est comparée à la longueur du paramètre Record Route. Si l’addition de l’entrée à la liste excèderait la taille du paramètre, l’indicateur de prochain octet disponible est réglé de façon à indiquer que l’enregistrement de chemin est terminé. Le titre d’entité réseau n’est pas ajouté à la liste. La PDU peut encore être transmise à sa destination finale, sans autre addition de titres d’entité réseau.

Si l’addition de l’entrée n’excèderait pas la taille du paramètre Record Route, l’indicateur de prochain octet disponible est mis à jour avec la nouvelle valeur, et le titre d’entité réseau est ajouté en tête de la liste après que les autres entrées ont été déplacées.

Deux formes de la fonction Record Route sont fournies. La première forme est appelée enregistrement de chemin complet. Elle exige que la liste des titres d’entité réseau soit un enregistrement complet et précis de tous les systèmes intermédiaires visités par une PDU (incluant les PDU dérivées) sauf quand un manque d’espace dans le champ Option d’enregistrement de chemin cause la terminaison de l’enregistrement de chemin, comme décrit ci-dessus. Lorsque l’enregistrement de chemin complet est choisi, le réassemblage de PDU aux systèmes intermédiaires est effectué seulement quand les PDU dérivées qui sont réassemblées prennent toutes le même chemin ; autrement, la PDU est éliminée, et si cela est choisi, un rapport d’erreur est généré (voir le paragraphe 6.10).

La seconde forme est appelée l’enregistrement partiel de chemin. Il exige aussi un enregistrement des systèmes intermédiaires visités par une PDU. Lorsque l’enregistrement partiel de chemin est choisi, le réassemblage de PDU aux systèmes intermédiaires est toujours permis. Lorsque le réassemblage est effectué à un système intermédiaire, le chemin enregistré dans toutes les PDU dérivées peut être placé dans la PDU résultant du réassemblage.

Note : la fonction Record Route est destinée à être utilisée dans le diagnostic des problèmes de sous réseau et/ou pour fournir un chemin de retour qui pourrait être utilisé comme route de source dans une PDU ultérieure.

6.16	Fonction de maintenance de qualité de service

La fonction Maintenance de qualité de service fournit aux entités réseau dans les systèmes intermédiaires des informations qui peuvent être utilisées pour prendre des décisions d’acheminement lorsque de telles décisions affectent la QS globale fournie aux utilisateurs NS. Ces informations sont convoyées aux entités réseau des systèmes intermédiaire dans un paramètre de la partie options de l’en-tête de PDU.

Dans les instances où la QS demandée ne peut pas être tenue, les entités réseau des systèmes intermédiaire devront tenter de livrer la PDU à une QS différente de la QS demandée. Les entités réseau des systèmes intermédiaire ne fournissent pas nécessairement une notification d’échec à satisfaire la qualité de service demandée.

6.17	Fonction de priorité

La fonction Priorité permet qu’une PDU avec une valeur de priorité numériquement supérieure soit traitée de façon préférentielle par rapport aux autres PDU qui ont des valeurs de priorité numériquement inférieures. La fonction est réalisée par le choix d’un paramètre dans la partie options de l’en-tête de PDU.

La plus basse valeur de priorité est zéro ; une entité réseau de source qui ne prend pas en charge la fonction Priorité doit régler la valeur de priorité à zéro. La fonction Priorité donne le moyen d’utiliser de façon préférentielle les ressources des entités réseau des systèmes d’extrémité et intermédiaires, comme les files d’attente de transmission sortante et les mémoires tampon, pour traiter d’abord les PDU de plus forte priorité, avant les PDU de priorité inférieure. L’action spécifique entreprise par une entité réseau individuelle pour prendre en charge la fonction Priorité est une affaire locale.

6.18	Fonction de notification d’encombrement

Pour permettre aux utilisateurs NS d’entreprendre l’action appropriée lorsque ils rencontrent de l’encombrement chez le fournisseur NS, les systèmes intermédiaires peuvent informer l’entité réseau de destination de l’encombrement en utilisant un fanion dans le paramètre Maintenance de QS dans la partie options de l’en-tête de PDU. La valeur de ce fanion est initialement réglée à zéro (0) par le générateur de la PDU et peut être réglée à un (1) par tout système intermédiaire qui traite la PDU, pour indiquer qu’il rencontre de l’encombrement. Les critères pour déterminer quand cette action doit être prise sont une affaire locale.

Note : l’encombrement correspond normalement à l’indisponibilité de l’espace de mémoire tampon pour conserver les files d’attente de sortie. Une politique appropriée pour indiquer l’encombrement peut se fonder sur la profondeur de la file d’attente de sortie choisie par une PDU (selon son adresse de destination ou d’autres informations d’acheminement). Lorsque la profondeur d’une certaine file d’attente de sortie excède une certaine proportion de la profondeur de cette file d’attente, un système intermédiaire va commencer à éliminer des PDU. Le système intermédiaire va établir le fanion Encombrement rencontré dans la prochaine PDU à transmettre et peut continuer à le faire jusqu’à ce que les conditions se soient améliorées.

6.19	Classification des fonctions
Les mises en œuvre ne sont pas obligées de prendre en charge toutes les fonctions décrites aux paragraphes 6.1 à 6.18. Les fonctions se divisent en trois catégories :

Type 1 :	ces fonctions doivent être prises en charge.

Type 2 :	ces fonctions peuvent être prises ou non en charge. Si une mise en œuvre ne prend pas en charge une fonction de type 2, et si la fonction est choisie dans une PDU, cette PDU doit alors être éliminée, et une PDU de rapport d’erreur doit être générée et transmise à l’entité réseau génératrice, pourvu que le fanion Rapport d’erreur soit établi et que les conditions du paragraphe 6.10.4 soient satisfaites.

Type 3 :	ces fonctions peuvent être prises ou non en charge. Si une mise en œuvre ne prend pas en charge une fonction de type 3, et si la fonction est choisie dans une PDU, la fonction n’est alors pas effectuée, et la PDU est traitée exactement comme si la fonction n’avait pas été choisie. L’unité de données de protocole ne devra pas être éliminée pour cette raison.

Le Tableau 4 montre comment les fonctions sont divisées entre ces trois catégories :

Fonction	Protocole plein	Sous ensemble sans segmentation	sous ensemble inactif	
Composition de PDU	1	1	1	
Décomposition de PDU	1	1	1	
Analyse de format d’en-tête	1	1	1	
Contrôle de durée de vie de PDU	1	1	N/A	
Acheminement de PDU	1	1	N/A	
Transmission de PDU	1	1	N/A	
Segmentation de PDU	1	N/A	N/A	
Réassemblage de PDU	1	N/A	N/A	
Élimination de PDU	1	1	N/A	
Rapport d’erreur (Note 1)	1	1	N/A	
Détection d’erreur d’en-tête (Note 1)	1	1	N/A	
Sécurité	1	2	N/A	
Acheminement complet de source	1	2	N/A	
Enregistrement complet de chemin	2	2	N/A	
Acheminement partiel de source	3	3	N/A	
Enregistrement partiel de chemin	3	3	N/A	
Priorité	3	3	N/A	
Maintenance de QS	3	3	N/A	
Notification d’encombrement	3	3	N/A	
Bourrage	3	3	N/A	

Table 4 : Catégorisation des fonctions du protocole

Notes :
1.	Bien que les fonctions de rapport d’erreur et de détection d’erreur d’en-tête doivent être fournies, elles ne sont fournies que lorsque choisies par l’utilisateur de service réseau envoyeur.
2.	La raison de l’inclusion des fonctions de type 3 est que dans le cas de certaines fonctions, il est plus important de transmettre les PDU entre les systèmes intermédiaires ou de les livrer à un système d’extrémité qu’il ne l’est de prendre en charge les fonctions. Les fonctions de type 3 devraient être utilisées dans les cas où elles ont une nature d’avis ; elles ne peuvent pas causer l’élimination d’une PDU lorsque elle ne sont pas prises en charge.

7.	Structure et codage des PDU
7.1	Structure
Toutes les unités de données de protocole doivent contenir un nombre entier d’octets. Les octets dans une PDU sont numérotés en commençant à un (1) et en augmentant dans l’ordre dans lequel ils sont soumis au service sous-jacent. Les bits dans un octet sont numérotés de un (1) à huit (8), où le bit un (1) est le bit de moindre poids.

Lorsque des octets consécutifs sont utilisés pour représenter un nombre binaire, l’octet du plus faible numéro a la valeur de plus fort poids.

Toute mise en œuvre qui prend en charge le présent protocole doit déclarer dans sa spécification la façon dont les octets sont transférés, en utilisant les termes "bit de poids fort" et "bit de moindre poids". Les PDU du présent protocole sont définis en utilisant les termes "bit de poids fort" et "bit de moindre poids".

Note : quand dans cette section le codage d’une PDU est représenté par un diagramme, on utilise la représentation suivante  :
a)	les octets de plus faible numéro sont à gauche, ceux de plus fort numéro sont à droite ;
b)	dans un octet, le bit huit (8) est à gauche et le bit un (1) à droite.

Les PDU devront contenir, dans l’ordre suivant :
1.	la partie fixe ;
2.	la partie adresse ;
3.	la partie segmentation, si elle est présente ;
4.	la partie options, si elle est présente ;
et le champ de données, si il est présent. Cette structure est illustrée par la Figure 2:

7.2	Partie fixe
7.2.1	Généralités
La partie fixe de l’en-tête de PDU contient fréquemment les paramètres parmi lesquels le code de type (DT ou E/R) de l’unité de données de protocole. La longueur et la structure de la partie fixe sont définies par le code de PDU.

La partie fixe a le format suivant :

Partie	Décrite dans
Fixe	paragraphe 7.2
Adresse	paragraphe 7.3
Segmentation	paragraphe 7.4
Options	paragraphe 7.5
Données	paragraphe 7.6

Figure 2 : Structure de PDU

                                                        Octet
             ________________________________________
             | identifiant protocole couche réseau  |    1
             |______________________________________|
             |         Indicateur de longueur       |    2
             |______________________________________|
             |    Extension ID version/protocole    |    3
             |______________________________________|
             |          Durée de vie                |    4
             |______________________________________|
             |    SP  vline M S vline E/R | Type    |    5
             |______________________________________|
             |        Longueur de segment           |   6, 7
             |______________________________________|
             |          Somme de contrôle           |   8, 9
             |______________________________________|

Figure 3 : En-tête de PDU – partie fixe

7.2.2	Identifiant de protocole de couche réseau
La valeur de ce champ est réglé au binaire 1000 0001 pour identifier ces protocoles de couche réseau comme ISO 8473, Protocole pour la fourniture du service réseau en mode sans connexion. La valeur de ce champ est réglé au binaire 0000 0000 pour identifier le sous ensemble des protocoles de couche réseau inactifs.

7.2.3	Indicateur de longueur
La longueur est indiquée par un nombre binaire, avec une valeur maximum de 254 (1111 1110). La longueur indiquée est la longueur en octets de l’en-tête, comme décrit au paragraphe 7.1. La valeur 255 (1111 1111) est réservée pour de futures extensions éventuelles.

Note : les règles de transmission et de segmentation garantissent que la longueur de l’en-tête est la même pour tous les segments (PDU dérivées) de la PDU initiale, et est la même que la longueur d’en-tête de la PDU initiale. Le fonctionnement d’aucune fonction du protocole ne changera la taille d’un en-tête de PDU.

7.2.4	Extension d’identifiant de version/protocole
La valeur de ce champ est le binaire 0000 0001, qui identifie la version 1 de la norme ISO 8473, Protocole pour la fourniture du service réseau en mode sans connexion.

7.2.5	Durée de vie de PDU
Le champ Durée de vie de PDU est codé comme un nombre binaire représentant la durée de vie restante de la PDU, en unités de 500 millisecondes.

7.2.6	Fanions
7.2.6.1	Segmentation permise
Le fanion Segmentation permise indique si la segmentation est permise. Sa valeur est déterminée par le générateur de la PDU et ne peut pas être changée par une autre entité réseau pendant la durée de vie de la PDU initiale et d’aucune PDU dérivée.

Une valeur de un (1) indique que la segmentation est permise. Une valeur de zéro (0) indique que le sous ensemble Non segmentation du protocole est employé. Lorsque la valeur de zéro est choisie, la partie segmentation de l’en-tête de PDU n’est pas présente, et le champ Longueur de segment sert de champ Longueur totale (voir au paragraphe 7.2.8).

7.2.6.2 	Segments à venir
Le fanion Segments à venir indique si le segment de données dans cette PDU contient (comme dernier octet) le dernier octet des données d’utilisateur dans la NSDU. Lorsque le fanion Segments à venir est établi à un (1), la segmentation a eu lieu et le dernier octet de la NSDU n’est pas contenu dans cette PDU. Le fanion Segments à venir ne peut pas être établi à un (1) si le fanion Segmentation permise n’est pas établi à un (1).

Lorsque le fanion Segments à venir est réglé à zéro (0), le dernier octet de la partie Données de la PDU est le dernier octet de la NSDU.

7.2.6.3	Rapport d’erreur
Lorsque le fanion Rapport d’erreur est établi à un, les règles du paragraphe 6.10 sont utilisées pour déterminer si il faut générer une PDU de rapport d’erreur au cas où il serait nécessaire d’éliminer cette PDU de données.

Lorsque le fanion Rapport d’erreur est réglé à zéro, l’élimination de la PDU de données ne causera pas la génération d’une PDU de rapport d’erreur.

7.2.7	Code de type
Le champ Code de type identifie le type de l’unité de donnée de protocole. Le Tableau 5 donne les valeurs permises :

              __________________________________________________
              |         | Bits               5   4   3   2   1 |
              |_________|______________________________________|
              | PDU DT  |                    1   1   1   0   0 |
              |_________|______________________________________|
              | PDU E/R |                    0   0   0   0   1 |
              |_________|______________________________________|

Tableau 5 : Types de PDU valides

7.2.8	Longueur de segment de PDU
Le champ Longueur de segment spécifie la longueur entière, en octets, de la PDU dérivée, incluant à la fois l’en-tête et les données (si il y en a). Lorsque le protocole complet est employé et qu’une PDU n’est pas segmentée, la valeur de ce champ est identique à la valeur du champ Longueur totale situé dans la partie Segmentation de l’en-tête.

Lorsque le sous ensemble Non segmentation du protocole est employé, aucune partie segmentation n’est présente dans l’en-tête. Dans ce sous ensemble, le champ Longueur de segment spécifie la longueur entière de la PDU initiale, incluant à la fois l’en-tête et les données (si il y en a). Le champ Longueur de segment n’est pas changé pendant la durée de vie de la PDU.

7.2.9	Somme de contrôle de PDU
La somme de contrôle est calculée sur l’en-tête de PDU entier. Pour la PDU de données, cela inclut les parties Segmentation et Options (si présente). Pour la PDU de rapport d’erreur, cela inclut aussi le champ Raison de l’élimination.

Une valeur de somme de contrôle de zéro est réservée pour indiquer qu’il faut l’ignorer. Le fonctionnement de la fonction Détection d’erreur d’en-tête de PDU (paragraphe 6.11) assure que la valeur zéro ne représente pas une somme de contrôle valide. Une valeur non zéro indique que la somme de contrôle doit être traitée. Si le calcul de somme de contrôle échoue, la PDU doit être éliminée.

7.3	Partie adresse
7.3.1	Généralités
Les paramètres d’adresse se distinguent pas leur situation, suivant immédiatement la partie fixe de l’en-tête de PDU. La partie Adresse est illustrée par la Figure 4 :

                                                              Octet
                ____________________________________________
               |  Indicateur Longueur adresse destination  |   10
               |___________________________________________|
               |                                           |   11
               :      Adresse de destination               :
               |                                           |  m - 1
               |___________________________________________|
               |   Indicateur Longueur d’adresse de source |    m
               |___________________________________________|
               |                                           |  m + 1
               :              Adresse de source            :
               |                                           |  n - 1
               |___________________________________________|

Figure 4 : En-tête de PDU – partie adresse

7.3.1.1	Adresses de destination et de source
Les adresses de destination et de source sont utilisées par le présent protocole comme adresses de point d’accès de service réseau (NSAP, Network Service Access Point) comme défini dans la norme ISO 8348/AD2, Addendum à la définition de service réseau couvrant l’adressage de couche réseau.
Les adresses de destination et de source sont de longueur variable. Les champs Adresse de destination et Adresse de source sont codés comme informations d’adresse de protocole réseau en utilisant le codage binaire préféré défini au paragraphe 8.3.1 de la norme ISO 8348/AD2.
Le champ Indicateur de longueur d’adresse de destination spécifie la longueur de l’adresse de destination en octets. Le champ Adresse de destination suit le champ Indicateur de longueur d’adresse de destination.

Le champ Longueur d’adresse de source spécifie la longueur de l’adresse de source en octets. Le champ Indicateur de longueur d’adresse de source suit le champ Adresse de destination. Le champ Adresse de source suit le champ Indicateur de longueur d’adresse de source.

Chaque paramètre d’adresse est codé comme illustré au Tableau 5 :

Octet n 	Indicateur de longueur de paramètre d’adresse (par exemple, 'm') 	
Octets n + 1 à  n + m	Valeur du paramètre d’adresse	

Figure 5 : Paramètres d’adresse

7.4	Partie segmentation
Si le fanion Segmentation permise dans la partie fixe de l’en-tête de PDU (octet 4, bit 8) est établi à un, la partie segmentation de l’en-tête, illustrée à la Figure 6, doit être présente :

Si le fanion Segmentation permis est réglé à zéro, le sous ensemble non segmentation du protocole est utilisé.

                                                         Octet
                    _________________________________
                    | Identifiant d’unité de données |   n, n + 1
                    |________________________________|
                    |   Décalage de segment          |   n + 2, n + 3
                    |________________________________|
                    |    Longueur totale             |   n + 4, n + 5
                    |________________________________|

Figure 6 : En-tête de PDU – partie Segmentation

7.4.1	Identifiant d’unité de données
L’identifiant d’unité de données identifie une PDU initiale (et donc, ses PDU dérivées) afin que l’unité de données segmentée puisse être correctement réassemblée. La taille de l’identifiant d’unité de données est de deux octets.

7.4.2	Décalage de segment
Pour chaque PDU dérivée, le champ Décalage de segment spécifie la position relative du segment contenu dans le champ de données de la PDU dérivée par rapport au début du champ de données dans la PDU initiale. Le décalage est mesuré en octets. Le décalage du premier segment (et donc, de la PDU initiale) est zéro ; une PDU non segmentée (PDU initiale) a une valeur de décalage de segment de zéro (0). La valeur de ce champ devra être un multiple de huit (8).

7.4.3	Longueur totale de PDU
Le champ Longueur totale spécifie la longueur entière de la PDU initiale, incluant à la fois l’en-tête et les données. Ce champ n’est pas changé pendant le durée de la vie de la PDU initiale (et donc, de ses PDU dérivées).

7.5	Partie options
7.5.1	Généralités
La partie Options est utilisée pour convoyer les paramètres facultatifs. La partie Options de l’en-tête de PDU est illustrée ci-dessous :

                                                             Octet
        ___________________________________________________
        |                                                  | n + 6
        :                    Options                       :
        |                                                  |   p
        |__________________________________________________|

Figure 7 : En-tête de PDU – partie Options

Si la partie Options est présente, elle peut contenir un ou plusieurs paramètres. Le nombre de paramètres qui peuvent être contenus dans la partie Options est contraint par la longueur de cette partie, qui est déterminée par la formule 
Longueur d’en-tête de PDU - (longueur de partie fixe + longueur de partie adresse + longueur de partie segmentation)
et par la longueur des paramètres facultatifs individuels.
Les paramètres définis dans la partie Options peuvent apparaître dans n’importe quel ordre. La duplication des options n’est pas permise. La réception d’une unité de données de protocole avec une option dupliquée devrait être traitée comme une erreur de protocole. Les règles qui gouvernent le traitement des erreurs de protocole sont décrites au paragraphe 6.10, Fonction Rapport d’erreur.
Le codage des paramètres contenus dans la partie Options de l’en-tête de PDU est illustré au Tableau 6 :

Octets		
n 	Code du paramètre	
n + 1	Longueur du paramètre (par exemple m)	
n + 2 à n + m + 1	Valeur du paramètre	

Tableau 6 : Codage des paramètres

Le champ Code de paramètre est codé en binaire et, sans extensions, fournit un maximum de 255 paramètres différents. Aucun code de paramètre n’utilise les bits 8 et 7 avec la valeur 00, de sorte que le nombre maximum réel de paramètres est inférieur. Un code de paramètre de 255 (1111 1111 en binaire) est réservé pour de possibles extensions futures.

Le champ Longueur de paramètre indique la longueur, en octets, du champ Valeur de paramètre. La longueur est indiquée par un nombre binaire positif, m, avec une valeur maximum théorique de 254. La valeur maximum pratique de m est inférieure. Par exemple, dans le cas d’un seul paramètre contenu dans la partie Options, deux octets sont nécessaires pour les indicateurs de code de paramètre et de longueur de paramètre. Donc, la valeur de m est limitée à :

m = 252 - (longueur de la partie fixe + longueur de la partie adresse + longueur de la partie segmentation)

Pour chaque paramètre successif, la valeur maximum de m diminue. Le champ Valeur de paramètre contient la valeur du paramètre identifié dans le champ Code de paramètre.

Les paramètres qui suivent sont permis dans la partie Options.

7.5.2	Bourrage
Le paramètre Bourrage est utilisé pour rallonger l’en-tête de PDU à une taille convenable (Voir au paragraphe 6.12).

Code de paramètre : 1100 1100
Longueur de paramètre : variable
Valeur du paramètre : toutes les valeur sont permises

7.5.3	Sécurité
Ce paramètre permet d’allouer un niveau de sécurité unique et non ambigu à une unité de données de protocole.
Code de paramètre : 1100 0101
Longueur du paramètre :  variable
Valeur du paramètre : Les deux bits de poids fort du premier octet spécifient le code du format de sécurité, où :
Code de format de sécurité	Champ Type de sécurité
00 	Réservé
01	Spécifique de l’adresse de source
10	Spécifique de l’adresse de destination
11	Unique au monde

Le reste du premier octet est réservé et doit être à zéro. Le reste du champ Valeur de paramètre spécifie le niveau de sécurité comme décrit dans les paragraphes suivants.

7.5.3.1	Spécifique de l’adresse de source
La valeur du code de format de sécurité de "01" en binaire indique que les octets restants du champ Valeur de paramètre spécifient un niveau de sécurité qui est unique et non ambigu dans le contexte du système de classification de sécurité employé par l’autorité responsable de l’allocation de l’adresse NSAP de source.

7.5.3.2	Spécifique de l’adresse de destination
La valeur du code de format de sécurité de "10" binaire indique que les octets restants du champ de valeur du paramètre  spécifient un niveau de sécurité qui est unique et non ambigu dans le contexte du système de classification de sécurité employé par l’autorité responsable de l’allocation de l’adresse NSAP de destination.

7.5.3.3	Sécurité unique au monde
La valeur du code de format de sécurité de "11" en binaire indique que les octets restants du champ de valeur du paramètre spécifient un niveau de sécurité unique et non ambigu. Ce système de classification de sécurité n’est pas spécifié dans la présente norme.

7.5.4	Acheminement de source
Le paramètre Acheminement de source spécifie, soit complètement, soit partiellement, le chemin à prendre de l’adresse réseau de source à l’adresse réseau de destination.

Code du paramètre : 1100 0101
Longueur du paramètre : variable
Valeur du paramètre : 2 octets d’informations de contrôle suivis par un enchaînement ordonné d’entrées de titre d’entité réseau (ordonnées de la source à la destination)

Le premier octet de la valeur du paramètre est le code de type, et a la signification suivante :
0000 0000 : acheminement partiel de source
0000 0001 : acheminement complet de source
<toutes les autres valeurs sont réservées>

Le second octet indique le décalage d’octet de la prochaine entrée de titre d’entité réseau à traiter dans la liste. Il se rapporte au début du paramètre, de telle sorte qu’une valeur de trois (3) indique que la prochaine entrée de titre d’entité réseau commence immédiatement après cet octet de contrôle. Les octets suivants sont indiqués par les valeurs supérieures correspondantes de cet indicateur.

Le troisième octet commence la liste des titres d’entité réseau. La liste consiste en entrées de longueur variable de titres d’entité réseau. Le premier octet d’entrée identifie la longueur du titre d’entité réseau qui comprend le reste de l’entrée.

7.5.5	Enregistrement de chemin
Le paramètre Enregistrement de chemin identifie le chemin des systèmes intermédiaires traversés par la PDU.

Code de paramètre : 1100 1011
Longueur de paramètre : variable
Valeur de paramètre : 2 octets d’informations de contrôle suivis par un enchaînement ordonné d’entrées de titre d’entité réseau (ordonnées de la destination à la source)

Le premier octet de la valeur du paramètre est le code de type, et a la signification suivante :
0000 0000 : l’enregistrement partiel du chemin est en cours
0000 0001 : l’enregistrement complet du chemin est en cours
<toutes les autres valeurs sont réservées>

Le second octet identifie le premier octet non actuellement utilisé pour un titre d’entité réseau enregistré, et donc aussi la fin de la liste. Il est codé par rapport au début de la valeur du paramètre, de sorte qu’une valeur de trois (3) indique qu’aucun titre d’entité réseau n’a encore été enregistré. Une valeur toute de uns est utilisée pour indiquer que l’enregistrement de chemin est terminé.

Le troisième octet commence la liste des titres d’entité réseau. La liste consiste en entrées de longueur variable de titres d’entité réseau. Le premier octet de chaque entrée spécifie la longueur du titre d’entité réseau comprenant le reste de l’entrée. Les entrées de titre d’entité réseau sont toujours ajoutées au début de la liste ; c’est-à-dire que l’entrée ajoutée le plus récemment va commencer dans le troisième octet de la valeur du paramètre.

Note : la longueur du paramètre Record Route est déterminée par le générateur de la PDU et n’est pas changée pendant la durée de vie de la PDU ; donc, la fonction Enregistrement de chemin n’affecte pas la longueur de l’en-tête.

7.5.6	Maintenance de la qualité de service
Le paramètre Qualité de service porte des informations sur la qualité de service demandée par l’utilisateur du service réseau générateur. Les entités réseau dans les systèmes intermédiaires peuvent (mais n’y sont pas obligées) faire usage de ces informations comme aide dans le choix d’un chemin lorsque plus d’un chemin satisfaisant d’autres critères d’acheminement est disponible et que les chemins disponibles sont connus pour différer quant à la qualité de service (voir le paragraphe 6.16).

Code de paramètre : 1100 0011
Longueur de paramètre : variable
Valeur de paramètre : Les deux bits de poids fort du premier octet spécifient le code de format de QS, où :

Code de format de QS	Champ Type de QS
00	Réservé
01	Spécifique de l’adresse de source
10	Spécifique de l’adresse de destination
11	Unique au monde

Le reste du premier octet est réservé et doit être à zéro. Le reste du champ Valeur de paramètre spécifie la QS comme décrit dans les paragraphes qui suivent.

7.5.6.1	Spécifique de l’adresse de source
La valeur du code de format de QS de "01" binaire indique que le reste des octets du champ Valeur du paramètre spécifie une QS qui est unique et non ambiguë dans le contexte du système de maintenance de QS employé par l’autorité responsable de l’allocation de l’adresse NSAP de source.

7.5.6.2	Spécifique de l’adresse de destination
La valeur du code de format de QS de "10" binaire indique que le reste des octets du champ Valeur du paramètre spécifie une QS qui est unique et non ambiguë dans le contexte du système de maintenance de QS employé par l’autorité responsable de l’allocation de l’adresse NSAP de destination.

7.5.6.3	QS unique au monde
La valeur du code de format de QS de "11" binaire indique que le reste des octets du champ Valeur du paramètre spécifie un champ de maintenance de QS unique au monde. Lorsque la fonction de maintenance de QS unique au monde est employée, le champ Valeur du paramètre doit avoir une longueur totale de un octet, auquel sont allouées les valeurs suivantes :

Bits 8 et 7	Code de format de QS "11" binaire
Bit 6 :	Réservé
Bit 5 :	délai de séquençage ou de transit
Bit 4 :	encombrement subi
Bit 3 :	délai de transit ou coût
Bit 2 :	probabilité d’erreur résiduelle ou délai de transit
Bit 1 :	probabilité d’erreur résiduelle ou coût

Le bit 5 est réglé à un pour indiquer que, lorsque possible, les décisions d’acheminement devraient favoriser l’envoi de toutes les PDU à l’adresse de destination NSAP spécifiée sur un seul chemin (afin de garder la séquence) plutôt que de minimiser le délai de transit. Une valeur de zéro (0) indique que, lorsque possible, les décisions d’acheminement devraient favoriser un faible délai de transit plutôt que la préservation de la séquence.

Le bit 4 est réglé à zéro par l’entité réseau qui a généré l’unité de données de protocole. Il est établi à un par un système intermédiaire pour indiquer que cette PDU a visité un système intermédiaire encombré, et qu’une action appropriée devrait être entreprise par l’entité réseau de destination. Une fois le bit Encombrement subi établi par un système intermédiaire, il ne peut plus être changé par un autre système intermédiaire traversé par la PDU plus loin sur le chemin vers la destination.

Le bit 3 est établi à un pour indiquer que, lorsque possible, les décisions d’acheminement devraient favoriser un faible délai de transit plutôt qu’un faible coût. Une valeur de 0 indique que les décisions d’acheminement devraient favoriser la baisse du coût plutôt que la baisse du délai de transit.

Le bit 2 établi à un indique que, lorsque possible, les décisions d’acheminement devraient favoriser une faible probabilité d’erreurs résiduelles plutôt qu’un faible délai de transit. Une valeur de zéro indique que les décisions d’acheminement devraient favoriser un faible délai de transit plutôt qu’une faible probabilité d’erreurs résiduelles.

Le bit 1 établi à un indique que, lorsque possible, les décisions d’acheminement devraient favoriser une faible probabilité d’erreur résiduelle plutôt qu’un faible coût. Une valeur de 0 indique que les décisions d’acheminement devraient favoriser un faible coût plutôt qu’une faible probabilité d’erreur résiduelle.

7.5.7	Priorité
La valeur du paramètre Priorité indique la priorité relative de l’unité de données de protocole. Les systèmes intermédiaires qui prennent en charge cette option devront utiliser ces information pour l’acheminement et dans le rangement des PDU pour la transmission.

Code de paramètre : 1100 1101
Longueur de paramètre : un octet
Valeur du paramètre : 0000 0000 - Normal (par défaut) jusqu’à 0000 1110 – le plus élevé
<toutes les autres valeurs sont réservées>

Les valeurs de 0000 0001 à 0000 1110 sont à utiliser pour les unités de données de protocole de priorité plus élevée. Si un système intermédiaire ne prend pas en charge cette option, toutes les PDU devront être traitées comme si le champ avait la valeur de 0000 0000.

7.6	Partie Données
La partie Données de la PDU est structurée comme un multiple ordonné d’octets, qui est identique au même multiple ordonné d’octets spécifié pour le paramètre NS-Userdata des primitives de demande et d’indication N-UNITDATA. Le champ Données est illustré par la Figure 8 :
                                                                 Octet
            ___________________________________________________
            |                                                  | p + 1
            :                      Données                     :
            |                                                  |   z
            |__________________________________________________|

Figure 8 : En-tête de PDU – champ Données

7.7	PDU de Données (DT)
7.7.1	Structure
La PDU DT a le format suivant :
             __________________________________________
             | Identifiant protocole de couche réseau |       1
             |________________________________________|
             |          Indicateur de longueur        |       2
             |________________________________________|
             |  ID extension version/protocole        |       3
             |________________________________________|
             |             Durée de vie               |       4
             |________________________________________|
             |  S P  vline  M S vline E/R |  Type     |       5
             |____________________________|___________|
             |         Longueur de segment            |      6,7
             |________________________________________|
             |            Somme de contrôle           |      8,9
             |________________________________________|
             | Indicateur longueur adresse destination|      10
             |________________________________________|
             |                                        |      11
             :      Adresse de destination            :
             |________________________________________|     m - 1
             |   Indicateur longueur adresse source   |     m
             |________________________________________|
             |                                        |     m + 1
             :             Adresse de source          :
             |                                        |     n - 1
             |________________________________________|
             |       Identifiant d’unité de données   |    n, n + 1
             |________________________________________|
             |         Décalage de segment            |  n + 2, n + 3
             |________________________________________|
             |          Longueur totale               |  n + 4, n + 5
             |________________________________________|
             |                                        |    n + 6
             |                 Options                |
             |                                        |      p
             |________________________________________|
             |                                        |    p + 1
             |                  Données               |
             |                                        |      z
             |________________________________________|

Figure 9 : PDU DT

7.7.1.1	Partie fixe
1)	Identifiant de protocole de couche réseau : Voir au paragraphe 7.2.2
2)	Indicateur de longueur  : Voir au paragraphe 7.2.3
3)	Identifiant d’extension version/protocole  : Voir au paragraphe 7.2.4
4)	Durée de vie : Voir au paragraphe 7.2.5
5)	SP, MS, E/R : Voir au paragraphe 7.2.6
6)	Type : Voir au paragraphe 7.2.7
7)	Longueur de segment  : Voir au paragraphe 7.2.8
8)	Somme de contrôle  : Voir au paragraphe 7.2.9

7.7.1.2	Adresses
Voir au paragraphe 7.3.

7.7.1.3	Segmentation
Voir au paragraphe 7.4.

7.7.1.4	Options
Voir au paragraphe 7.5.

7.7.1.5	Données
Voir au paragraphe 7.7.

7.8	Protocole de couche réseau inactive
                                                        Octet
                  _____________________________________
                  |Identifiant protocole couche réseau |  1
                  |____________________________________|
                  |                                    |  2
                  |                Données             |
                  |                                    |  2 - n
                  |____________________________________|

Figure 10 : Protocole de couche réseau inactive

7.8.1	Identifiant de protocole de couche réseau
La valeur du champ Identifiant de protocole de couche réseau est zéro (0000 0000) en binaire.

7.8.2	Champ Données
La longueur du paramètre NS-Userdata est contrainte d’être inférieure ou égale à la valeur du paramètre SN-Userdata moins un (voir le paragraphe 7.7).

7.9	PDU de rapport d’erreur (E/R)
7.9.1	Structure
La PDU E/R a le format suivant :

              ______________________________________________ Octet
              |  Identifiant de protocole de couche réseau |   1
              |____________________________________________|
              |           Indicateur de longueur           |   2
              |____________________________________________|
              |    ID extension version/protocole          |   3
              |____________________________________________|
              |               Durée de vie                 |   4
              |____________________________________________|
              |   SP= 0  vline MS= 0 vline Réservé  | Type |   5
              |_____________________________________|______|
              |           Longueur de segment              |  6,7
              |____________________________________________|
              |              Somme de contrôle             |  8,9
              |____________________________________________|
              | Indicateur longueur adresse de destination |  10
              |____________________________________________|
              |                                            |  11
              :         Adresse de destination             :
              |                                            | m - 1
              |____________________________________________|
              |  Indicateur longueur adresse de source     |   m
              |____________________________________________|
              |                                            | m + 1
              :              Adresse de source             :
              |                                            | n - 1
              |____________________________________________|
              |                                            |   n
              |                   Options                  |
              |                                            | p - 1
              |____________________________________________|
              |                                            |   p
              |             Raison de l’élimination        |
              |                                            | q - 1
              |____________________________________________|
              |                                            |   q
              |       Champ Données de rapport d’erreur    |
              |                                            |   z
              |____________________________________________|

Figure 11 : PDU de rapport d’erreur

7.9.1.1	Partie fixe
La partie fixe de l’unité de données de protocole de rapport d’erreur est composée de la même façon qu’une nouvelle (initiale) PDU de données. Des références sont données aux paragraphes précédents qui décrivent le codage des champs qui composent la partie fixe :
1)	Identifiant de protocole de couche réseau	Voir au paragraphe 7.2.2
2)	Indicateur de longueur 	Voir au paragraphe 7.2.3
3)	Extension d’ID de version/protocole	Voir au paragraphe 7.2.4
4)	Durée de vie	Voir au paragraphe 7.2.5
5)	SP, MS, E/R  : Toujours réglés à zéro,	Voir au paragraphe 6.10
6)	Code de type 	Voir au paragraphe 7.2.7
7)	Longueur de segment	Voir au paragraphe 7.2.8
8)	Somme de contrôle	Voir au paragraphe 7.2.9

7.9.1.2	Adresses
Voir au paragraphe 7.3.

L’adresse de destination spécifie le titre d’entité réseau du générateur de la PDU éliminée. L’adresse de source spécifie le titre de l’entité réseau du système intermédiaire ou d’extrémité qui initie la PDU de rapport d’erreur.

7.9.1.3	Options

Voir au paragraphe 7.5.

7.9.1.4	Cause d’élimination

Ce paramètre n’est valide que pour la PDU de rapport d’erreur.

Code de paramètre : 1100 0001
Longueur de paramètre : deux octets
Valeur du paramètre :  type de l’erreur codé en binaire. La liste des valeurs figure au Tableau 7 :

Valeur du paramètre	Classe d’erreur	Signification	
Octet 1	Octet 2			
0000	0000		Raison non spécifiée	
	0001		Erreur de procédure du protocole	
	0010		Somme de contrôle incorrecte	
	0011	Générale	PDU éliminée à cause d’encombrement	
	0100		Erreur de syntaxe d’en-tête (ne peut être analysé)	
	0101		Segmentation nécessaire mais interdite	
	0110		PDU reçue incomplète	
	0111		Option dupliquée	
1000	0000	Adresse	Adresse de destination injoignable	
	0001		Adresse de destination inconnue	
1001	0000		Erreur d’acheminement de source non spécifiée	
	0001	Acheminement de source	Erreur de syntaxe dans le champ d’acheminement de source	
	0010		Adresse inconnue dans le champ d’acheminement de source	
	0011		Chemin non acceptable	
1010	0000	Durée de vie	Durée de vie expirée pendant le transit de l’unité de données	
	0001		Durée de vie expirée pendant le réassemblage	
1011	0000		Option non prise en charge non spécifiée	
	0001	PDU éliminée 	Version de protocole non prise en charge	
	0010		Option de sécurité non prise en charge	
	0011		Option d’acheminement de source  non prise en charge	
	0100		Option d’enregistrement  non prise en charge	
1100	0000	Réassemblage	Interférence de réassemblage	

Tableau 7 : Cause d’élimination

Le premier octet de la valeur du paramètre contient un code de type d’erreur. Si l’erreur dans la PDU de données éliminée peut être localisée dans un champ particulier, le numéro du premier octet de ce champ est mémorisé dans le second octet du champ du paramètre de la raison de l’élimination. Si l’erreur ne peut pas être localisée dans un champ particulier, ou si l’erreur porte sur la somme de contrôle, la valeur zéro est alors mémorisée dans le second octet du champ du paramètre de la raison de l’élimination.

7.9.1.5	Champ de données de rapport d’erreur
Ce champ contient l’en-tête entier de la PDU de données éliminée, et peut contenir certains champs de données, ou tous, de la PDU éliminée.

8.	Conformité

Pour la conformité à la présent norme internationale, la capacité de générer, manipuler, et recevoir des PDU conformément au protocole complet ( par opposition aux sous ensembles du protocole de non segmentation ou de couche réseau inactive) est exigée.

De plus, la conformité à la norme exige la fourniture des fonctions du protocole décrites à la Section 6. La fourniture des fonctions facultatives décrites au paragraphe 6.18 et énumérées dans le Tableau 9-1 doit satisfaire aux exigences qui y sont décrites. Les exceptions à ces exigences sont décrites au paragraphe 8.1.

De plus, la conformité à la norme exige l’adhésion à la structure et au codage des PDU de la Section 7.

C’est seulement si les exigences ci-dessus sont satisfaites qu’il y a conformité à la présente norme internationale.

8.1	Fourniture des fonctions pour la conformité

Le tableau suivant range en catégories les fonctions de la Section 6 par rapport au type de système qui fournit la fonction :

Fonction	Envoi	Transmission	Réception	
Composition de PDU	O	(Note 1)	(Note 1)	
Décomposition de PDU	O	-	O	
Analyse de format d’en-tête	O	O		
Contrôle de durée de vie de PDU	-	O	F	
Acheminement de PDU	-	O	-	
Transmission de PDU	O	O	(Note 1)	
Segmentation de PDU	O	(Note 2)	-	
Réassemblage de PDU	-	F	O	
Élimination de PDU	-	O	O	
Rapport d’erreur	O	O	O	
Détection d’erreur d’en-tête	(Note 3)	O	O	
Sécurité	-	(Note 3)	(Note 4)	
Acheminement de source complet	-	(Note 4)	-	
Enregistrement de chemin complet	-	(Note 4)	-	
Acheminement de source partiel	-	(Note 5)	-	
Enregistrement de chemin partiel	-	(Note 5)	-	
Priorité	-	(Note 5)	-	
Maintenance de QS	-	(Note 5)	-	
Notification d’encombrement	-	(Note 5)	-	
Bourrage	-	(Note 5)	(Note 3)	

Tableau 8 : Catégorisation des clés des fonctions.

O : Fonction obligatoire ; cette fonction doit être mise en œuvre.
- : Non applicable.
F: Option de mise en œuvre, comme décrit dans le texte.

Notes :
1.	La prise en charge des fonctions de composition et de transmission de PDU est nécessaire pour générer les PDU de rapport d’erreur.

2.	La fonction de segmentation de PDU est en général obligatoire pour un système intermédiaire. Cependant, un système qui ne doit être connecté qu’à des sous réseaux qui offrent tous la même taille maximum de SDU (comme des réseaux de zone locale identiques) n’aura pas besoin d’effectuer cette fonction et n’a donc pas besoin de la mettre en œuvre.
Si cette fonction n’est pas mise en œuvre, cela devra être déclaré au titre de la spécification de la mise en œuvre.

3.	Le traitement correct de la fonction de bourrage n’exige pas de manipulations. Une mise en œuvre conforme devra prendre en charge la fonction, en ignorant ce paramètre chaque fois qu’il apparaît.

4.	Cette fonction peut être ou non prise en charge. Si une mise en œuvre ne prend pas cette fonction en charge, et si la fonction est choisie dans une PDU, la PDU devra alors être éliminée, et une PDU E/R devra être générée et transmise à l’entité réseau génératrice si le fanion Rapport d’erreur est établi et si les conditions du paragraphe 6.10.4 sont satisfaites.

5.	Cette fonction peut être ou non prise en charge. Si une mise en œuvre ne prend pas cette fonction en charge, et si la fonction est choisie dans une PDU, la fonction ne sera alors pas effectuée et la PDU sera traitée exactement comme si la fonction n’avait pas été choisie. La PDU ne devra pas être éliminée pour cette raison.