Applications Client ServeurIllustration avec XDR/RPC
et ASN.1
Anne Marie Dery
Module SAR1
Année 2000 2001
De la spécification des données au transfert de données
Les règles d’encodage
Règles d’encodage
Règles utilisées pour transformer les données spécifiées en unformat standard qui peut être décodé sur n’importe quel système.
Le choix des règles est laissé au concepteur du protocole. Les règles d’encodage ASN.1 standardisées sont Basic Encoding Rules (BER) début 1980
Distinguished Encoding Rules (DER)Canonical Encoding Rules (CER)
Packed Encoding Rules (PER) .
Quelles ER ? Quand ?
BER dans un grand champ d’applications : SNMP Simple Network Management ProtocoMHS Message Handling Services TSAPI (contrôle des interactions telephone/computer)
DER = un BER spécialisé pour les applications sécurisées(cryptographie) e-commerce, CER similaire à DER, pour des très gros messages à encoder au fur et à mesure.PER plus récent avec un algorithmes qui implique un résultatrapide et plus compact dans des applications style contrôle aérienet télécommunications audio-visuelle.Et Lean ED encodage de petite taille avec de hautes performances au détriment des possibilités de diagnostic
De ASN.1 v.1988 à ASN.1 v.1997
Pourquoi une nouvelle version ?
Une grammaire ambiguë
Problème d’utilisation des macros
Ambiguïté pour encoder et décoder les types ouverts
Une révision de la notation en 1997
ASN.1 v.1988 vs ASN.1 v.1997
ASN.1 1988 défini dans Rec X.208, le BER dans Rec X.209ASN.1 1997 dans Rec X.680 et 683, le BER dans Rec X.690
Impossible de déterminer sur le flux de bits transmis le ASN.1utilisé dans la spécification
mais suppression d’ambiguïtés de la première définitionremplacement des macros, du ANY,ANY DEFINED BYchangement des valeurs de CHOICEobligation de donner les noms des champs des typesstructurésde nouveaux types de chaînes
Pour passer de v.1988 à v.1997
IUT-T Recommandation X.680 clause A.3 Migration to the Current ASN.1 NotationAnnexe E Superseded FeaturesAnnexe H Les types ouverts
1. Vérifier la présence des identificateurs de champs dans les types structurés
2. Ajouter un : après les identificateurs dansune valeur de CHOICE
3. Remplacer les ANY par les nouveaux types ouverts4. Remplacer les notations de macro par la notation de
classe d ’objets ou celle des types paramétrés
Compatibilité des 2 versions
Par importation et exportation de modulesen suivant les consignes de la clause A.2import de macros impossible en v.1997import de nouveaux types impossible en v.1988
Incompatible dans un module
Les spécificités de v.1997
Types extensibles
ENUMERATED, SEQUENCE, SET, CHOICE
State ::= ENUMERATED{on, off, out-of-order, …, stand-by}Dimension ::= SET { x INTEGER,
y INTEGER,…,z INTEGER}
utilisé pour la gestion de version
très proche de la notion d ’héritage
Un exemple
Object Information
FUNCTION ::= CLASS { &ArgumentType, &ResultType DEFAULT NULL, &Errors ERROR OPTIONAL,&code INTEGER (0..MAX) UNIQUE}
addition FUNCTION ::= { &ArgumentType SEQUENCE {a INTEGER,
b INTEGER},&ResultType INTEGER, &code 1}
Object Information
FUNCTION ::= CLASS { &code INTEGER (0..MAX) UNIQUE, &Alphabet BMPString
DEFAULT {Latin1 INTERSECTION Level1}, &ArgumentType , &SupportedArguments &ArgumentType OPTIONAL, &ResultType DEFAULT NULL, &result-if-error &ResultType DEFAULT NULL, &associated-function FUNCTION OPTIONAL, &Errors ERROR DEFAULT {rejected-argument|memory-fault}
Exemple
addition FUNCTION ::= { &ArgumentType Pair, &SupportedArguments &ResultType INTEGER, &code 1}
Significations de la syntaxe
If the field name and if it is then the field of the starts with followed by object contains &Upper-case nothing a type &lower-case a type, a type reference
(Upper-case) a fixed-type value &lower-case a type field a variable-type value
(&Upper-case) &Upper-case a type or a type reference
(Upper-case) a fixed-type value set &Upper-case a type field
(&Upper-case) a variable-type value
set
Significations de la syntaxe
If the field name and if it is then the field of the starts with followed by object contains
&lower-case a class name (UPPER-CASES) an information object
&Upper-case a class name (UPPER-CASES) an information object
set
Exemple en x500
ATTRIBUTE ::= CLASS { &derivation ATTRIBUTE OPTIONAL, &Type OPTIONAL, &equality-match MATCHING-RULE OPTIONAL, &ordering-match MATCHING-RULE OPTIONAL, &substrings-match MATCHING-RULE OPTIONAL, &single-valued BOOLEAN DEFAULT FALSE, &collective BOOLEAN DEFAULT FALSE, &no-user-modification BOOLEAN DEFAULT FALSE, &usage Attribute-Usage DEFAULT userApplications, &id OBJECT IDENTIFIER UNIQUE }
+ une syntaxe
WITH SYNTAX { [SUBTYPE OF &derivation] [WITH SYNTAX &Type] [EQUALITY MATCHING RULE &equality-match] [ORDERING MATCHING RULE &ordering-match] [SUBSTRINGS MATCHING RULE &substrings-match] [SINGLE VALUE &single-valued] [COLLECTIVE &collective] [NO USER MODIFICATION &no-user-modification] [USAGE &usage]
ID &id }
Une valeur
AttributeUsage ::= ENUMERATED { userApplications(0), directoryOperation(1), distributedOperation(2), dSAOperation(3) }
Des utilisations de ASN.1
Depuis toujours en administration de réseaux avec SNMP etGDMO, en X500 et X400…et maintenant partout autour de vous
Dans les téléphones cellulaires (Amerique du nord, Europe, et Japon) qui utilisent TCAP décrit en ASN.1 / BER
la Federal Aviation Administration et l’International Civil Aviation utilisent un protocole codé en PER
DEC, Hewlett Packard, IBM, Sun and Xeroxdéfinissent l’interface standard DPA pour leur nouvelles imprimantes avec ASN.1.
Des environnements de programmationVendus par des industriels
OSS Nokalva http://www.oss.com.products
Outils : Checker (free), Compiler, Encoder/decoder
Langages visés :C++ Borland VisualAge sous WindowsNT Java, C, Pascal, Cobol
Logiciels libres
Seulement des checkers
et mavros
Des références
Un glossaire hyper pratique :
http://www.oss.com/asn1/glossary.html#A
Des référencs de livres : http://www.oss.com/asn1/booksintro.html
Des publications : http://www.oss.com/asn1/publications.html
Accès aux normes :
http://asn1.elibel.tm.fr/en/standards/index.htm#x690
Standards internationaux ITU-T Recommandations
X.680 : 8824-1:1998, Abstract Syntax Notation One (ASN.1): Specification of Basic Notation X.681 : 8824-2:1998, Abstract Syntax Notation One (ASN.1): Information Object Specification X.682 : 8824-3:1998, Abstract Syntax Notation One (ASN.1): Constraint Specification X.683 : Parameterization of ASN.1 Specifications X.690 : ASN.1 Encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER) X.691 : ASN.1 Encoding Rules: Specification of Packed Encoding Rules (PER)
Tout ce que je ne vous ai pas dit
Types de ChaînesCOMPONENT OFContraintes SEQUENCE SIZE(103) OF TypeInteger(1..103)Two ::= INTEGER(2)Wednesday ::= Day(wednesday)
264
ANY et ANY DEFINED BY
v ANY ::= INTEGER:12T::= SEQUENCE { a BOOLEAN,
b REAL}w ANY ::= T:{a TRUE, b{314,10,-2}}
Error ::= SEQUENCE{code INTEGER,parameter ANY DEFINED BY code}
0 NULL1 INTEGER2 SEQUENCE OF INTEGER3 SEQUENCE {param1 T1, param2 T2}
XDR/RPC
Une première approche d ’ASN.1
ASN.1 plus qu’un simple langage de spécifications
Une bibliothèque d’exécution pour RPCGEN