Introduction à ASN.1
Dans notre dernier article "Damn that Data Format Hell", nous avons parlé de la manière dont layline.io gère la multitude de formats de données structurés complexes en utilisant un langage de grammaire pour décrire presque tous ces formats, vous permettant ainsi de travailler instantanément avec les données.
Nous avons également discuté du fait que cela ne fonctionne pas pour TOUS les formats avec lesquels vous pourriez travailler, mais peut-être pour 80 % de tous les formats structurés.
Cependant, il existe des formats d'échange de données dans la nature qui respectent leur propre standard et sont accompagnés de leur propre langage de grammaire. L'un d'entre eux est Abstract Syntax Notation One, alias ASN.1.
Démonstration de layline.io
Dans cet article, nous allons montrer comment nos utilisateurs peuvent définir des formats basés sur ASN.1 en utilisant layline.io.
layline.io est un processeur de données événementielles orienté. Il encapsule la puissance de la gestion des flux réactifs dans un framework qui facilite la configuration, le déploiement et la surveillance des besoins de traitement de données événementielles à grande échelle.
TD.57 - Procédure de transfert de compte (TAP)
Un domaine populaire où le format de protocole ASN.1 joue un rôle important est le roaming télécom et le processus d'échange TAP qui en découle. TAP (Transferred Accounts Procedure) gère le processus de règlement financier entre les réseaux mobiles pour leurs abonnés en itinérance.
En résumé : si vous utilisez votre téléphone portable dans un réseau visité (par exemple, dans un autre pays ou simplement un autre réseau), alors le réseau visité doit facturer votre réseau d'origine pour le service fourni. Les informations sur qui a utilisé son téléphone dans un réseau visité, combien de temps et qui ils ont appelé, etc., sont toutes échangées dans les fichiers TAP et RAP.

Notre exemple : configuration du format de fichier TAP3.11
Grammaire TAP3.11
Voici à quoi ressemble le début de la grammaire officielle TAP3.11 :
-- TD57_3.11.2
--
-- The following ASN.1 specification defines the abstract syntax for
-- Data Record Format Version 03
-- Release 11
...
TAP-0311 DEFINITIONS IMPLICIT TAGS ::=
BEGIN
DataInterChange ::= CHOICE
{
transferBatch TransferBatch,
notification Notification,
...
}
...
TransferBatch ::= [APPLICATION 1] SEQUENCE
{
batchControlInfo BatchControlInfo OPTIONAL,
accountingInfo AccountingInfo OPTIONAL,
networkInfo NetworkInfo OPTIONAL,
...
}
Créer un Asset ASN.1
Configurons TAP3.11 en utilisant layline.io. Dans la vue des Assets du projet (1), sélectionnez Formats (2), puis ASN.1 Format (3).

L'éditeur d'Assets dispose de deux onglets : "Configuration" et "Modules". Dans l'onglet "Configuration" (1), nous nommons l'Asset "TAP3.11" (2) :

Définir les types de messages
TAP3.11 définit un certain nombre de types de messages "racine" différents. Nous allons en identifier seulement trois pour travailler avec dans cet exemple :

Dans layline.io, nous les mappons respectivement à "Header", "Detail" et "Trailer" :

Nous allons ensuite déboguer les données que nous lisons. Comme certaines données sont encodées en BCD et pour des raisons de lisibilité, nous utilisons un convertisseur intégré pour les décoder :

Ajouter la grammaire TAP3.11
Passez à l'onglet Modules (2) de l'Asset ASN.1 que nous avons ajouté (1).
Une grammaire ASN.1 peut être composée de plusieurs modules. Dans notre cas, il n'y en a qu'un. Nous l'avons ajouté et nommé "TAP.311-Module" (3/4).

Vous pouvez trouver la grammaire ASN.1 originale pour TAP3.11 dans la spécification écrite :

Copions et collons-la dans notre Asset ASN.1 (1) (elle fait environ 1 422 lignes) :

Test interactif de la grammaire ASN.1
layline.io offre la possibilité de vérifier instantanément si la configuration du format correspond aux données réelles. Vous pouvez télécharger un fichier d'exemple (1) directement dans le Configuration Center (2) pour effectuer une vérification croisée.

layline.io va immédiatement :
- Générer un analyseur pour la grammaire ASN.1
- Analyser le fichier d'exemple
- Renvoyer le résultat (3 & 4)

Passez à l'onglet "Sample Messages" (2) où nous pouvons obtenir une vue plus lisible du contenu du fichier :

Les tests interactifs signifient que vous pouvez maintenant revenir à la grammaire, la modifier, et voir instantanément comment cela affecte l'interprétation de vos données d'exemple.
Projet d'exemple
Nous avons assemblé un projet d'exemple complet avec des données de test prêtes à être exécutées dans layline.io. L'exemple lit et écrit simplement un fichier TAP et affiche son contenu sur la console au format JSON :


Résumé
En utilisant layline.io, vous pouvez non seulement définir des scénarios complexes, distribués et évolutifs de traitement d'événements, mais également travailler avec presque tous les formats de données. Dans cet exemple, nous avons démontré comment gérer des données structurées ASN.1.
La plupart des autres solutions ne prendront en charge que des formats spécifiques, car leurs analyseurs ont été codés en dur pour correspondre à un cas d'utilisation spécifique. Dans layline.io, il existe littéralement des millions de cas d'utilisation. C'est pourquoi les formats ne sont jamais codés en dur, mais configurables.
Il existe de nombreux protocoles ASN.1 populaires dans le monde, dont nous aimerions en lister quelques-uns ci-dessous :
- Ericsson AIR / AXE10 / CCN / CCR / MTAS / R3-R13 / SDP
- Huawei IMS
- 4G UMTS / 5G IMS / 3GPP
- TD.35 NRTRDE - Near Real Time Roaming Data Exchange
- TD.57 / TAP2 / TAP3 Transferred Account Procedure
- X.500 Directory Services
- Lightweight Directory Access Protocol (LDAP)
- PKCS Cryptography Standards
- Simple Network Management Protocol (SNMP)
- Signalling System No. 7 (SS7)
- Long-Term Evolution (LTE)
- Et bien d'autres...
Ressources
| # | Description |
|---|---|
| 1 | Github : Simple ASN.1 Project |
| # | Documentation |
|---|---|
| 1 | Getting Started |
| 2 | Generic Format Asset |
| 3 | ASN.1 on Wikipedia |
- En savoir plus sur layline.io ici.
- Contactez-nous à hello@layline.io.


