Back to Blog
TutorialMay 11, 20225分

ASN.1フォーマット設定

ASN.1は依然として人気のあるデータフォーマットです。layline.ioで任意のASN.1フォーマットをどれほど簡単に設定できるかを学びましょう。

ASN.1フォーマット設定

ASN.1の紹介

前回の記事「Damn that Data Format Hell」では、layline.ioが複雑な構造データ形式の多くを、ほぼどんな形式でも記述できる文法言語を使用して扱い、データと即座に連携できるようにする方法について説明しました。

また、すべての形式に対してこれが機能するわけではなく、構造化された形式の約80%に対して機能することも議論しました。

しかし、独自の標準に従い、独自の文法言語を持つデータ交換形式も存在します。その一つがAbstract Syntax Notation One、通称ASN.1です。

layline.ioのショーケース

この記事では、layline.ioを使用してユーザーがASN.1ベースの形式をどのように定義できるかを紹介します。

layline.ioは、意見のあるイベントデータプロセッサです。大規模なイベントデータ処理の要件を簡単かつ直接的に設定、展開、監視できるようにするフレームワークで、リアクティブストリーム管理の力を包み込みます。

TD.57 - 転送アカウント手続き (TAP)

ASN.1プロトコル形式が重要な役割を果たす人気のある分野の一つは、通信ローミングとそれに続くTAP交換プロセスです。TAP(転送アカウント手続き)は、ローミング加入者のためのモバイルネットワーク間の財務決済プロセスを処理します。

要するに、訪問先のネットワーク(例:他の国や単に他のネットワーク)で携帯電話を使用した場合、訪問先のネットワークは提供したサービスについて自宅のネットワークに請求する必要があります。訪問先のネットワークで誰が電話を使用したか、どのくらいの時間使用したか、誰に電話したかなどの情報はすべてTAPとRAPファイルで交換されます。

私たちの例: TAP3.11ファイル形式の設定

TAP3.11文法

公式のTAP3.11文法の冒頭は次のようになっています:

-- TD57_3.11.2
--
-- 次のASN.1仕様は、データレコード形式バージョン03の抽象構文を定義します
-- リリース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,
    ...
}

ASN.1 Assetの作成

layline.ioを使用してTAP3.11を設定しましょう。プロジェクトAssetビュー(1)でFormats(2)を選択し、ASN.1 Format(3)を選びます。

Assetエディタには「Configuration」と「Modules」の2つのタブがあります。「Configuration」タブ(1)でAssetを「TAP3.11」と命名します(2):

メッセージタイプの定義

TAP3.11はいくつかの異なる「ルート」メッセージタイプを定義しています。この例ではそのうちの3つのみを識別して作業します:

layline.ioでは、それらを「Header」、「Detail」、「Trailer」にそれぞれマッピングします:

後で読み取ったデータをデバッグ出力します。いくつかのデータはBCDエンコードされているため、読みやすさのために内蔵のコンバーターを使用してデコードします:

TAP3.11文法の追加

追加したASN.1 AssetのModulesタブ(2)に切り替えます(1)。

ASN.1文法は複数のモジュールで構成されることがあります。私たちの場合は1つだけです。追加して「TAP.311-Module」と命名しました(3/4)。

TAP3.11の元のASN.1文法は書面の仕様で見つけることができます:

それをASN.1 Assetにコピー&ペーストしましょう(1)(約1,422行です):

ASN.1文法のインタラクティブテスト

layline.ioは、形式の設定が実際のデータと一致するかどうかを即座に確認する機能を提供します。サンプルファイル(1)をConfiguration Center(2)に直接アップロードしてクロスチェックを行うことができます。

layline.ioは即座に:

  1. ASN.1文法のパーサーを生成
  2. サンプルファイルを解析
  3. 結果をフィードバック(3 & 4)

「Sample Messages」タブ(2)に切り替えると、ファイル内容をより読みやすく表示できます:

インタラクティブテストとは、文法に戻って変更を加え、その変更がサンプルデータの解釈にどのように影響するかを即座に確認できることを意味します。

サンプルプロジェクト

layline.ioで実行可能なテストデータを含む完全なサンプルプロジェクトを用意しました。この例では、TAPファイルを読み書きし、その内容をJSON形式でコンソールに出力します:

まとめ

layline.ioを使用すると、複雑で分散されたスケーラブルなイベント処理シナリオを定義できるだけでなく、ほぼすべてのデータ形式を扱うことができます。この例では、ASN.1構造化データを扱う方法を示しました。

他の多くのソリューションは、特定の形式のみをサポートしますが、layline.ioでは文字通り何百万ものユースケースがあります。したがって、形式は決してハードコーディングされず、設定可能です。

世界中には多くの人気のあるASN.1プロトコルがあり、以下にいくつかを挙げます:

  • Ericsson AIR / AXE10 / CCN / CCR / MTAS / R3-R13 / SDP
  • Huawei IMS
  • 4G UMTS / 5G IMS / 3GPP
  • TD.35 NRTRDE - 近リアルタイムローミングデータ交換
  • TD.57 / TAP2 / TAP3 転送アカウント手続き
  • X.500 ディレクトリサービス
  • 軽量ディレクトリアクセスプロトコル (LDAP)
  • PKCS 暗号化標準
  • シンプルネットワーク管理プロトコル (SNMP)
  • シグナリングシステムNo. 7 (SS7)
  • ロングタームエボリューション (LTE)
  • その他多数...

リソース

#説明
1Github: Simple ASN.1 Project
Share:

Enjoyed this article?

Subscribe to get more insights delivered to your inbox.