Torna al blog
TutorialMay 11, 2022•5 min

ASN.1 Formatkonfiguration

ASN.1 ist immer noch ein beliebtes Datenformat. Erfahren Sie, wie einfach es ist, jedes ASN.1-Format in layline.io zu konfigurieren.

ASN.1 Formatkonfiguration

Einführung in ASN.1

In unserem letzten Artikel "Damn that Data Format Hell" haben wir darüber gesprochen, wie layline.io mit der Vielzahl komplexer struktureller Datenformate umgeht, indem es eine Grammatiksprache verwendet, um fast jedes dieser Formate zu beschreiben und Ihnen ermöglicht, sofort mit den Daten zu arbeiten.

Wir haben auch diskutiert, dass dies nicht für ALLE Formate funktioniert, mit denen Sie möglicherweise arbeiten, aber vielleicht für 80% aller strukturierten Formate.

Es gibt jedoch Datenformate für den Austausch, die ihren eigenen Standard einhalten und mit ihrer eigenen Grammatiksprache kommen. Eines davon ist Abstract Syntax Notation One, auch bekannt als ASN.1.

layline.io Showcase

In diesem Artikel zeigen wir, wie unsere Benutzer ASN.1-basierte Formate mit layline.io definieren können.

layline.io ist ein meinungsstarker Event-Datenprozessor. Es verpackt die Kraft des reaktiven Stream-Managements in einem Framework, das die Einrichtung, Bereitstellung und Überwachung von groß angelegten Event-Datenverarbeitungsanforderungen einfach und unkompliziert macht.

TD.57 - Transferred Account Procedure (TAP)

Ein beliebter Bereich, in dem das ASN.1-Protokollformat eine wichtige Rolle spielt, ist im Telekommunikations-Roaming und dem daraus resultierenden TAP-Austauschprozess. TAP (Transferred Accounts Procedure) behandelt den finanziellen Abrechnungsprozess zwischen Mobilfunknetzen für ihre Roaming-Abonnenten.

Kurz gesagt: Wenn Sie Ihr Mobiltelefon in einem besuchten Netz verwenden (z. B. in einem anderen Land oder einfach in einem anderen Netz), muss das besuchte Netz Ihr Heimatnetz für den bereitgestellten Dienst in Rechnung stellen. Die Informationen darüber, wer sein Telefon in einem besuchten Netz genutzt hat, wie lange und wen er angerufen hat, usw. werden alle in TAP- und RAP-Dateien ausgetauscht.

Unser Beispiel: TAP3.11 Dateiformat-Konfiguration

TAP3.11 Grammatik

So sieht der Anfang der offiziellen TAP3.11 Grammatik aus:

-- TD57_3.11.2
--
-- Die folgende ASN.1-Spezifikation definiert die abstrakte Syntax für
--        Datenaufzeichnungsformat 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,
    ...
}

Erstellen eines ASN.1 Assets

Lassen Sie uns TAP3.11 mit layline.io einrichten. Im Projekt-Asset-View (1) wählen Sie Formate (2) und dann ASN.1 Format (3).

Der Asset-Editor hat zwei Registerkarten "Configuration" und "Modules". Auf der Registerkarte "Configuration" (1) benennen wir das Asset "TAP3.11" (2):

Nachrichtentypen definieren

TAP3.11 definiert eine Reihe verschiedener "Root"-Nachrichtentypen. Wir werden nur drei von ihnen identifizieren, mit denen wir in diesem Beispiel arbeiten:

In layline.io ordnen wir sie "Header", "Detail" und "Trailer" zu:

Später werden wir die Daten, die wir lesen, debuggen. Da einige Daten BCD-codiert sind und der Lesbarkeit halber verwenden wir einen eingebauten Konverter, um sie zu dekodieren:

Hinzufügen der TAP3.11 Grammatik

Wechseln Sie zur Registerkarte "Modules" (2) des hinzugefügten ASN.1 Assets (1).

Eine ASN.1 Grammatik kann aus mehreren Modulen bestehen. In unserem Fall ist es nur eines. Wir haben es hinzugefügt und "TAP.311-Module" genannt (3/4).

Sie können die originale ASN.1 Grammatik für TAP3.11 in der schriftlichen Spezifikation finden:

Lassen Sie uns diese in unser ASN.1 Asset kopieren und einfügen (1) (es sind etwa 1.422 Zeilen):

Interaktives Testen der ASN.1 Grammatik

layline.io bietet die Möglichkeit, sofort zu überprüfen, ob die Formatkonfiguration mit den tatsächlichen Daten übereinstimmt. Sie können eine Beispieldatei (1) direkt in das Configuration Center (2) hochladen, um einen Abgleich durchzuführen.

layline.io wird sofort:

  1. Einen Parser für die ASN.1 Grammatik generieren
  2. Die Beispieldatei parsen
  3. Das Ergebnis zurückgeben (3 & 4)

Wechseln Sie zur Registerkarte "Sample Messages" (2), wo wir eine lesbarere Ansicht des Dateiinhalts erhalten können:

Interaktives Testen bedeutet, dass Sie jetzt zur Grammatik zurückkehren, sie ändern und dann sofort sehen könnten, wie sich dies auf die Interpretation Ihrer Beispieldaten auswirkt.

Beispielprojekt

Wir haben ein komplettes Beispielprojekt zusammen mit Testdaten zusammengestellt, das in layline.io bereit ist, ausgeführt zu werden. Das Beispiel liest und schreibt einfach eine TAP-Datei und gibt deren Inhalt in einem JSON-Format auf der Konsole aus:

Zusammenfassung

Mit layline.io können Sie nicht nur komplexe, verteilte, skalierbare Event-Verarbeitungsszenarien definieren, sondern auch mit nahezu jedem Datenformat arbeiten. In diesem Beispiel haben wir gezeigt, wie man mit ASN.1 strukturierten Daten umgeht.

Die meisten anderen Lösungen unterstützen nur spezifische Formate, da ihre Parser fest codiert sind, um einem bestimmten Anwendungsfall zu entsprechen. In layline.io gibt es buchstäblich Millionen von Anwendungsfällen. Deshalb sind Formate nie fest codiert, sondern konfigurierbar.

Es gibt viele beliebte ASN.1 Protokolle weltweit, von denen wir einige unten auflisten möchten:

  • 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)
  • Und viele mehr...

Ressourcen

#Beschreibung
1Github: Einfaches ASN.1 Projekt
Share:

Enjoyed this article?

Subscribe to get more insights delivered to your inbox.