Back to Blog
TutorialMay 11, 20225 min

Configuración de Formato ASN.1

ASN.1 sigue siendo un formato de datos popular. Aprende lo fácil que es configurar cualquier formato ASN.1 en layline.io.

Configuración de Formato ASN.1

Introducción a ASN.1

En nuestro último artículo "Maldito Infierno de Formatos de Datos" hablamos sobre cómo layline.io maneja la multitud de formatos de datos estructurales complejos utilizando un lenguaje de gramática para describir casi cualquier formato de este tipo, y permitiéndote trabajar instantáneamente con los datos.

También discutimos que esto no funciona para TODOS los formatos con los que podrías estar trabajando, pero tal vez para el 80% de todos los formatos estructurados.

Sin embargo, existen formatos de intercambio de datos en el mundo que se adhieren a su propio estándar y vienen con su propio lenguaje de gramática. Uno de ellos es Abstract Syntax Notation One, también conocido como ASN.1.

Demostración de layline.io

En este artículo mostraremos cómo nuestros usuarios pueden definir formatos basados en ASN.1 usando layline.io.

layline.io es un procesador de datos de eventos con opiniones. Envuelve el poder de la gestión de flujos reactivos en un marco que facilita la configuración, implementación y monitoreo de requisitos de procesamiento de datos de eventos a gran escala de manera fácil y directa.

TD.57 - Procedimiento de Cuenta Transferida (TAP)

Un área popular donde el formato de protocolo ASN.1 juega un papel importante es en el roaming de telecomunicaciones y el subsiguiente proceso de intercambio TAP. TAP (Procedimiento de Cuentas Transferidas) maneja el proceso de liquidación financiera entre redes móviles para sus suscriptores en roaming.

En resumen: Si usas tu teléfono móvil en una red visitante (por ejemplo, otro país o simplemente otra red), entonces la red visitada necesita facturar a tu red de origen por el servicio proporcionado. La información sobre quién usó su teléfono en una red visitada, cuánto tiempo y a quién llamaron, etc. se intercambia en archivos TAP y RAP.

Nuestro ejemplo: configuración del formato TAP3.11

Gramática TAP3.11

Así es como se ve el comienzo de la gramática oficial TAP3.11:

-- TD57_3.11.2
--
-- La siguiente especificación ASN.1 define la sintaxis abstracta para
--        Formato de Registro de Datos Versión 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,
    ...
}

Crear Asset ASN.1

Vamos a configurar TAP3.11 usando layline.io. En la Vista de Assets del Proyecto (1) selecciona Formats (2) y luego ASN.1 Format (3).

El editor de Assets tiene dos pestañas "Configuration" y "Modules". En la pestaña "Configuration" (1) nombramos el Asset "TAP3.11" (2):

Definir Tipos de Mensajes

TAP3.11 define varios tipos de mensajes "raíz" diferentes. Solo vamos a identificar tres de ellos para trabajar en este ejemplo:

En layline.io los mapeamos a "Header", "Detail" y "Trailer" respectivamente:

Más adelante vamos a depurar la salida de los datos que leemos. Debido a que algunos datos están codificados en BCD y por legibilidad utilizamos un convertidor incorporado para decodificarlos:

Añadiendo la gramática TAP3.11

Cambia a la pestaña Modules (2) del Asset ASN.1 que hemos añadido (1).

Una gramática ASN.1 puede estar compuesta de múltiples módulos. En nuestro caso es solo uno. Lo hemos añadido y lo hemos nombrado "TAP.311-Module" (3/4).

Puedes encontrar la gramática original ASN.1 para TAP3.11 en la especificación escrita:

Vamos a copiar y pegarla en nuestro Asset ASN.1 (1) (son unas 1,422 líneas):

Pruebas Interactivas de la Gramática ASN.1

layline.io proporciona la capacidad de verificar instantáneamente si la configuración del formato coincide con los datos reales. Puedes cargar un archivo de muestra (1) directamente en el Configuration Center (2) para realizar una verificación cruzada.

layline.io instantáneamente:

  1. Genera un analizador para la gramática ASN.1
  2. Analiza el archivo de muestra
  3. Devuelve el resultado (3 y 4)

Cambia a la pestaña "Sample Messages" (2) donde podemos obtener una vista más legible del contenido del archivo:

Las pruebas interactivas significan que ahora podrías volver a la gramática, cambiarla y luego ver instantáneamente cómo esto afecta la interpretación de tus datos de muestra.

Proyecto de Muestra

Hemos reunido un Proyecto de muestra completo junto con datos de prueba que está listo para ejecutarse en layline.io. El ejemplo simplemente lee y escribe un archivo TAP y muestra su contenido en la consola en un formato JSON:

Resumen

Usando layline.io no solo puedes definir escenarios de procesamiento de eventos complejos, distribuidos y escalables, sino que prácticamente puedes trabajar con cualquier formato de datos. En este ejemplo demostramos cómo manejar datos estructurados ASN.1.

La mayoría de las otras soluciones solo soportarán formatos específicos, ya que sus analizadores han sido codificados para coincidir con un caso de uso específico. En layline.io hay literalmente millones de casos de uso. Por eso los formatos nunca están codificados, sino que son configurables.

Existen muchos protocolos ASN.1 populares en todo el mundo de los cuales nos gustaría enumerar algunos a continuación:

  • 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 Procedimiento de Cuenta Transferida
  • Servicios de Directorio X.500
  • Protocolo Ligero de Acceso a Directorios (LDAP)
  • Estándares de Criptografía PKCS
  • Protocolo Simple de Gestión de Redes (SNMP)
  • Sistema de Señalización No. 7 (SS7)
  • Evolución a Largo Plazo (LTE)
  • Y muchos más...

Recursos

#Descripción
1Github: Proyecto Simple ASN.1
Share:

Enjoyed this article?

Subscribe to get more insights delivered to your inbox.