Introduzione ad ASN.1
Nel nostro ultimo articolo "Damn that Data Format Hell" abbiamo parlato di come layline.io gestisce la moltitudine di formati di dati strutturali complessi utilizzando un linguaggio di grammatica per descrivere quasi qualsiasi formato, permettendoti di lavorare immediatamente con i dati.
Abbiamo anche discusso che questo non funziona per TUTTI i formati con cui potresti lavorare, ma forse per l'80% di tutti i formati strutturati.
Ci sono formati di scambio dati là fuori, tuttavia, che aderiscono al loro standard e vengono con il loro linguaggio di grammatica. Uno di questi è Abstract Syntax Notation One, alias ASN.1.
layline.io Showcase
In questo articolo mostreremo come i nostri utenti possono definire formati basati su ASN.1 utilizzando layline.io.
layline.io è un processore di dati di eventi con opinioni. Incapsula la potenza della gestione dei flussi reattivi in un framework che rende facile e diretto l'impostazione, il deployment e il monitoraggio dei requisiti di elaborazione dei dati di eventi su larga scala.
TD.57 - Procedura di Trasferimento Conti (TAP)
Un'area popolare in cui il formato del protocollo ASN.1 svolge un ruolo importante è nel roaming delle telecomunicazioni e nel conseguente processo di scambio TAP. TAP (Transferred Accounts Procedure) gestisce il processo di regolamento finanziario tra le reti mobili per i loro abbonati in roaming.
In poche parole: se usi il tuo cellulare in una rete visitata (ad esempio, un altro paese o semplicemente un'altra rete), allora la rete visitata deve fatturare la tua rete domestica per il servizio fornito. Le informazioni su chi ha usato il telefono in una rete visitata, per quanto tempo e chi ha chiamato, ecc. sono tutte scambiate nei file TAP e RAP.

Il nostro esempio: configurazione del formato file TAP3.11
Grammatica TAP3.11
Ecco come appare l'inizio della grammatica ufficiale TAP3.11:
-- TD57_3.11.2
--
-- La seguente specifica ASN.1 definisce la sintassi astratta per
-- Formato Record Dati Versione 03
-- Rilascio 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,
...
}
Creare Asset ASN.1
Impostiamo TAP3.11 utilizzando layline.io. Nella vista Project Asset (1) scegli Formati (2) e poi ASN.1 Format (3).

L'editor di Asset ha due schede "Configuration" e "Modules". Nella scheda "Configuration" (1) nominiamo l'Asset "TAP3.11" (2):

Definire Tipi di Messaggio
TAP3.11 definisce un numero di diversi tipi di messaggio "root". Ne identificheremo solo tre per lavorare con questo esempio:

In layline.io li mappiamo rispettivamente su "Header", "Detail" e "Trailer":

Più avanti eseguiremo il debug dell'output dei dati che leggiamo. Poiché alcuni dati sono codificati in BCD e per leggibilità utilizziamo un convertitore integrato per decodificarli:

Aggiungere la grammatica TAP3.11
Passa alla scheda Modules (2) dell'Asset ASN.1 che abbiamo aggiunto (1).
Una grammatica ASN.1 può essere composta da più moduli. Nel nostro caso è solo uno. L'abbiamo aggiunto e chiamato "TAP.311-Module" (3/4).

Puoi trovare la grammatica ASN.1 originale per TAP3.11 nella specifica scritta:

Copiamola e incolliamola nel nostro Asset ASN.1 (1) (sono circa 1.422 righe):

Test Interattivo della Grammatica ASN.1
layline.io offre la possibilità di verificare immediatamente se la configurazione del formato corrisponde ai dati effettivi. Puoi caricare un file di esempio (1) direttamente nel Configuration Center (2) per eseguire un controllo incrociato.

layline.io immediatamente:
- Genera un parser per la grammatica ASN.1
- Analizza il file di esempio
- Restituisce il risultato (3 & 4)

Passa alla scheda "Sample Messages" (2) dove possiamo ottenere una vista più leggibile del contenuto del file:

Il test interattivo significa che ora potresti tornare alla grammatica, modificarla e vedere immediatamente come questo influisce sull'interpretazione dei tuoi dati di esempio.
Progetto di Esempio
Abbiamo messo insieme un progetto di esempio completo con dati di test pronto per essere eseguito in layline.io. L'esempio semplicemente legge e scrive un file TAP e ne visualizza il contenuto sulla console in formato JSON:


Sommario
Utilizzando layline.io non solo puoi definire scenari di elaborazione di eventi complessi, distribuiti e scalabili, ma puoi praticamente lavorare con qualsiasi formato di dati. In questo esempio abbiamo dimostrato come gestire i dati strutturati ASN.1.
La maggior parte delle altre soluzioni supporterà solo formati specifici, poiché i loro parser sono stati codificati per corrispondere a un caso d'uso specifico. In layline.io ci sono letteralmente milioni di casi d'uso. Ecco perché i formati non sono mai codificati, ma configurabili.
Ci sono molti protocolli ASN.1 popolari nel mondo di cui vorremmo elencarne alcuni qui sotto:
- 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 Procedura di Trasferimento Conti
- Servizi di Directory X.500
- Protocollo Leggero di Accesso alla Directory (LDAP)
- Standard di Crittografia PKCS
- Protocollo Semplice di Gestione della Rete (SNMP)
- Sistema di Segnalazione No. 7 (SS7)
- Evoluzione a Lungo Termine (LTE)
- E molti altri...
Risorse
| # | Descrizione |
|---|---|
| 1 | Github: Progetto Semplice ASN.1 |
| # | Documentazione |
|---|---|
| 1 | Getting Started |
| 2 | Generic Format Asset |
| 3 | ASN.1 su Wikipedia |
- Leggi di più su layline.io qui.
- Contattaci a hello@layline.io.


