Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

はじめに

wpg (web-packet-generator) は、Web GUI で動作するネットワーク検証向けの Rust 製パケットジェネレータです。IS-IS や CLNP など OSI 系の深いプロトコルまで含め、任意のパケットを組み立てて高速に送出できます。送出バックエンドは pcap/Npcap から AF_PACKET、AF_XDP、DPDK まで選択可能です。Windows / macOS / Linux 向けの単一バイナリとして配布されます。利用は検証環境に限定してください。

どこから読むか

  1. インストール方法を選ぶ: 手元の OS でソースからビルドする、SSH で Linux の検証ホストにデプロイする、Docker イメージで動かす、のいずれかを選びます。
  2. 選んだ方法のインストールページに沿って進めます。wpg doctor が送信できないと報告したら 権限設定 を読みます。
  3. 初回ログイン: パスワードを設定し、画面をひととおり見ます。
  4. チュートリアルを ARP スイープ から順に進めます。

送信以外は権限なしで試せます。テンプレートを pcapng ファイルに書き出すだけなら raw ソケットは不要です。

用語

用語意味
テンプレートパケットをレイヤ (ethernet2、ipv4、udp など) の積み重ねとして記述する .wpg.yaml ファイル。フィールドの値、変数、ジェネレータを含みます。保存・共有・送信の単位です。テンプレートスキーマ を参照。
ライブラリwpg が読み込むテンプレートのディレクトリ。既定は ./templates です。同梱ライブラリには examples、protocols、scenarios、malformed、interop があります。
フィールドジェネレータフレームごとに変わるフィールドの値。範囲、リスト、乱数、カウンタ、ファイルからの値、式があります。1 つのテンプレートから多数のフレーム (ストリーム) を生成できます。
ビルダーテンプレートをレイヤ単位で編集し、16 進ダンプとフィールドツリーをブラウザ上でプレビューする GUI 画面。
ジョブテンプレートを、あるインタフェースから、レート (pps、bps、回線速度の %) と個数または時間を指定して送る 1 回の実行。統計がリアルタイムに表示されます。
バックエンドフレームの送り出し方。Linux では afpacket、afxdp、dpdk、全 OS で pcap (libpcap / Npcap / BPF)、送らずに pcapng に書き出す pcapfile (ドライラン)、ベンチマーク用の null があります。
wpg doctor権限、インタフェース、カーネル機能、ライブラリを確認する自己診断。失敗した項目ごとに対処方法を表示します。

同じバイナリがサーバ (wpg serve: Web UI と REST API) とコマンドラインツール (wpg send、wpg render、wpg template lint など) を兼ねます。CLI リファレンス を参照してください。

このマニュアルの構成

  • はじめに (Getting Started): インストール、権限設定、初回ログイン。
  • チュートリアル: ARP スイープ、レート制御、pcap の再生、IS-IS の隣接確立などを最初から最後まで行う手順。
  • リファレンス: 全プロトコル、テンプレートスキーマ、API、CLI、wpg.toml の生成ページ。
  • 運用: デプロイ、サービス化、Docker、アップグレード、高速バックエンド、TLS、受信と検証。
  • 開発者ガイド: crate 構成、プロトコルと翻訳の追加手順。

送信は、自分が管理しているか試験を許可されたネットワークでだけ行ってください。法的注意 を参照してください。

インストール方法を選ぶ

wpg は Web UI を組み込んだ単一の wpg 実行ファイルです。リリースバイナリはまだ公開していないため、下のどの方法でもソースからビルドします。違いは、どこでビルドし、どう動かすかです。

必要なもの

  • wpg を動かすマシン: Linux (Ubuntu 20.04 以降と同等のディストリビューション)、macOS 12 以降、Windows 10 21H2 以降。
  • 試験したい検証ネットワークにつながったネットワークインタフェース。自分が管理していない、または試験を許可されていないネットワークへの送信はできません。
  • ブラウザ。同じマシン上のもの、またはパスワードを設定してローカル以外のアドレスで待ち受ければ別のマシンのもの。

方法を選ぶ

やりたいこと方法必要なもの
Linux の検証ホスト (CML2、EVE-NG、VM) で、高レートで、サービスとして動かすscripts/deploy.sh によるデプロイ: SSH でホスト上に wpg をビルドし、systemd ユニットを入れるウィザード。Windows (scripts\deploy.bat)、Linux、macOS のどれからでも始められます。ホストへの SSH と sudo
Rust ツールチェーンを入れずに Linux ホストで動かすDocker で動かすLinux ホストの Docker
自分の PC で使う、または開発するソースからビルド: Linux、macOS、Windowsrustup (残りは scripts/setup.sh か setup.ps1 が入れる)。Windows では Npcap

選ぶときの注意:

  • レート。 Windows は Npcap だけで送信し、GUI での低〜中レートの利用を想定しています。macOS は BPF で送信します。高レート (AF_PACKET、AF_XDP、DPDK) には Linux を使ってください。
  • Docker Desktop (macOS / Windows) はコンテナを VM の中で動かすので、フレームは物理 NIC に届きません。Docker は Linux ホストでだけ使ってください。
  • まだ権限がない場合。 どの方法でも、テンプレートの pcapng への書き出しと Web UI は raw ソケットの権限なしで使えます。権限が要るのは送信だけです (権限設定)。

インストールの後

どの方法でも、次の手順は同じです。

  1. wpg doctor を実行し、送信について報告された問題を直します (権限設定)。
  2. wpg serve でサーバを起動し (デプロイスクリプトと Docker では起動済みです)、http://127.0.0.1:8080 を開きます。
  3. パスワードを設定して画面を見て回ります: 初回ログイン。
  4. まずドライラン (pcapfile バックエンドは送信せずに pcapng ファイルへ書き出します) を試し、ARP スイープのチュートリアル で実際に送信します。

うまくいかないときは FAQ / トラブルシュート を参照してください。

Linux へのインストール

対応: Ubuntu 20.04 以降 (glibc 2.31) と同等のディストリビューション。リリースバイナリはまだ公開していないため、ソースからビルドします。成果物は Web UI を組み込んだ単一の wpg 実行ファイルです。

1. 前提ソフトウェアを入れる

# Rust ツールチェーンのインストーラ (rustup.rs) と、リンク用の C ツールチェーン
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo apt install build-essential pkg-config git

git clone https://github.com/SeiyaFunaokaJP/web-packet-generator.git
cd web-packet-generator
./scripts/setup.sh          # --just を付けるとタスクランナー just も入れる

scripts/setup.sh は rust-toolchain.toml で固定した Rust ツールチェーンと Web UI 用の WASM ターゲット、scripts/versions.env で固定したバージョンのビルド済み trunk (Web UI のバンドラ) を入れ、最後に次に実行するコマンドを表示します。

Linux は AF_PACKET で送信するので、追加のライブラリは不要です。任意の libpcap バックエンド (--features pcap) を使う場合だけ sudo apt install libpcap-dev が必要です。tshark (パッケージ名 tshark) は任意です。チュートリアルで生成したキャプチャの確認に使います。

2. ビルドする

./scripts/build.sh --release        # または: just release

スクリプトは trunk で Web UI を、続いて cargo で wpg バイナリをビルドして、==> done: target/release/wpg と表示します。オプションのバックエンドには --features pcap、--features afxdp、--dpdk を付けます。trunk が無い場合、バイナリはビルドされますが Web UI はスキップされます。

3. 権限なしで試す

ファイルへの書き出しに特別な権限は不要なので、まず動作を確認できます。

./target/release/wpg doctor
./target/release/wpg template lint templates/examples/*.wpg.yaml
./target/release/wpg render templates/examples/arp-sweep.wpg.yaml -o /tmp/arp.pcapng

wpg doctor は送信に不足しているものを報告します (権限設定)。次の手順を行うまでは caps.raw_socket が失敗して構いません。

4. 生ソケット送信を許可する

root で実行するか、バイナリに一度だけ capability を付与します (ファイルを置き換えると失われます)。

sudo setcap cap_net_raw,cap_net_admin+ep ./target/release/wpg
./target/release/wpg doctor

5. サーバを起動する

./target/release/wpg serve            # 開発用のホットリロードは: just run

既定では 127.0.0.1:8080 で待ち受け、./templates のテンプレートを読み込みます。ブラウザで http://127.0.0.1:8080 を開き、パスワードと最初の画面は次ページの 初回ログイン を参照してください。別のマシンからアクセスするには、パスワードを設定したうえで --bind 0.0.0.0:8080 (または wpg config init で作る wpg.toml の bind) を使います。設定リファレンス を参照してください。ラボのホストに常設するときは scripts/deploy.sh がバイナリのコピー、setcap、systemd ユニットの投入を行います。CML2 での注意点 も参照してください。

最初のフレームを送る

./target/release/wpg ifaces
./target/release/wpg send templates/examples/arp-sweep.wpg.yaml -i eth1 --rate 1000pps

送信してよいのは、自分が所有する、または試験を許可されたネットワークだけです。続けて ARP スイープのチュートリアル に進んでください。

macOS へのインストール

対応: macOS 12 以降。リリースバイナリはまだ公開していないため、ソースからビルドします。成果物は Web UI を組み込んだ単一の wpg 実行ファイルです。macOS は libpcap を標準で持つので、追加のライブラリは不要です。macOS で送信できるのは libpcap バックエンド (pcap feature) だけなので、scripts/build.sh (と just release) は macOS では自動でこれを組み込みます (--no-pcap で外せます)。リリースアーカイブにも含まれます。

1. 前提ソフトウェアを入れる

xcode-select --install                     # コンパイラとリンカ
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
brew install wireshark                     # 任意: tshark と ChmodBPF (下記)

git clone https://github.com/SeiyaFunaokaJP/web-packet-generator.git
cd web-packet-generator
./scripts/setup.sh                         # --just を付けるとタスクランナー just も入れる

scripts/setup.sh は rust-toolchain.toml で固定した Rust ツールチェーンと WASM ターゲット、scripts/versions.env で固定したバージョンのビルド済み trunk を入れます。

2. ビルドする

./scripts/build.sh --release        # または: just release

最後に ==> done: target/release/wpg と表示されます。

3. 権限なしで試す

./target/release/wpg doctor
./target/release/wpg template lint templates/examples/*.wpg.yaml
./target/release/wpg render templates/examples/arp-sweep.wpg.yaml -o /tmp/arp.pcapng

4. 送信を許可する

送信は /dev/bpf* を通ります。sudo で wpg を実行するか、デバイスをアクセス可能にします。Wireshark を ChmodBPF ヘルパー付きでインストールすると、access_bpf グループのメンバーに対してそれが行われます。お使いのマシンに合った案内は wpg doctor が表示します。権限設定 を参照してください。

5. サーバを起動する

./target/release/wpg serve

既定では 127.0.0.1:8080 で待ち受け、./templates のテンプレートを読み込みます。ブラウザで http://127.0.0.1:8080 を開き、初回ログイン に進んでください。

最初のフレームを送る

./target/release/wpg ifaces
sudo ./target/release/wpg send templates/examples/arp-sweep.wpg.yaml -i en0 --rate 1000pps

送信してよいのは、自分が所有する、または試験を許可されたネットワークだけです。続けて ARP スイープのチュートリアル に進んでください。

リリースバイナリ: Gatekeeper と quarantine

リリースアーカイブ (Apple シリコン用の wpg-<version>-aarch64-apple-darwin.tar.gz、Intel 用の ...-x86_64-apple-darwin.tar.gz) は署名も公証もしていません。ブラウザでダウンロードしたファイルには com.apple.quarantine 属性が付き、Gatekeeper が実行を拒否します (「Apple は悪質なソフトウェアかどうかを確認できないため、“wpg” を開けません」や「壊れているため開けません」と表示されます)。上の手順でソースからビルドすれば、この問題は起きません。

まずダウンロードしたファイルを確認し、展開したファイルから属性を外します。

shasum -a 256 -c wpg-0.2.0-aarch64-apple-darwin.tar.gz.sha256   # または SHA256SUMS と比べる
tar -xzf wpg-0.2.0-aarch64-apple-darwin.tar.gz
xattr -dr com.apple.quarantine wpg-0.2.0-aarch64-apple-darwin
./wpg-0.2.0-aarch64-apple-darwin/wpg --version

別の方法:

  • ブラウザではなく curl -LO でダウンロードします。curl は quarantine 属性を付けません。
  • 一度実行してから、システム設定 → プライバシーとセキュリティ で許可します (「このまま開く」)。次の起動時にもう一度確認され、以後は記憶されます。
  • Finder の近道 (Control キーを押しながらクリック → 開く) は macOS 15 で廃止され、コマンドラインツールにはもともと使えません。xattr かシステム設定を使ってください。

Gatekeeper 全体を無効にする (spctl --master-disable) ことはしないでください。新しくダウンロードしたファイルにはそのたびに属性が付くので、アップグレードのたびに外し直してください。起動時に wpg を動かす方法は サービスとして動かす を参照してください。

Windows へのインストール

対応: Windows 10 21H2 以降。リリースバイナリはまだ公開していないため、ソースからビルドします。送信は Npcap のみを使い、GUI での低〜中レート利用を想定しています。高いレートが必要なときは Linux を使ってください。以下のコマンドは PowerShell 用です。

Windows から Linux の検証用ホストに wpg を入れたいだけなら、Windows 上でビルドする必要はありません。リポジトリを手元に用意し (git clone、または GitHub の「Download ZIP」を展開)、scripts\deploy.bat をダブルクリックします。ウィザードが接続先、SSH のユーザとパスワード、sudo パスワード、Web UI の管理者パスワード、送信に使うインタフェースを日本語で聞き、ホスト上で wpg をビルドしてサービスとして入れます。必要なのは Windows 10 / 11 標準の OpenSSH クライアントだけです。デプロイ を参照してください。

1. 前提ソフトウェアを入れる

  1. rustup をインストールします (既定の MSVC ツールチェーンを選びます。Visual Studio Build Tools の「C++ によるデスクトップ開発」が無い場合は案内されます)。

  2. Npcap をインストールします (既定のオプションのままでかまいません。WinPcap API 互換モードは不要です)。送信に必要です。

  3. リポジトリを取得し、セットアップスクリプトを実行します。

    git clone https://github.com/SeiyaFunaokaJP/web-packet-generator.git
    cd web-packet-generator
    .\scripts\setup.ps1              # -Just を付けるとタスクランナー just も入れる
    

    rust-toolchain.toml で固定した Rust ツールチェーンと WASM ターゲット、scripts\versions.env で固定したバージョンのビルド済み trunk と Npcap SDK (C:\Npcap-SDK に展開) を入れ、まだ足りないもの (C++ ビルドツール、Npcap) を表示します。PowerShell がスクリプトの実行を拒否する場合は powershell -ExecutionPolicy Bypass -File .\scripts\setup.ps1 で実行してください。

    SDK は Npcap バックエンド (pcap feature) のリンクに必要です。Windows で送信できるのはこのバックエンドだけです。自分で展開した SDK も、scripts\build.ps1 が C:\npcap-sdk-<バージョン> (zip の名前のまま。複数あれば新しいもの)、環境変数 NPCAP_SDK で指定したディレクトリ、SDK の Lib\x64 を指す LIBPCAP_LIBDIR から見つけます。SDK が無くてもビルドは成功しますが、できた wpg.exe は送信できず、build.ps1 が警告します。

  4. 任意: Wireshark (tshark 用)。

2. ビルドする

.\scripts\build.ps1 -Release       # または: just release

SDK が見つかると ==> Npcap SDK: LIBPCAP_LIBDIR=... と表示し、最後に ==> done: target\release\wpg.exe と表示されます。主な使い方は次のとおりです。

コマンド結果
.\scripts\build.ps1デバッグビルド (target\debug\wpg.exe)。SDK が見つかれば Npcap バックエンドを組み込む
.\scripts\build.ps1 -Release最適化ビルド (target\release\wpg.exe)。SDK の検出は同じ
.\scripts\build.ps1 -NoPcapSDK があっても Npcap バックエンドなしでビルドする (送信不可)
.\scripts\build.ps1 -Features pcapNpcap バックエンドを必須にする。SDK が見つからなければエラーで止まる
Get-Help .\scripts\build.ps1 -Detailedすべてのパラメータ

trunk が無いとフロントエンドのビルドは警告付きで省略されます (Web UI は古い、または存在しない crates\wpg-web\dist を配信します)。

3. 権限なしで試す

.\target\release\wpg.exe doctor
.\target\release\wpg.exe render templates\examples\arp-sweep.wpg.yaml -o $env:TEMP\arp.pcapng

4. 送信を許可する

wpg doctor が Npcap をインストール済み (npcap)、Npcap バックエンドを組み込み済み (backend.pcap) と報告することを確認します。backend.pcap が fail なら build.ps1 が Npcap SDK を見つけられていないので、.\scripts\setup.ps1 を実行して (手順 1) ビルドし直してください。Npcap を既定のオプションで入れていれば、通常の PowerShell から送信できます (caps.raw_socket は ok)。「Restrict Npcap driver’s access to Administrators only」を選んで入れた場合は caps.raw_socket が fail になるので、送信するときは 管理者として PowerShell を開いて ください。権限設定 を参照してください。

5. サーバを起動する

.\scripts\run.ps1                  # または: .\target\release\wpg.exe serve

既定では 127.0.0.1:8080 で待ち受け、.\templates のテンプレートを読み込みます。ブラウザで http://127.0.0.1:8080 を開き、初回ログイン に進んでください。Windows ファイアウォールが wpg.exe の許可を求めたときは、ローカル以外のアドレスに bind する場合に限り、プライベートネットワークだけを許可してください。

最初のフレームを送る

.\target\release\wpg.exe ifaces
.\target\release\wpg.exe send templates\examples\arp-sweep.wpg.yaml -i <インタフェース> --rate 1000pps

インタフェース名は wpg ifaces の表示 ({GUID}) を使います (tshark -D が表示する \Device\NPF_{GUID} でもかまいません)。Npcap のループバックアダプタ (\Device\NPF_Loopback) は Ethernet フレームを受け付けません (PacketSendPacket failed ... (50))。実ネットワークに出さずに送信を試すときは、Hyper-V の vEthernet (Default Switch) や VMware のホストオンリーアダプタなどの仮想アダプタを使い、wpg capture -i <インタフェース> --backend pcap --include-outgoing か tshark で確認してください。送信してよいのは、自分が所有する、または試験を許可されたネットワークだけです。続けて ARP スイープのチュートリアル に進んでください。

リリースアーカイブと Npcap の確認

リリースアーカイブ (wpg-<version>-x86_64-pc-windows-msvc.zip) には、Web UI と Npcap バックエンドを組み込んだ wpg.exe、サンプルテンプレート、packaging\windows\wpg-service.ps1 が入っています。コード署名はしていません。

# 確認してから、展開前に「インターネットからダウンロードした」印を外す
(Get-FileHash .\wpg-0.2.0-x86_64-pc-windows-msvc.zip -Algorithm SHA256).Hash   # SHA256SUMS と比べる
Unblock-File .\wpg-0.2.0-x86_64-pc-windows-msvc.zip
Expand-Archive .\wpg-0.2.0-x86_64-pc-windows-msvc.zip -DestinationPath "C:\Program Files\wpg"

それでも SmartScreen が「Windows によって PC が保護されました」と表示した場合は、一度だけ 詳細情報 → 実行 を選びます。

Npcap は同梱していません (無償版のライセンスでは再配布できません)。wpg.exe は wpcap.dll を /DELAYLOAD でリンクしており、pcap バックエンドを初めて使うときに読み込みます。その際 System32\Npcap を自分で DLL 検索パスに加えるので、Npcap が無くても起動でき、Npcap のどちらのインストールモードでも動きます。wpg doctor と scripts\build.ps1 の両方が確認します。

  • wpg doctor は、Npcap が無いと npcap のチェックを失敗にし、Npcap がインストールされているように見えるのに wpcap.dll が System32\Npcap にも System32 にも無いときは警告します。対処の行に https://npcap.com/#download へのリンクが出ます。
  • Npcap 無しで送信すると、クラッシュせずに Npcap is not installed; install it from https://npcap.com/#download and run wpg doctor で止まります。
  • wpg doctor は、wpg.exe が Npcap バックエンドなしでビルドされていると backend.pcap を失敗にし、SDK を展開して scripts\build.ps1 を再実行するよう案内します。
  • Npcap を管理者専用モードで入れた場合、昇格していないターミナルでは caps.raw_socket が fail になります。管理者ターミナルで実行するか、そのオプションを外して Npcap を入れ直してください。
  • scripts\build.ps1 もビルドの前に警告を出します。Npcap が無くてもビルドは成功しますが送信はできないため、また Npcap SDK なしでビルドするときも警告します。

起動時に wpg をバックグラウンドで動かす方法は サービスとして動かす を参照してください。

Docker で動かす

イメージはコンテナの中で wpg と Web UI をビルドするので、ホストに必要なのは Docker だけです。Rust ツールチェーンも trunk も要りません。Linux ホスト を使ってください。macOS / Windows の Docker Desktop はコンテナを VM の中で動かすため、そこから送ったフレームは物理 NIC に届きません。

このページは最短の手順です。ビルドオプション、プロキシ、全設定、制限は Docker にあります。

1. リポジトリを取得して起動する

git clone https://github.com/SeiyaFunaokaJP/web-packet-generator.git
cd web-packet-generator
WPG_PASSWORD='change me' WPG_ALLOWED_IFACES='["eth1"]' docker compose up -d --build
  • WPG_PASSWORD は必須です。サーバはホストの全アドレスで待ち受けるため、パスワードがないと起動しません。自分で決めた値にしてください。Web UI の管理者パスワードになります。
  • WPG_ALLOWED_IFACES はジョブが送信してよいインタフェースの一覧です。検証用インタフェースの名前を指定します (ip -br link で一覧できます)。省略するとすべて許可します。
  • 初回のビルドはすべてをコンパイルするので時間がかかります。2 回目以降はイメージを再利用します。

コンテナはホストのネットワークを使い、CAP_NET_RAW と CAP_NET_ADMIN だけを持ちます。ホスト上で wpg を root で動かさずに、ホストのインタフェースから送信できます。

2. 確認する

docker compose ps                         # サーバが応答すると STATUS が "healthy" になる
docker compose exec wpg wpg doctor        # コンテナから見た raw ソケットとインタフェース

ホストで http://127.0.0.1:8080 (別のマシンからは http://<ホスト>:8080) を開き、パスワードでログインします。画面の説明は 初回ログイン にあります。

3. テンプレートを試す

同梱テンプレートはコンテナ内の /usr/share/wpg/templates にあり、テンプレート 画面に表示されます。コマンドラインでは、まずファイルに書き出し (何も送信しません)、それから送信します。

docker compose exec wpg wpg render /usr/share/wpg/templates/examples/arp-sweep.wpg.yaml -o /var/lib/wpg/arp.pcapng
docker compose exec wpg wpg send /usr/share/wpg/templates/examples/arp-sweep.wpg.yaml -i eth1 --rate 1000pps

/var/lib/wpg は wpg-data ボリュームです。データベース、自分のテンプレート、上の pcapng のようなファイルは、再起動やイメージの更新後も残ります。送信は、自分が管理しているか試験を許可されたネットワークでだけ行ってください。続きは ARP スイープのチュートリアル です。チュートリアルの wpg ... は docker compose exec wpg wpg ... に読み替えてください。

停止・更新・削除

docker compose logs -f wpg                # ログを追う
docker compose down                       # 停止 (wpg-data ボリュームは残る)
git pull && WPG_PASSWORD='change me' docker compose up -d --build   # 更新
docker compose down -v                    # 停止して wpg-data ボリュームも削除

設定をシェルの履歴に残したくない場合は、docker-compose.yml と同じ場所の .env ファイルに書きます (WPG_PASSWORD=...、WPG_ALLOWED_IFACES=...、WPG_BIND=...)。リポジトリは .env を git と Docker のビルドコンテキストの両方で無視するので、パスワードがコミットされたりイメージに入ったりすることはありません。

権限設定

raw フレームの送出は特権操作であり、必要な権限は OS ごとに異なります。wpg は起動時と wpg doctor の実行時に自己診断を行い、OS 別の対処方法を表示します。管理者設定で、許可インタフェースや最大レートを制限することもできます。

Linux

afpacket バックエンドには CAP_NET_RAW が必要です (CAP_NET_ADMIN も併せて付与します)。root で実行するか、バイナリに capability を付与します。

sudo setcap cap_net_raw,cap_net_admin+eip /path/to/wpg

これは wpg doctor が、実行中のバイナリの実パスで表示するヒントです。バックエンドが EPERM/EACCES で拒否された場合、エラーは次のように案内します。

AF_PACKET needs CAP_NET_RAW: run as root or grant it with `sudo setcap cap_net_raw,cap_net_admin+ep $(command -v wpg)`

file capability はバイナリを置き換えると失われ、nosuid マウント上では無視されます。systemd では AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN を使います。CML2 での注意点も参照してください。

macOS

/dev/bpf* への読み書きアクセスが必要です。sudo で実行するか、デバイスをアクセス可能にします (例: Wireshark の ChmodBPF)。wpg doctor のヒントは sudo /path/to/wpg … (or make /dev/bpf* accessible, e.g. via Wireshark's ChmodBPF) です。

Windows

Npcap が必要です (インストールモードは問いません。wpg が System32\Npcap の wpcap.dll を自分で見つけます)。管理者ターミナルが必要なのは、Npcap を管理者専用モードで入れた場合だけです。wpg doctor はその設定 (HKLM\SYSTEM\CurrentControlSet\Services\npcap\Parameters の AdminOnly) を読み、既定のインストールなら管理者権限なしでも caps.raw_socket を ok (npcap_admin_only=no) に、管理者専用モードなら fail にしてヒント Run from an elevated (Administrator) terminal, or reinstall Npcap ... without "Restrict Npcap driver's access to Administrators only" (管理者ターミナルで実行するか、この選択を外して Npcap を入れ直す) を表示します。設定を読めないときは警告です。Npcap がない場合は https://npcap.com/#download を案内します。

wpg doctor による確認

wpg doctor は 1 チェック 1 行で、角括弧内に安定した id を表示します。wpg doctor --json はスクリプト向けに同じ内容を返します。チェックが fail のとき終了ステータスは 0 以外です。

チェック id未達のときの状態意味
caps.raw_socketfail (Windows は Npcap の管理者専用モードしだい)raw ソケットの権限: CAP_NET_RAW / root / BPF アクセス / 昇格
iface.any_upwarnloopback 以外のインタフェースが carrier 付きで up
kernel.af_xdpwarnAF_XDP バックエンド用にカーネル 5.10 以降
kernel.tpacket_v3warnカーネル 3.2 以降。なければ afpacket は sendmmsg にフォールバック
hugepageswarnHugepages の設定。DPDK バックエンドでのみ必要
npcapfail / warn (Windows のみ)Npcap が導入され、wpcap.dll が System32\Npcap か System32 にあること。他の OS では skip
backend.pcapfail (Windows、macOS)pcap バックエンドが組み込まれていること。Windows と macOS で送信できるのはこのバックエンドだけ。Linux では skip
pcap_libwarnlibpcap が見つかること (pcap バックエンドで必要)。Windows と、バックエンドを組み込んでいないときは skip
webui.embeddedwarnこのバイナリに Web UI が組み込まれていること

各チェックの結果は ok、warn、fail、skip (この OS では対象外) のいずれかです。

初回ログイン

サーバを起動し、表示されたアドレスを開きます。

wpg serve                       # 127.0.0.1:8080 で待ち受け

管理パスワードの設定

パスワードは次のいずれかで設定します (優先度の高い順。お使いのビルドが対応するものは wpg serve --help で確認してください)。

  1. wpg serve --password … または --password-file <file>
  2. 環境変数 WPG_PASSWORD
  3. wpg.toml の [auth] password_hash / password_file (argon2id ハッシュ。wpg config set-password で書き込み)
  4. 上のいずれも無い場合の、初回アクセス時のセットアップ画面

パスワードが無い間、wpg はローカルマシンからの接続だけを受け付け、起動時に警告します。パスワードを設定するまでは、ローカル以外のアドレスに bind しないでください。パスワードは argon2id ハッシュで保存され、セッションは HttpOnly、SameSite=Strict の Cookie で管理され、ログイン失敗の繰り返しはレート制限されます。ネットワーク越しにアクセスするときは TLS を前段に置きます (--tls、wpg.toml の証明書、またはリバースプロキシ)。

最初の画面

ログインするとダッシュボードが開きます。インタフェース状態、実行中ジョブ、直近の統計が見られます。続いて次の画面を使います。

  1. テンプレート: 同梱ライブラリ (examples、protocols、scenarios、malformed) が一覧され、タグ (protocol:ipv4、layer:l3、scenario、malformed) で検索できます。開くか、複製して自分用にします。
  2. ビルダー: レイヤを積み、フィールド (Auto/Manual、ジェネレータ) を編集し、Hex ダンプとフィールドツリーの更新を確認します。空のビルダーには「Ethernet II / IPv4 / UDP」などのよく使う構成が並び、各フィールドには既定値 (MAC アドレス、IP アドレスなど) が入った入力欄が最初から表示されます。入力するとその値が手動の値になり、↺ で既定値に戻ります。
    • 既定では規格どおりのパケットだけを作れます。長さ・チェックサムなどの自動計算フィールドは固定され、規格外の値 (長さやチェックサムの不一致、制約外の値など) はフィールドの下とツールバーにエラーとして表示され、保存とジョブ作成ができません。
    • 異常系のパケットを作るときは、ツールバーの 不正なパケットを許可 をオンにします。自動計算フィールドを「上書き」でき、規格外の値は警告として扱われます。設定はブラウザごとに保存され、規格外の値を含むテンプレート (malformed など) を開くと自動でオンになります。
  3. ジョブ: テンプレート、インタフェース、レート、回数を選んで開始します。送出せずファイルに書き出す をオンにするとドライラン (pcapng の書き出し) になります。バースト、ワーカ数、検証用シグネチャは 詳細設定 にあります。終了したジョブは もう一度実行 で再実行でき、新しいジョブとして編集 で設定をフォームに読み込めます。
  4. 設定: 言語 (日本語・英語・中国語簡体字・中国語繁体字・韓国語・ドイツ語・フランス語・スペイン語)、テーマ、テンプレートのライブラリパス。

言語の切り替え (ヘッダの言語メニュー) とテーマの切り替えは、どの画面でもヘッダにあります。

送信が拒否されたら wpg doctor を実行し、権限設定 を読んでください。その後 ARP スイープのチュートリアル に進みます。

チュートリアル: ARP スイープ

所要時間: 約 15 分。必要な権限: ステップ 5 までは不要です (それまではドライランです)。

作るもの

/22 の全ホストアドレスに対する ARP 要求 (「10.0.0.x は誰?」) を順に送るストリームと、同じスイープを複数の VLAN の中で繰り返すストリームです。ARP キャッシュを埋める、スイッチのブロードキャスト転送を確認する、といった用途に使えます。

同梱の 3 つのテンプレートを使います。

テンプレートフレーム数内容
templates/examples/arp-sweep.wpg.yaml254最小のスイープ (range ジェネレータ 1 つ)
templates/scenarios/arp-sweep-slash22.wpg.yaml1022CIDR ブロックをジェネレータにする
templates/scenarios/vlan-arp-sweep.wpg.yaml10162 つのジェネレータ (VLAN x アドレス) を nested で組み合わせる

始める前に

wpg を一度ビルドし (Linux、macOS、Windows)、リポジトリのルートでコマンドを実行します。例ではバイナリを wpg と書いています。PATH に無い場合は ./target/release/wpg に読み替えてください。tshark は必須ではありませんが確認に役立ちます。

送信してよいのは、自分が所有する、または試験を許可されたネットワークだけです (法的注意)。

ステップ 1. 最小のスイープを読む

layers:
  - protocol: ethernet2
    fields:
      dst: ff:ff:ff:ff:ff:ff
      src: ${src_mac}

  - protocol: arp
    fields:
      oper: request
      sha: ${src_mac}
      spa: ${src_ip}
      tha: 00:00:00:00:00:00
    generators:
      tpa: ${first}-${last}   # range ジェネレータの短縮表記

generators.tpa がストリーム全体で ARP のターゲット IP を変化させます。${...} はテンプレート変数で、実行時に --var 名前=値 で上書きできます。Ethernet の ethertype は書いていません。Auto なので、次のレイヤが ARP であることから 0x0806 になります。

最初のフレームを表示します。

$ wpg template show templates/scenarios/vlan-arp-sweep.wpg.yaml
Hex dump (60 bytes)
0000  ff ff ff ff ff ff 02 00  00 00 00 01 81 00 00 64  ...............d
0010  08 06 00 01 08 00 06 04  00 01 02 00 00 00 00 01  ................
0020  0a 00 00 fa 00 00 00 00  00 00 0a 00 00 01 00 00  ................
0030  00 00 00 00 00 00 00 00  00 00 00 00              ................
...

末尾はゼロパディングです。ARP 要求は 42 オクテットですが、Ethernet のフレームは 60 オクテット必要です (FCS は NIC が付けます)。

ステップ 2. /22 全体をスイープする

arp-sweep-slash22.wpg.yaml は、変数に入れた CIDR ブロックをジェネレータにします。

variables:
  - name: net
    default: 10.0.0.0/22
layers:
  - protocol: arp
    generators:
      tpa: ${net}

CIDR ジェネレータはホストアドレスだけを返すので、/22 では 1022 フレーム (10.0.0.1 から 10.0.3.254) になります。ネットワークには触れず pcapng に書き出します。

$ wpg render templates/scenarios/arp-sweep-slash22.wpg.yaml -o /tmp/sweep.pcapng
Wrote 1022 packets to /tmp/sweep.pcapng.

ファイルを編集せず別のサブネットにすることもできます。

$ wpg render templates/scenarios/arp-sweep-slash22.wpg.yaml -o /tmp/sweep.pcapng --var net=10.1.0.0/22

ステップ 3. 複数の VLAN で繰り返す

vlan-arp-sweep.wpg.yaml は 802.1Q タグを挿入し、ジェネレータをもう 1 つ追加します。

  - protocol: dot1q
    generators:
      vid: ${vids}          # 既定 100-103

  - protocol: arp
    generators:
      tpa: ${first}-${last} # 既定 10.0.0.1-10.0.0.254

stream:
  mode: nested
  order: [dot1q.vid, arp.tpa] # 遅い方から

ジェネレータが 2 つあるときは組み合わせ方を指定します。zip は同時に進め、product は直積、nested は順序を明示した直積です。ここでは VLAN が遅いループなので、VLAN 100 で 254 アドレス、次に VLAN 101、と続き、4 x 254 = 1016 フレームになります。リストで 2 つの VLAN に絞ることもできます。

$ wpg render templates/scenarios/vlan-arp-sweep.wpg.yaml -o /tmp/vlan-sweep.pcapng --var vids=100,200
Wrote 508 packets to /tmp/vlan-sweep.pcapng.

ステップ 4. フレームを確認する

$ tshark -r /tmp/vlan-sweep.pcapng -T fields -e vlan.id -e arp.dst.proto_ipv4 | sed -n '1p;254p;255p;$p'
100	10.0.0.1
100	10.0.0.254
200	10.0.0.1
200	10.0.0.254

テンプレートを編集したら wpg template lint を実行してください。未知のフィールド、範囲外の値、ジェネレータの書式誤りを送信前に検出できます。

ステップ 5. 送信する

まずファイル出力 (pcapfile。-i が出力パスになります) または破棄 (null) のバックエンドで予行演習します。

$ wpg send templates/scenarios/arp-sweep-slash22.wpg.yaml --backend null -i lo --rate 100kpps
Sending on lo via null: rate 100000pps, burst 1, 1022 packets, 1 worker(s), plan PreRender (...)
state      finished (stream exhausted)
packets    1022
bytes      61320

次にラボのインタフェースへ実際に送信します。生ソケットの送信には権限が必要です (権限設定)。wpg ifaces でインタフェースを確認し、バックエンドが拒否されたら wpg doctor を実行します。

$ wpg ifaces
$ wpg send templates/scenarios/vlan-arp-sweep.wpg.yaml -i eth1 --rate 2000pps

ストリームを 1 回送信して (1016 フレームを 2000 fps で約 0.5 秒) サマリを表示します。--count 10000 でスイープを繰り返し、--duration 30s で時間指定もできます。

ステップ 6. 結果を読む

  • 試験対象の ARP/ネイバーテーブル (ip neigh、show ip arp) とスイッチの MAC テーブルを確認します (送信元 MAC 02:00:00:00:00:01 が使った VLAN に現れるはずです)。
  • 同じセグメントの Linux ホストで tcpdump -e -n -i eth1 arp を実行すると、VLAN タグ付きの要求が見えます。
  • スイープの送信元アドレスは架空の 10.0.0.250 です。応答を観測したいときは --var で src_mac と src_ip を変更します。

次のステップ

チュートリアル: VLAN タグ付き TCP SYN 大量送信

所要時間: 約 20 分。必要な権限: ステップ 5 までは不要です。

作るもの

802.1Q VLAN 内で、送信元アドレス・送信元ポート・初期シーケンス番号をランダムにした TCP SYN を 10 万個送るストリームです。一般的な SYN オプション (MSS、SACK-permitted、ウィンドウスケール) を付けます。多数のクライアントからファイアウォールやロードバランサ、コネクション追跡テーブルに負荷をかけ、SYN の扱いを観察する用途です。wpg はステートレスで、ハンドシェイクを完了させず SYN-ACK にも応答しません。

自分が所有する、または試験を許可されたラボ機器に対してのみ使用してください。

始める前に

wpg をビルドし、リポジトリのルートで実行します (Linux へのインストール)。使うテンプレートは templates/scenarios/vlan-syn-flood.wpg.yaml です。より小さい例として templates/examples/vlan-tcp-syn.wpg.yaml もあります。

ステップ 1. テンプレートを読む

layers:
  - protocol: ethernet2
    fields: { dst: ${dst_mac}, src: ${src_mac} }

  - protocol: dot1q                 # TPID 0x8100 は ethernet2 に自動で入る
    fields:
      vid: ${vid}

  - protocol: ipv4
    fields:
      dst: ${dst_ip}
      ttl: 64
      flags: df
    generators:
      src: { kind: random, min: 10.0.0.1, max: 10.255.255.254 }

  - protocol: tcp
    fields:
      dst_port: ${dst_port}
      flags: syn
      window: 64240
      options:
        - mss: 1460
        - sack_permitted
        - ws: 7
    generators:
      src_port: { kind: random, min: 1024, max: 65535 }
      seq: { kind: random, min: 0, max: 4294967295 }

stream:
  seed: 7
  count: 100000

tx:
  rate: 50kpps
  burst: 32

知っておくと良い点です。

  • それ以外は何も書いていません。 IPv4 の ihl・total_length・protocol・header_checksum、TCP の data_offset と checksum (IPv4 疑似ヘッダ込み)、dot1q/Ethernet の EtherType はすべて Auto で、フレームごとに再計算されます。TCP オプション領域は 32 ビット境界まで自動でパディングされます。
  • オプションは型付きです。 mss: 1460、sack_permitted、ws: 7、nop、timestamps: { tsval: 1000, tsecr: 0 } が組み込み名で、それ以外は { type: 99, data: "01 02" } と書けます。
  • stream.seed でランダムを再現可能にします。 同じ seed なら、実行するたび、マシンが違っても同じ 10 万フレームになります。
  • tx.rate と tx.burst は既定値で、wpg send --rate で上書きできます。

ステップ 2. 最初のフレームを見る

$ wpg render templates/scenarios/vlan-syn-flood.wpg.yaml -o /tmp/syn.pcapng --count 3
Wrote 3 packets to /tmp/syn.pcapng.
$ tshark -r /tmp/syn.pcapng -o tcp.check_checksum:TRUE
    1   0.000000 10.114.228.243 → 198.51.100.7 TCP 70 2311 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM WS=128
    2   0.000001 10.99.228.10 → 198.51.100.7 TCP 70 51321 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM WS=128
    3   0.000002 10.251.163.120 → 198.51.100.7 TCP 70 10483 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM WS=128

Wireshark はチェックサム不正を報告しません。(Seq=0 は Wireshark が表示する相対シーケンス番号で、実際の値はランダムです。) tshark -V -c 1 で ID: 100 の 802.1Q ヘッダも確認できます。

ステップ 3. ファイルを編集せずに宛先を変える

${...} はすべて変数で、既定値はファイル先頭の variables: にあります。コマンドラインで上書きします。

$ wpg render templates/scenarios/vlan-syn-flood.wpg.yaml -o /tmp/syn.pcapng \
      --var vid=200 --var dst_ip=203.0.113.9 --var dst_port=8443 --count 1000

MAC アドレスは --var src_mac=… と --var dst_mac=… で設定します。宛先 MAC は、送信インタフェースから見た試験対象 (ネクストホップ) の MAC にします。

ステップ 4. count・seed・事前レンダリング

ストリームの長さは固定 (stream.count: 100000) です。wpg send は小さなストリームをメモリに事前レンダリングし (既定のしきい値 256 MiB)、大きなものはその場で展開します。--plan prerender または --plan onthefly で強制できます。

ステップ 5. 送信する

まず予行演習をしてから、ラボのインタフェースに送信します (権限設定)。

$ wpg send templates/scenarios/vlan-syn-flood.wpg.yaml --backend null -i lo --rate 20kpps --count 5000
$ wpg send templates/scenarios/vlan-syn-flood.wpg.yaml -i eth1 --rate 50kpps \
      --var vid=200 --var dst_ip=203.0.113.9 --var dst_mac=00:11:22:33:44:55

最初のバーストで落ちる機器には、緩やかに上げていくのが有効です。--ramp-up 10s はレートをゼロから直線的に上げます。詳しくは 負荷とレート制御 を参照してください。

ステップ 6. 結果を読む

  • ファイアウォールやロードバランサの接続数・SYN カウンタ (show conn count、conntrack -C、SYN cookie カウンタ) を見ます。
  • Linux の対象機器では nstat -az TcpExtTCPReqQFullDoCookies と ss -s で SYN キューの挙動が分かります。
  • 送信側では、wpg send 終了時のサマリに packets・bytes・dropped と、目標に対する達成レートが出ます。

次のステップ

  • flags: syn を syn|ack、rst、fin|ack に変えると、ステートフル機器が状態外のセグメントをどう扱うかを試せます。
  • 宛先ポート 1-1024 を走査するには templates/scenarios/tcp-syn-port-scan.wpg.yaml を使います。
  • 実際のキャプチャを編集できるテンプレートにするには pcap からテンプレートへ変換して再生 を参照してください。

チュートリアル: IPv6 と近隣探索 (NDP)

所要時間: 約 25 分。必要な権限: ステップ 6 までは不要です。

このページでは、型・長さ・チェックサムが互いに導出される複数レイヤと、ネットワーク層アドレスから計算するリンク層マルチキャストアドレスを、IPv6 スタックで練習します。IP を使わない OSI 系のスタック (LLC 上の IS-IS) は IS-IS Hello で隣接を Up にする で扱います。

作るもの

IPv6 のリンク上の動作を支える近隣探索メッセージと、近隣要請のスイープです。

テンプレートメッセージ
templates/protocols/l3/ndp-rs.wpg.yamlff02::2 宛てのルータ要請
templates/protocols/l3/ndp-ra.wpg.yamlSLLA・MTU・/64 プレフィックス付きのルータ通知
templates/protocols/l3/ndp-ns.wpg.yaml被請求ノードグループ宛ての近隣要請
templates/protocols/l3/ndp-na.wpg.yamlターゲットリンク層アドレス付き近隣通知 (S=1, O=1)
templates/protocols/l3/ndp-redirect.wpg.yamlリダイレクト
templates/scenarios/ndp-ns-sweep.wpg.yaml2001:db8::1 から ::100 までの近隣要請 256 個
templates/scenarios/ra-flood.wpg.yamlランダムなリンクローカル送信元からの RA 1 万個 (RA guard の試験用)

始める前に

wpg をビルドし、リポジトリのルートで実行します。送信してよいのは自分が所有する、または試験を許可されたラボだけです。偽の RA はセグメント上の全ホストを混乱させる可能性があります。

ステップ 1. 近隣要請 1 個のレイヤをたどる

$ wpg template show templates/protocols/l3/ndp-ns.wpg.yaml
Hex dump (86 bytes)
0000  33 33 ff 00 00 02 02 00  00 00 00 01 86 dd 60 00  33............`.
0010  00 00 00 20 3a ff 20 01  0d b8 00 00 00 00 00 00  ... :. .........
...
Layout
[0] ethernet2  bytes 0..86
  dst: 33:33:ff:00:00:02
  src: 02:00:00:00:00:01
  ethertype: 0x86dd (ipv6)  (auto)
[1] ipv6  bytes 14..86
  payload_length: 32  (auto)
  next_header: 0x3a (icmpv6)  (auto)
  hop_limit: 255
  src: 2001:db8::1
  dst: ff02::1:ff00:2
[2] icmpv6  bytes 54..86
  type: 0x87 (neighbor_solicitation)  (auto)
  code: 0
  checksum: 7207  (auto)
[3] ndp_ns  bytes 58..86
  reserved: 0
  target: 2001:db8::2
  options: 01 01 02 00 00 00 00 01

(auto) の値はすべて、入力ではなく導出されたものです。

  • ethernet2.ethertype = 0x86dd: 次のレイヤが ipv6 だからです。
  • ipv6.next_header = 58: 次のレイヤが icmpv6 だからです。payload_length は 40 オクテットのヘッダ以降すべてを数えます。
  • icmpv6.type = 135: 次のレイヤが ndp_ns だからです。ICMPv6 メッセージは意図的に 2 つのレイヤに分かれています。icmpv6 が type・code・checksum を持ち、本体レイヤ (ndp_ns、ndp_na、ndp_rs、ndp_ra、ndp_redirect、icmpv6_echo) が type を決めます。
  • icmpv6.checksum は IPv6 疑似ヘッダ、ICMPv6 ヘッダ、本体全体にかかるため、下位のどのフィールドを変えても変わります。

元の YAML は短いものです。

layers:
  - protocol: ethernet2
    fields: { dst: "33:33:ff:00:00:02", src: "02:00:00:00:00:01" }
  - protocol: ipv6
    fields:
      src: 2001:db8::1
      dst: ff02::1:ff00:2
      hop_limit: 255          # NDP は 255 が必須
  - protocol: icmpv6          # type: auto
  - protocol: ndp_ns
    fields:
      target: ${target}
      options: "01 01 02 00 00 00 00 01"   # 送信元リンク層アドレス

ステップ 2. 一致させるべき 2 つのアドレス

2001:db8::2 の近隣要請は、被請求ノードマルチキャストグループ ff02::1:ff00:2 (ff02::1:ff にターゲットの下位 24 ビット) 宛てに、Ethernet ではマルチキャスト MAC 33:33: に IPv6 宛先の下位 32 ビットを付けた 33:33:ff:00:00:02 宛てに送ります。wpg は一方から他方を導出しないので、target を変えたら ipv6.dst と ethernet2.dst も変える必要があります (スイープのように全ノード宛て ff02::1 / 33:33:00:00:00:01 に送る方法もあります)。

hop_limit: 255 にも注意してください。受信側は他の値の NDP メッセージを破棄するため、既定の 64 のままだと Wireshark では正しく見えるのに何も起きないパケットになります。

ステップ 3. オプションは生のバイト列

NDP オプション (options) は 16 進で書きます。01 01 02 00 00 00 00 01 は、タイプ 1 (送信元リンク層アドレス)、長さ 1 (8 オクテット単位)、続いて 6 オクテットの MAC です。ルータ通知のテンプレートは 3 つのオプションを連結しています。

options: >-
  01 01 02 00 00 00 00 01
  05 01 00 00 00 00 05 dc
  03 04 40 c0 00 27 8d 00 00 09 3a 80 00 00 00 00
  20 01 0d b8 00 01 00 00 00 00 00 00 00 00 00 00
オクテットオプション
01 01 02 00 00 00 00 01送信元リンク層アドレス 02:00:00:00:00:01
05 01 00 00 00 00 05 dcMTU 1500
03 04 40 c0 00 27 8d 00 00 09 3a 80 00 00 00 00 20 01 0d b8 00 01 00 00 00 00 00 00 00 00 00 00プレフィックス情報: /64 (40)、on-link + autonomous (c0)、有効期間 2592000 秒、優先期間 604800 秒、プレフィックス 2001:db8:1::

オプションは生のオクテットなので、長さ 0 のオプションやパケット末尾を越えるオプション、未知のタイプなど、わざと変なものも作れます。

ステップ 4. Wireshark で確認する

$ wpg render templates/protocols/l3/ndp-ns.wpg.yaml -o /tmp/ns.pcapng
$ tshark -r /tmp/ns.pcapng -V | sed -n '/Internet Control/,$p'
Internet Control Message Protocol v6
    Type: Neighbor Solicitation (135)
    Code: 0
    Checksum: 0x1c27 [correct]
    [Checksum Status: Good]
    Reserved: 00000000
    Target Address: 2001:db8::2
    ICMPv6 Option (Source link-layer address : 02:00:00:00:00:01)

重要なのは [correct] です。疑似ヘッダ込みのチェックサムを wpg が自分で計算しています。

ステップ 5. スイープする

ndp-ns-sweep.wpg.yaml は target ジェネレータに IPv6 の範囲を指定します。

  - protocol: ndp_ns
    generators:
      target: 2001:db8::1-2001:db8::100
$ wpg render templates/scenarios/ndp-ns-sweep.wpg.yaml -o /tmp/ns-sweep.pcapng
Wrote 256 packets to /tmp/ns-sweep.pcapng.

宛先は全ノードグループなので、セグメント上の全ホストが 256 個すべてを受け取り、自分のアドレス分にだけ応答します。実際のホストはターゲットごとの被請求ノードグループに送りますが、スイープでは単純な 1 テンプレートにするためそれを省いています。

ra-flood.wpg.yaml は、送信元 MAC (OUI 固定の random_mac) と送信元リンクローカルアドレスにランダムジェネレータを使う例で、どちらも stream.seed で再現できます。

ステップ 6. 送信する

$ wpg send templates/scenarios/ndp-ns-sweep.wpg.yaml --backend null -i lo --rate 1000pps
$ wpg send templates/scenarios/ndp-ns-sweep.wpg.yaml -i eth1 --rate 1000pps

(権限は 権限設定 を参照。) 対象機器では ip -6 neigh や show ipv6 neighbors で学習結果を、別ホストの tcpdump -n -i eth1 icmp6 で要請と通知を確認できます。

その他の ICMPv6 タイプ

本体プロトコルがまだ無いタイプ (たとえば MLD) は、icmpv6.type を明示的に設定し、チェックサム以降の 4 オクテットとメッセージを含む raw レイヤを続けます。IPv6 拡張ヘッダの連鎖は専用のサンプルがあります: templates/protocols/l3/ の ipv6-hopopts、ipv6-dstopts、ipv6-routing、ipv6-frag、ipv6-ext-chain です。

次のステップ

チュートリアル: 負荷とレート制御

所要時間: 約 20 分。必要な権限: なし (全体を通して null と pcapfile バックエンドを使います)。

ここで扱う技術 (大量生成、レート、時間、ランプアップ、ワーカー) はどのテンプレートでも使えます。実際のサーバに負荷をかけて応答を数える例は DHCP サーバの負荷試験 にあります。

作るもの

テンプレートを指定のレートと時間で送出し、返ってくるサマリを読み、ラボの制限内に収めるためのコマンド群です。題材は MAC フラッド (templates/scenarios/mac-flood.wpg.yaml、ランダムな送信元 MAC の 10 万フレーム) と SYN フラッド (templates/scenarios/vlan-syn-flood.wpg.yaml) です。

始める前に

wpg をビルドし、リポジトリのルートで実行します。実際の送信には権限とラボのインタフェースが必要ですが、このチュートリアルは --backend null (フレームを作って数えるだけで送らない) を使うので、どこでも実行できます。実際に送るときは --backend null -i lo を -i eth1 などに置き換えます。

負荷をかけてよいのは、自分が所有する、または試験を許可された機器だけです。

ステップ 1. 回数・時間・レート

停止条件と速度はテンプレートの tx: にあり、コマンドラインで上書きできます。

オプション意味例
--count NN フレームで停止 (N がストリームより長ければ先頭に戻る)--count 50000
--duration TT 秒/分で停止--duration 10s、--duration 2m
--rate R目標レート250kpps、1Mpps、1Gbps、50%、ifg=10us、unlimited
--burst Bレート制御 1 回あたりに連続送信するフレーム数--burst 32

回数と時間の両方を指定した場合は先に達した方で終了します。bps 指定はレイヤ 1 のバイト数 (プリアンブル、FCS、フレーム間ギャップ込み) で数えます。% はリンク速度が分かる実インタフェースが必要です (lo では失敗します)。

$ wpg send templates/scenarios/udp-qos-matrix.wpg.yaml --backend null -i lo --rate 250kpps --count 50000
Sending on lo via null: rate 250000pps, burst 1, 50000 packets, 1 worker(s), plan PreRender (...)
state      finished (count reached)
backend    null
packets    50000
bytes      10100000
dropped    0
elapsed    0.200 s
average    250.00 kpps  404.00 Mbps (L2)  452.00 Mbps (L1)
accuracy   target 250.00 kpps  achieved 100.00%  max jitter 454.12µs  mean jitter 202ns

(数値は環境によって異なります。) まず最後の 2 行を読みます。average は実際に送れたレート、accuracy は目標にどれだけ近く送れたかです。dropped が大きいときは、バックエンドが追い付いていません。

ステップ 2. ランプアップ

最初のバーストで落ちる機器は、レートを上げていくと特性を調べやすくなります。--ramp-up はレートをゼロから目標まで指定時間で直線的に上げます。

$ wpg send templates/scenarios/vlan-syn-flood.wpg.yaml --backend null -i lo --rate 20kpps --ramp-up 1s --duration 3s
[    3.0 s]        50023 pkts  16.67 kpps  9.34 Mbps  dropped 0  rate 100.0%
state      finished (duration elapsed)
packets    50023
elapsed    3.000 s
average    16.67 kpps  9.34 Mbps (L2)  12.54 Mbps (L1)
accuracy   target 20.00 kpps  achieved 100.04%  max jitter 3.196862ms  mean jitter 115.686µs

最初の 1 秒がランプなので、平均 (16.67 kpps) は目標 20 kpps を下回ります。

ステップ 3. 開始時刻を指定する

--start-at は最初のフレームの前に待ちます。遅延 (+10s) か RFC 3339 の時刻 (2026-09-29T12:00:00Z) を指定します。複数の送信側を同時に始めたいときや、キャプチャを起動する時間が欲しいときに便利です。

$ wpg send templates/scenarios/vlan-syn-flood.wpg.yaml --backend null -i lo --start-at +2s --count 10
Scheduled start at +2s (in 2.0 s); Ctrl-C cancels.

ステップ 4. 複数ワーカーを使う

ワーカー 1 つは CPU コア 1 つが上限です。--workers N は N 本の送信スレッドを起動し、それぞれが独立したバックエンドインスタンスと、ストリームおよびレートの分担を持ちます。--pin-cores 2,3 でコアに固定できます (Linux)。

$ wpg send templates/scenarios/vlan-syn-flood.wpg.yaml --backend null -i lo --rate unlimited --count 100000 --workers 2
average    10.35 Mpps  5.79 Gbps (L2)  7.78 Gbps (L1)
worker 0     50000 pkts  3500000 bytes
worker 1     50000 pkts  3500000 bytes

null バックエンドでの unlimited は、フレームを作る速さの測定であり、ネットワークの数値ではありません。afpacket バックエンドでは --batch、--ring-depth、--qdisc-bypass、--no-tx-ring も使えます (wpg send --help)。詳しくは 性能チューニング を参照してください。

ステップ 5. 事前レンダリングかその場生成か

--plan auto (既定) は、ストリームが小さければ (しきい値 256 MiB) メモリに事前レンダリングして送信ループではバイトのコピーだけを行い、大きければその場で展開します。--plan prerender または --plan onthefly で強制できます。ランダムジェネレータの値は stream.seed から決まるので、再現性が必要なら seed を指定してください。

ステップ 6. 機械可読な結果

--json は最終レポートを JSON で標準出力に出します (進捗とバナーは標準エラー)。CI やスクリプト向けです。

$ wpg send templates/scenarios/mac-flood.wpg.yaml --backend null -i lo --count 100000 --json | jq '{state: .state.state, packets: .backend.packets, dropped: .backend.dropped}'

実行に失敗したとき (たとえばバックエンドが拒否された) は終了コードが 0 以外になるので、wpg send はパイプラインの 1 ステップにできます。

ステップ 7. 制限内に収める

  • wpg.toml の [tx] max_rate (例: max_rate = "100kpps") で全員に対する上限を設定し、allowed_ifaces で使えるインタフェースを制限します。設定リファレンス を参照してください。
  • Ctrl-C で実行をキャンセルできます。
  • 新しいテンプレートは、毎回予行演習用のバックエンド (null、または -i out.pcapng を指定した pcapfile) で試してから送ります。

次のステップ

チュートリアル: pcap からテンプレートへ変換して再生

所要時間: 約 20 分。必要な権限: 最後のステップまで不要です。

作るもの

キャプチャ (ここでは再現しやすいよう wpg で作りますが、Ethernet の pcap/pcapng なら何でも構いません) を編集可能なテンプレートに変換し、元と同じバイト列に戻す往復です。途中で wpg は、パケット間で変化するフィールドを見つけてジェネレータにします。

wpg import は pcap (両バイトオーダー、マイクロ秒/ナノ秒) と pcapng を読みます。リンク層は Ethernet のみで、フレームに FCS は付いていない前提です。貼り付けた 16 進も読めます。

始める前に

wpg をビルドし、リポジトリのルートで実行します。tshark は確認にだけ使います。

ステップ 1. キャプチャを作る

$ wpg render templates/examples/arp-sweep.wpg.yaml -o /tmp/arp.pcapng
Wrote 254 packets to /tmp/arp.pcapng.

実際には tcpdump -i eth0 -w capture.pcap や Wireshark で取得したファイルを使います。

ステップ 2. インポートする

$ wpg import /tmp/arp.pcapng -o /tmp/arp.wpg.yaml
Imported 254 packet(s) into 1 template(s): /tmp/arp.wpg.yaml

結果は次のとおりです。

schema: 1
meta:
  name: arp
  description: Imported from /tmp/arp.pcapng (254 packets)
  ...
  tags:
  - imported
layers:
- protocol: ethernet2
  fields:
    dst: ff:ff:ff:ff:ff:ff
    src: 02:00:00:00:00:01
    ethertype: auto
- protocol: arp
  fields:
    htype: ethernet
    ptype: ipv4
    hlen: 6
    plen: 4
    oper: request
    sha: 02:00:00:00:00:01
    spa: 192.168.1.10
    tha: 00:00:00:00:00:00
  generators:
    tpa:
      kind: range
      start: 192.168.1.1
      end: 192.168.1.254
      step: 1
- protocol: raw
  fields:
    data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
stream:
  mode: zip
  count: 254

3 つのことが起きています。

  1. フィールドは人間向け表記 (192.168.1.10、request、ethernet) になり、wpg が再計算できるフィールドは、そうしても取り込んだバイト列が再現できる場合に限り auto に戻されます。チェックサムや長さが誤ったキャプチャでは、そのフィールドが手動値のまま残るので、わざと壊したトラフィックも失われません。
  2. ジェネレータ推定。 254 フレームすべてが同じレイヤ構成で、arp.tpa が毎回 +1 なので、(厳密な) range ジェネレータになりました。周期的な繰り返しは list、少数の値の集合は近似の list、それ以外は観測した最小/最大の random になります (近似のときは警告が出ます)。--no-detect-generators で先頭パケットの値だけを使うこともできます。
  3. ARP の後ろの 0 が 18 オクテット は、キャプチャに含まれていた Ethernet のパディングです。インポータはプロトコルに帰属できないバイトを raw レイヤに残し、フレームを正確に再現します。このレイヤは削除して構いません。packet.pad_to_min (既定) で wpg が自分でパディングします。

ステップ 3. lint して再レンダリングする

$ wpg template lint /tmp/arp.wpg.yaml
/tmp/arp.wpg.yaml: no issues
0 error(s), 0 warning(s) in 1 file(s)
$ wpg render /tmp/arp.wpg.yaml -o /tmp/arp2.pcapng
Wrote 254 packets to /tmp/arp2.pcapng.
$ diff <(tshark -r /tmp/arp.pcapng -x) <(tshark -r /tmp/arp2.pcapng -x) && echo identical
identical

フレームはバイト単位で一致します (タイムスタンプは wpg が独自に付けるので異なります)。

ステップ 4. 編集して再利用する

テンプレートになったので、何でも変更できます。

  • 定数を変数にする: 192.168.1.10 を ${src_ip} に置き換え、variables: [{ name: src_ip, default: 192.168.1.10 }] を追加して、wpg render … --var src_ip=10.9.8.7 を実行します。
  • スイープを広げる: range を 192.168.0.1-192.168.7.254 に変更します。
  • oper: reply にするとキャプチャを応答に変えられます。
  • packet: { fcs: bad } を加えると、不正な FCS を機器がどう扱うか試せます。

ステップ 5. パケットごとのテンプレート、貼り付けた 16 進

スイープではなく会話のキャプチャなら、パケットごとに 1 テンプレートを作らせます。

$ wpg import /tmp/capture.pcap --per-packet /tmp/templates/

Wireshark の「Copy → as a Hex Stream」、xxd/hexdump -C の出力、空白区切りのバイト列はパイプで渡せます。

$ echo "ff ff ff ff ff ff 02 00 00 00 00 01 08 06 00 01 08 00 06 04 00 01 02 00 00 00 00 01 c0 00 02 01 00 00 00 00 00 00 c0 00 02 02" \
    | wpg import --hex - -o -

Ethernet II 以外で始まるキャプチャには --first-protocol を使います。wpg が知らないプロトコルのフレームは、デコードできた最後のレイヤの後ろに raw バイト列として残るので、再生はできます。

ステップ 6. 共有と再生

テンプレートと元のキャプチャを、同僚がインポートできるバンドルにまとめます。

$ wpg template export /tmp/arp.wpg.yaml -o /tmp/arp.wpgbundle --attach /tmp/arp.pcapng
$ wpg template import /tmp/arp.wpgbundle -o ./my-templates

ほかのテンプレートと同様に、好きなレートで送信します。

$ wpg send /tmp/arp.wpg.yaml -i eth1 --rate 500pps

オプションは 負荷とレート制御 を参照してください。

次のステップ

チュートリアル: DHCP サーバの負荷試験

所要時間: 約 25 分。必要な権限: ステップ 3 まで不要、ステップ 4 から root (名前空間と afpacket)。

作るもの

多数のクライアントを装って DHCPDISCOVER を送り、DHCP サーバが返す DHCPOFFER を数えて、サーバがどのレートまで追従できるかを調べます。1 フレームごとに送信元 MAC と chaddr (クライアントのハードウェアアドレス) を揃えて変え、トランザクション ID (xid) をランダムにします。サーバには、1 台の Linux 上の名前空間で動かす dnsmasq を使います。

wpg はステートレスです。OFFER を受け取っても DHCPREQUEST は返さないので、DORA (Discover / Offer / Request / Ack) は完了せず、リースも作られません。測れるのは DISCOVER の処理能力で、アドレスプールの枯渇試験ではありません (ステップ 6)。

自分が所有する、または試験を許可された DHCP サーバに対してのみ使用してください。本番セグメントに DISCOVER を大量に流すと、本物のクライアントがアドレスを取れなくなることがあります。

始める前に

wpg をビルドし、リポジトリのルートで実行します (Linux へのインストール)。使うテンプレートは templates/scenarios/dhcp-discover-flood.wpg.yaml です。1 フレームだけの例として templates/protocols/app/dhcpv4-discover.wpg.yaml もあります。ステップ 4 以降は Linux、iproute2、dnsmasq (sudo apt install dnsmasq-base) と root が必要です。

ステップ 1. テンプレートを読む

variables:
  - name: oui
    default: "02:00:5e"

layers:
  - protocol: ethernet2
    fields:
      dst: "ff:ff:ff:ff:ff:ff"
    generators:
      src: { kind: range, start: "${oui}:00:00:01", end: "${oui}:ff:ff:ff" } # one MAC per client
  - protocol: ipv4
    fields:
      src: 0.0.0.0
      dst: 255.255.255.255
  - protocol: udp
    fields:
      src_port: 68
      dst_port: 67
  - protocol: dhcpv4
    fields:
      op: boot_request
      flags: broadcast
      options:
        - { message_type: discover }
        - { parameter_request_list: [1, 3, 6, 15, 51] } # mask, router, DNS, domain, lease
        - end
    generators:
      chaddr: { kind: expr, expr: "$0.src" } # the same MAC as the Ethernet source (layer 0)
      xid: { kind: expr, expr: "rand(0, 0xffffffff)" }

stream:
  seed: 1
  count: 10000

tx:
  rate: 200pps

知っておくと良い点です。

  • 送信元 MAC は連番です。 range は MAC アドレスにも使え、02:00:5e:00:00:01 から 1 ずつ増えます。先頭オクテットの 02 はローカル管理アドレスで、実在の機器と重なりません。--var oui=… で上位 3 オクテットを変えられます。
  • chaddr は式で送信元 MAC を写します。 expr ジェネレータの $0.src は「レイヤ 0 (ethernet2) の src ジェネレータの、このフレームでの値」です。サーバはふつう chaddr でクライアントを識別するので、2 つがずれると試験になりません。式の書き方は テンプレートスキーマ を参照してください。
  • xid はフレームごとのランダム値です。 rand(min, max) はフレーム番号から決まる乱数で、stream.seed が同じなら何度実行しても同じ値になります。
  • 書いていないフィールドは Auto か既定値です。 IPv4 の長さとチェックサム、UDP の長さとチェックサム (疑似ヘッダ込み) は Auto で、DHCP の htype / hlen、sname と file のゼロ埋め、マジッククッキーは既定値で入ります。

ステップ 2. 最初のフレームを見る

$ wpg render templates/scenarios/dhcp-discover-flood.wpg.yaml -o /tmp/dhcp.pcapng --count 3
Wrote 3 packets to /tmp/dhcp.pcapng.
$ tshark -r /tmp/dhcp.pcapng
    1   0.000000      0.0.0.0 → 255.255.255.255 DHCP 293 DHCP Discover - Transaction ID 0xc4c98940
    2   0.000001      0.0.0.0 → 255.255.255.255 DHCP 293 DHCP Discover - Transaction ID 0xef7b0650
    3   0.000002      0.0.0.0 → 255.255.255.255 DHCP 293 DHCP Discover - Transaction ID 0x330355d7
$ tshark -r /tmp/dhcp.pcapng -o udp.check_checksum:TRUE -T fields -e eth.src -e dhcp.hw.mac_addr -e udp.checksum.status
02:00:5e:00:00:01	02:00:5e:00:00:01	1
02:00:5e:00:00:02	02:00:5e:00:00:02	1
02:00:5e:00:00:03	02:00:5e:00:00:03	1

送信元 MAC と Client MAC address が一致し、UDP チェックサムは正しい (1 = Good) と判定されます。1 万フレーム全体でも確かめられます。

$ wpg render templates/scenarios/dhcp-discover-flood.wpg.yaml -o /tmp/dhcp-all.pcapng
Wrote 10000 packets to /tmp/dhcp-all.pcapng.
$ tshark -r /tmp/dhcp-all.pcapng -Y 'eth.src != dhcp.hw.mac_addr' | wc -l
0

ステップ 3. 規模を変える

クライアント数は --count で決まります (stream.count の 1 万を超えると MAC の連番が先頭に戻るので、それ以上は --var oui=… を変えた 2 本目のストリームにします)。

$ wpg render templates/scenarios/dhcp-discover-flood.wpg.yaml -o /tmp/dhcp-b.pcapng --var oui=02:00:5f
Wrote 10000 packets to /tmp/dhcp-b.pcapng.

このファイルの送信元 MAC は 02:00:5f:00:00:01 から 02:00:5f:00:27:10 (10000 = 0x2710) です。

ステップ 4. 試験用の DHCP サーバを用意する

名前空間 wpgdhcp に dnsmasq を起動し、veth (dh0 ⇔ dhs0) で wpg とつなぎます。プールは 50 アドレスです。

sudo ip netns add wpgdhcp
sudo ip link add dh0 type veth peer name dhs0
sudo ip link set dhs0 netns wpgdhcp
sudo ip link set dh0 up
sudo ip netns exec wpgdhcp ip link set lo up
sudo ip netns exec wpgdhcp ip link set dhs0 up
sudo ip netns exec wpgdhcp ip addr add 10.98.0.1/24 dev dhs0
sudo ip netns exec wpgdhcp dnsmasq --no-daemon --port=0 --interface=dhs0 --bind-interfaces \
    --dhcp-range=10.98.0.10,10.98.0.59,10m --dhcp-authoritative --dhcp-leasefile=/tmp/wpg-leases \
    --log-dhcp --log-facility=/tmp/wpg-dnsmasq.log &

--port=0 は DNS を無効にします。実機の DHCP サーバやルータを試験する場合は、dh0 の代わりにそのサーバにつながるラボのインタフェースを使います。

ステップ 5. 送って OFFER を数える

OFFER (送信元ポート 67) を wpg capture で数えながら、別の端末から DISCOVER を 100 個送ります。

$ sudo wpg capture -i dh0 -f "udp src port 67" --duration 3s --show 2 -w /tmp/offers.pcapng
$ sudo wpg send templates/scenarios/dhcp-discover-flood.wpg.yaml -i dh0 --backend afpacket --count 100
Capturing on dh0 via afpacket, filter udp src port 67 (Ctrl-C stops)
#   0  16:14:33.696984775    342 B  ethernet2 / ipv4 / udp / dhcpv4
#   1  16:14:33.703225873    342 B  ethernet2 / ipv4 / udp / dhcpv4
state      finished (duration elapsed)
...
matched    100 pkts  34200 bytes
saved      100 pkts to /tmp/offers.pcapng
$ tshark -r /tmp/offers.pcapng -c 3
    1   0.000000    10.98.0.1 → 255.255.255.255 DHCP 342 DHCP Offer    - Transaction ID 0xc4c98940
    2   0.006241    10.98.0.1 → 255.255.255.255 DHCP 342 DHCP Offer    - Transaction ID 0xef7b0650
    3   0.009784    10.98.0.1 → 255.255.255.255 DHCP 342 DHCP Offer    - Transaction ID 0x330355d7

OFFER の xid は DISCOVER のもの (ステップ 2) と一致します。broadcast フラグを立てているので、OFFER は 255.255.255.255 宛てに返ります。

最初はとても遅く見えるはずです。 dnsmasq の既定の設定では、OFFER の前にそのアドレスへ ICMP Echo を送って使われていないことを確かめるため、DISCOVER 1 件に約 3 秒かかり、3 秒の捕捉では 1 件しか数えられません (ログ /tmp/wpg-dnsmasq.log に 3 秒おきの DHCPOFFER が並びます)。上の結果は dnsmasq に --no-ping を付けて起動し直したものです。このような「サーバ側の作りで決まる上限」を見つけることが、この種の試験の目的の 1 つです。

次にレートを上げて、OFFER が DISCOVER に追い付かなくなる点を探します。

for r in 1kpps 5kpps 20kpps; do
  sudo wpg capture -i dh0 -f "udp src port 67" --duration 4s --show 0 > /tmp/cap-$r.txt &
  sudo wpg send templates/scenarios/dhcp-discover-flood.wpg.yaml -i dh0 --backend afpacket --count 2000 --rate $r
  wait; grep '^matched' /tmp/cap-$r.txt
done

開発用コンテナ (--no-ping) での結果です。値はホストとサーバ次第です。

送出レートDISCOVEROFFER応答率
1 kpps20002000100%
5 kpps20002000100%
20 kpps2000117559%

応答率が下がり始めるレートが、このサーバの DISCOVER 処理能力の目安です。応答しなかった DISCOVER は、サーバのソケットの受信バッファで捨てられています。実機では、DHCP スヌーピングや CoPP (制御プレーンのポリシング) が先に落とすこともあります。その場合はスイッチやルータのカウンタも確認してください。

ステップ 6. 結果を読む

  • OFFER はアドレスを予約しません。 プールは 50 アドレスですが、100 個の DISCOVER すべてに OFFER が返り、提示されたアドレスは 50 種類でした (tshark -r /tmp/offers.pcapng -T fields -e dhcp.ip.your | sort -u | wc -l)。dnsmasq をはじめ多くのサーバは REQUEST / ACK でリースを作るので、DISCOVER だけではプールは枯渇しません。リース ファイル (/tmp/wpg-leases) も空のままです。
  • リースまで作る試験は wpg の対象外です。 OFFER を受けて REQUEST を返すのはステートフルな処理で、wpg の非ゴールです。プールの枯渇やリース保持の試験には、DHCP クライアントのエミュレータ (perfdhcp など) を使ってください。
  • リレー経由の試験には templates/protocols/app/dhcpv4-relay.wpg.yaml (giaddr とオプション 82 付き、ユニキャスト) を元にします。宛先をサーバのアドレスにすれば、ルーティングされた先のサーバを試験できます。
  • DHCPv6 には templates/protocols/app/dhcpv6-solicit.wpg.yaml と dhcpv6-relay-forward.wpg.yaml があります。

後片付け:

sudo pkill -f 'dnsmasq --no-daemon --port=0 --interface=dhs0'
sudo ip netns del wpgdhcp      # dh0 も一緒に消えます

次のステップ

  • --rate の代わりに --ramp-up 30s を付けると、レートを直線的に上げながら応答率の落ち始めを探せます。詳しくは 負荷とレート制御。
  • GUI では、テンプレート画面でこのシナリオを開いてジョブから送出し、受信画面 (/rx) でフィルタ udp src port 67 を指定して OFFER を数えられます (受信と検証)。

チュートリアル: IS-IS Hello で隣接を Up にする

所要時間: 約 30 分。必要な権限: ステップ 2 まで不要、ステップ 3 から root (名前空間と afpacket)。

作るもの

IS-IS のレベル 2 LAN Hello (IIH) を組み立てて FRR の isisd に送り、相手側で隣接が Initializing から Up になるまでを追います。題材は相互接続確認用のテンプレート templates/interop/isis-l2-lan-hello-up.wpg.yaml です。Ethernet の上に LLC (0xfe) と IS-IS が直接載る、IP を使わない OSI 系のスタックで、PDU 長、MTU までのパディング、IS Neighbors TLV による双方向確認を順に見ます。

wpg はステートレスです。Hello を送り続ければ隣接は維持されますが、LSP のフラッディングや DIS としての振る舞いはしません。

自分が所有する、または試験を許可されたルータに対してのみ使用してください。運用中の IS-IS ドメインに偽の隣接を作ると、経路計算に影響することがあります。

始める前に

wpg をビルドし、リポジトリのルートで実行します (Linux へのインストール)。ステップ 3 以降は Linux、iproute2、FRR (sudo apt install frr。デーモンはスクリプトが直接起動するので、frr サービスは止めたままで構いません) と root が必要です。IS-IS の PDU と TLV の一覧は IS-IS (P2) にあります。

ステップ 1. テンプレートを読む

layers:
  - protocol: dot3
    fields:
      dst: "01:80:c2:00:00:15" # AllL2ISs
      src: ${src_mac}
      length: auto
  - protocol: llc
  - protocol: isis_l2_lan_hello
    fields:
      circuit_type: l2
      source_id: ${system_id}
      holding_time: 30
      priority: 0 # wpg does not flood LSPs, so let the peer be the DIS
      lan_id: "0000 0000 0001 01" # overwritten by the DIS's LAN ID once the peer elects itself
      # Manual PDU length: Padding TLVs fill the PDU up to it (MTU 1500 - LLC 3).
      pdu_length: 1497
      tlvs:
        - { protocols_supported: [ipv4] }
        - { area_addresses: [{ address: "${area}" }] }
        - { ip_interface_addresses: ["${ip}"] }
        - { is_neighbors: ["${peer_mac}"] }

tx:
  count: 40 # two minutes of Hellos
  rate: ifg=3s

知っておくと良い点です。

  • IS-IS は IP を使いません。 dot3 (長さフィールド付きの 802.3) の上に llc を置くと、DSAP / SSAP は 0xfe (OSI) に自動で決まります。IS-IS の NLPID 0x83 も PDU レイヤから自動で入ります。宛先 01:80:c2:00:00:15 はレベル 2 の全 IS 宛て (AllL2ISs) です。
  • pdu_length を Manual にするとパディングが付きます。 Auto のままなら PDU は TLV の分だけの長さです。値を書くと、PDU がちょうどその長さになるまで Padding TLV (種別 8) が自動で足されます。1497 は Ethernet の MTU 1500 から LLC ヘッダ 3 オクテットを引いた値です。相手は、Hello がこの大きさで届くことで MTU が一致していると判断します。
  • is_neighbors が双方向確認の鍵です。 LAN の隣接は、相手の Hello に自分の MAC (SNPA) が載っているのを見て初めて Up になります。peer_mac には相手インタフェースの MAC を入れます。
  • priority: 0 で DIS (代表 IS) の選出に負けるようにしています。wpg は DIS の仕事 (CSNP の送出や疑似ノード LSP) をしないためです。
  • System ID (source_id) は 6 オクテット、エリアアドレスは NSAP の表記 (49.0001) で書きます。

ステップ 2. フレームを見る

$ wpg render templates/interop/isis-l2-lan-hello-up.wpg.yaml -o /tmp/isis.pcapng --count 1
Wrote 1 packets to /tmp/isis.pcapng.
$ tshark -r /tmp/isis.pcapng
    1   0.000000 02:00:00:00:00:01 → ISIS-all-level-2-IS's ISIS HELLO 1514 L2 HELLO, System-ID: 0000.0000.0001
$ tshark -r /tmp/isis.pcapng -V
...
ISIS HELLO
    .... ..10 = Circuit type: Level 2 only (0x2)
    SystemID {Sender of PDU}: 0000.0000.0001
    Holding timer: 30
    PDU length: 1497
    .000 0000 = Priority: 0
    SystemID {Designated IS}: 0000.0000.0001.01
    Protocols Supported (t=129, l=1)
    Area address(es) (t=1, l=4)
        Area address (3): 49.0001
    IP Interface address(es) (t=132, l=4)
        IPv4 interface address: 10.99.0.1
    IS Neighbor(s) (t=6, l=6)
        IS Neighbor: 02:00:00:00:00:02 (02:00:00:00:00:02)
    Padding (t=8, l=255)
    Padding (t=8, l=255)
    Padding (t=8, l=255)
    Padding (t=8, l=255)
    Padding (t=8, l=255)
    Padding (t=8, l=160)

(-V の出力は抜粋です。) フレームは 1514 オクテット (MTU 1500 + Ethernet ヘッダ 14) です。PDU 1497 オクテットの内訳は、ヘッダ 27、上の 4 つの TLV 23、Padding TLV 6 個 (255 オクテットが 5 個と 160 オクテットが 1 個、それぞれ種別と長さの 2 オクテットを加えて 1447) です。

ステップ 3. FRR のラボを用意する

scripts/interop/frr-netns.sh が、名前空間 wpgfrr に FRR を起動し、veth (wpg0 ⇔ frr0) で wpg とつなぎます。FRR 側の IS-IS は net 49.0001.0000.0000.0002.00、is-type level-2-only です。--keep を付けると、相互接続確認のあともラボが残ります。

$ cargo build --release -p wpg-cli
$ sudo scripts/interop/frr-netns.sh --keep target/release/wpg
...
PASS  IS-IS L2 adjacency Up
...
lab kept: ip netns exec wpgfrr vtysh -N wpg; tear down with scripts/interop/frr-netns.sh --down

スクリプト自身の確認で隣接が一度 Up になっています。最後の Hello から保持時間 (30 秒) が過ぎて消えるまで待ってから先に進みます。

$ sudo ip netns exec wpgfrr vtysh -N wpg -c "show isis neighbor"
Area 1:
  System Id           Interface   L  State        Holdtime SNPA

両端の MAC を控えておきます (veth の MAC は作るたびに変わります)。

SRC=$(cat /sys/class/net/wpg0/address)
PEER=$(sudo ip netns exec wpgfrr cat /sys/class/net/frr0/address)

ステップ 4. 相手の Hello を受信する

FRR は 3 秒ごとに自分の Hello を送っています。wpg capture で 1 つ受け取って、wpg のパーサで読めることを確かめます。

$ sudo wpg capture -i wpg0 -f "ether dst 01:80:c2:00:00:15" --count 1 --show 1
Capturing on wpg0 via afpacket, filter ether dst 01:80:c2:00:00:15 (Ctrl-C stops)
#   0  16:10:42.763122508   1514 B  dot3 / llc / isis_l2_lan_hello
state      finished (count reached)
...

FRR の Hello も MTU までパディングされた 1514 オクテットで、dot3 / llc / isis_l2_lan_hello と解析されます。-w /tmp/frr.pcapng で保存して、テンプレートに取り込むこともできます (pcap からテンプレートへ変換して再生)。

ステップ 5. 隣接を Up にする

まず、相手の MAC を載せずに Hello を 1 つ送ります。peer_mac は既定値の 02:00:00:00:00:02 のままなので、FRR から見ると「自分を知らない相手」です。

$ sudo wpg send templates/interop/isis-l2-lan-hello-up.wpg.yaml -i wpg0 --backend afpacket \
      --var src_mac=$SRC --count 1
$ sudo ip netns exec wpgfrr vtysh -N wpg -c "show isis neighbor"
Area 1:
  System Id           Interface   L  State        Holdtime SNPA
 0000.0000.0001      frr0        2  Initializing  29       a63f.1a8d.7239

FRR は wpg を見つけましたが、双方向の確認が取れていないので Initializing です。次に peer_mac に FRR の MAC を入れて送ります。

$ sudo wpg send templates/interop/isis-l2-lan-hello-up.wpg.yaml -i wpg0 --backend afpacket \
      --var src_mac=$SRC --var peer_mac=$PEER --count 2 --rate 1pps
$ sudo ip netns exec wpgfrr vtysh -N wpg -c "show isis neighbor"
Area 1:
  System Id           Interface   L  State        Holdtime SNPA
 0000.0000.0001      frr0        2  Up            30       a63f.1a8d.7239
$ sudo ip netns exec wpgfrr vtysh -N wpg -c "show isis neighbor detail"
Area 1:
 0000.0000.0001
    Interface: frr0, Level: 2, State: Up, Expires in 30s
    Adjacency flaps: 1, Last: 1s ago
    Circuit type: L2, Speaks: IPv4
    SNPA: a63f.1a8d.7239, LAN id: 0000.0000.0001.01
    LAN Priority: 0, unknown DIS state, DIS flaps: 0, Last: 2s ago
    Area Address(es):
      49.0001
    IPv4 Address(es):
      10.99.0.1

テンプレートの TLV (エリア、IPv4 アドレス、優先度 0、保持時間 30 秒) がそのまま FRR に見えています。隣接を保つには、保持時間より短い間隔で Hello を送り続けます。テンプレートの既定 (--count なし) は 3 秒間隔で 40 個、2 分間です。止めると 30 秒で隣接が消えます。

ステップ 6. 変えてみる

  • エリアを変える: --var area=49.0002 --var "system_id=0000 0000 0003" で送っても、隣接は Up になります。エリアアドレスの一致が必要なのはレベル 1 の隣接だけで、レベル 2 はエリアをまたいで隣接するためです (ISO 10589)。レベル 1 を試すには、テンプレートの isis_l2_lan_hello を isis_l1_lan_hello に、宛先を 01:80:c2:00:00:14 (AllL1ISs) に変え、FRR を is-type level-1 にします。
  • MTU の不一致: pdu_length を Auto に戻す (行を消す) と、パディングのない短い Hello になります。FRR は既定で Hello のパディングを要求しないため隣接は張れますが、パディングを必須にしている実装では張れません。実機での挙動の違いを確かめるのに使えます。
  • 認証: templates/protocols/routing/isis-l2-lan-hello.wpg.yaml は平文認証 (TLV 10) 付きの例です。HMAC-MD5 の値は wpg が計算しないので、手で入れる必要があります。
  • 他の PDU: LSP・CSNP・PSNP・ポイントツーポイント Hello のサンプルが templates/protocols/routing/isis-*.wpg.yaml にあります。LSP のチェックサム (Fletcher) は Auto です。

後片付け:

sudo scripts/interop/frr-netns.sh --down

次のステップ

  • 実機 (IOS-XR、Junos) や CML2 上のルータで同じ確認をする手順と設定例は 相互接続確認 にあります。
  • 同じ考え方の IPv6 版 (型・長さ・チェックサムが互いに導出される複数レイヤ) は IPv6 と近隣探索 (NDP) で扱います。

プロトコルリファレンス

本章は wpg-protocols のプロトコル定義 IR (GET /api/protocols で返すカタログ) から自動生成しているため、常にコードと一致します。対象は 183 プロトコルです。各ページには、ワイヤ順のフィールド (型、既定値、Auto の規則、説明)、そのプロトコルに至る下位レイヤ、次レイヤの対応表、組み立て後に検査する制約、同梱のサンプルテンプレートを載せています。到達経路、手で設定するフィールド、残っている近似は手書きのプロトコル補足を参照してください。定義を変更したら just docs-gen で再生成します。

L2 (データリンク)

ID名前フィールド数次レイヤの判別補足
ethernet2Ethernet II3ethertypeカプセル化・トンネル, L2 制御プロトコル, SRv6 SRH / SR-MPLS (P2), ユーザ定義プロトコル (protocols.d)
dot1q802.1Q VLAN4ethertypeユーザ定義プロトコル (protocols.d)
dot1ad802.1ad S-VLAN4ethertype
dot3IEEE 802.33lengthL2 制御プロトコル
llcIEEE 802.2 LLC3dsapL2 制御プロトコル, OSI カプセル化 (P2)
snapSNAP2pidL2 制御プロトコル
arpARP9
lldpLLDP1L2 制御プロトコル
cdpCDP4L2 制御プロトコル
stpSTP BPDU15L2 制御プロトコル
lacpLACP27L2 制御プロトコル, PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
markerMarker Protocol11L2 制御プロトコル, PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
eapolEAPOL4L2 制御プロトコル
pppoe_discoveryPPPoE Discovery6L2 制御プロトコル
pppoe_sessionPPPoE Session5session_idL2 制御プロトコル
pppPPP1protocolL2 制御プロトコル, OSI カプセル化 (P2)
ppp_lcpPPP LCP4L2 制御プロトコル
ppp_ipcpPPP IPCP4L2 制御プロトコル
vxlanVXLAN4flagsカプセル化・トンネル
mplsMPLS4sカプセル化・トンネル, SRv6 SRH / SR-MPLS (P2)
geneveGeneve9protocol_typeカプセル化・トンネル
macsecMACsec13MACsec / GTPv2-C / Diameter / SIP / RTP (P2)
esmcESMC8PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfmCFM6opcodePTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_ccmCFM CCM16PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_lbmCFM LBM7PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_lbrCFM LBR7PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_ltmCFM LTM11PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_ltrCFM LTR12PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_aisY.1731 AIS7PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_lckY.1731 LCK7PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_tstY.1731 TST7PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_rapsERPS R-APS14PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_lmmY.1731 LMM9PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_lmrY.1731 LMR9PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_1dmY.1731 1DM10PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_dmmY.1731 DMM14PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_dmrY.1731 DMR14PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_csfY.1731 CSF8PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_slmY.1731 SLM11PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_slrY.1731 SLR11PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
cfm_1slY.1731 1SL11PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
efm_oam802.3ah OAM4codePTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
efm_oam_information802.3ah OAM Information4PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
efm_oam_event_notification802.3ah OAM Event Notification5PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
efm_oam_variable_request802.3ah OAM Variable Request4PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
efm_oam_variable_response802.3ah OAM Variable Response4PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
efm_oam_loopback_control802.3ah OAM Loopback Control4PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
efm_oam_organization_specific802.3ah OAM Organization Specific5PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)

L3 (ネットワーク)

ID名前フィールド数次レイヤの判別補足
ipv4IPv415protocolカプセル化・トンネル, IS-IS (P2), MACsec / GTPv2-C / Diameter / SIP / RTP (P2), LDP / RSVP-TE / BFD (P2), マルチキャスト制御プロトコル, ユーザ定義プロトコル (protocols.d)
ipv6IPv69next_headerカプセル化・トンネル, IS-IS (P2), MACsec / GTPv2-C / Diameter / SIP / RTP (P2), ユーザ定義プロトコル (protocols.d)
ipv6_hopoptsIPv6 Hop-by-Hop Options4next_headerマルチキャスト制御プロトコル
ipv6_routeIPv6 Routing6next_headerSRv6 SRH / SR-MPLS (P2)
ipv6_srhIPv6 Segment Routing Header10next_headerSRv6 SRH / SR-MPLS (P2)
ipv6_fragIPv6 Fragment6next_header
ipv6_dstoptsIPv6 Destination Options4next_header
icmpv4ICMPv44
icmpv6ICMPv63typeマルチキャスト制御プロトコル
icmpv6_echoICMPv6 Echo2
ndp_rsNDP Router Solicitation2
ndp_raNDP Router Advertisement8
ndp_nsNDP Neighbor Solicitation3
ndp_naNDP Neighbor Advertisement6
ndp_redirectNDP Redirect4
greGRE2protocol_typeカプセル化・トンネル
nvgreNVGRE4protocol_typeカプセル化・トンネル
ospfv2OSPFv28typeルーティングプロトコル
ospfv2_helloOSPFv2 Hello8
ospfv2_dbdOSPFv2 DBD5
ospfv2_lsrOSPFv2 LSR1
ospfv2_lsuOSPFv2 LSU1num_lsas
ospfv2_lsackOSPFv2 LSAck1
ospfv2_lsaOSPFv2 LSA8ls_typeOSPF Opaque / SR、BGP MP / VPN / EVPN (P2)
ospfv2_router_lsaOSPFv2 Router-LSA4
ospfv2_network_lsaOSPFv2 Network-LSA2
ospfv2_summary_lsaOSPFv2 Summary-LSA3
ospfv2_external_lsaOSPFv2 AS-External-LSA6
ospfv2_opaque_lsaOSPFv2 Opaque LSA9opaque_typeOSPF Opaque / SR、BGP MP / VPN / EVPN (P2)
ospfv2_te_lsaOSPFv2 TE LSA1OSPF Opaque / SR、BGP MP / VPN / EVPN (P2)
ospfv2_ri_lsaOSPFv2 Router Information LSA1OSPF Opaque / SR、BGP MP / VPN / EVPN (P2)
ospfv2_ext_prefix_lsaOSPFv2 Extended Prefix LSA1OSPF Opaque / SR、BGP MP / VPN / EVPN (P2)
ospfv2_ext_link_lsaOSPFv2 Extended Link LSA1OSPF Opaque / SR、BGP MP / VPN / EVPN (P2)
ospfv3OSPFv38typeルーティングプロトコル
ospfv3_helloOSPFv3 Hello8
ospfv3_dbdOSPFv3 DBD7
ospfv3_lsrOSPFv3 LSR1
ospfv3_lsuOSPFv3 LSU1num_lsasルーティングプロトコル
ospfv3_lsackOSPFv3 LSAck1
ospfv3_lsaOSPFv3 LSA7ls_type
ospfv3_router_lsaOSPFv3 Router-LSA3
ospfv3_network_lsaOSPFv3 Network-LSA3
ospfv3_inter_area_prefix_lsaOSPFv3 Inter-Area-Prefix-LSA6
ospfv3_as_external_lsaOSPFv3 AS-External-LSA6
ospfv3_link_lsaOSPFv3 Link-LSA5
ospfv3_intra_area_prefix_lsaOSPFv3 Intra-Area-Prefix-LSA5
eigrpEIGRP9ルーティングプロトコル
vrrpv2VRRPv210冗長化プロトコル (FHRP)
vrrpv3VRRPv39version冗長化プロトコル (FHRP)
vrrpv3_ipv6VRRPv3 (IPv6)9冗長化プロトコル (FHRP)
igmpIGMP3typeマルチキャスト制御プロトコル
igmpv2IGMPv1/v21マルチキャスト制御プロトコル
igmpv3_queryIGMPv3 Query7マルチキャスト制御プロトコル
igmpv3_reportIGMPv3 Report3マルチキャスト制御プロトコル
mldMLDv13マルチキャスト制御プロトコル
mldv2_queryMLDv2 Query9マルチキャスト制御プロトコル
mldv2_reportMLDv2 Report3マルチキャスト制御プロトコル
pimPIM4typeマルチキャスト制御プロトコル
pim_helloPIM Hello1マルチキャスト制御プロトコル
pim_join_prunePIM Join/Prune7マルチキャスト制御プロトコル
pim_registerPIM Register7typeマルチキャスト制御プロトコル
osiOSI network PDU2CLNP / ES-IS (P2), OSI カプセル化 (P2)
clnpCLNP14CLNP / ES-IS (P2), IS-IS (P2), OSI カプセル化 (P2)
esisES-IS9pdu_typeCLNP / ES-IS (P2)
esis_eshES-IS ESH11CLNP / ES-IS (P2)
esis_ishES-IS ISH10CLNP / ES-IS (P2), OSI カプセル化 (P2)
esis_rdES-IS Redirect13CLNP / ES-IS (P2)
isisIS-IS10pdu_typeIS-IS (P2)
isis_l1_lan_helloIS-IS L1 LAN Hello18IS-IS (P2), OSI カプセル化 (P2)
isis_l2_lan_helloIS-IS L2 LAN Hello18IS-IS (P2)
isis_p2p_helloIS-IS P2P Hello16IS-IS (P2)
isis_l1_lspIS-IS L1 LSP19IS-IS (P2)
isis_l2_lspIS-IS L2 LSP19IS-IS (P2)
isis_l1_csnpIS-IS L1 CSNP14IS-IS (P2)
isis_l2_csnpIS-IS L2 CSNP14IS-IS (P2)
isis_l1_psnpIS-IS L1 PSNP12IS-IS (P2)
isis_l2_psnpIS-IS L2 PSNP12IS-IS (P2)

L4 (トランスポート)

アプリケーション・制御

ID名前フィールド数次レイヤの判別補足
bgpBGP3typeルーティングプロトコル
bgp_openBGP OPEN6
bgp_updateBGP UPDATE5
bgp_notificationBGP NOTIFICATION3
bgp_route_refreshBGP ROUTE-REFRESH3
ripRIP4ルーティングプロトコル
ripngRIPng4ルーティングプロトコル
hsrpHSRPv110version冗長化プロトコル (FHRP)
hsrpv2HSRPv21冗長化プロトコル (FHRP)
glbpGLBP6冗長化プロトコル (FHRP)
dhcpv4DHCPv417アプリケーションプロトコル
dhcpv6DHCPv63msg_typeアプリケーションプロトコル
dhcpv6_relayDHCPv6 Relay5アプリケーションプロトコル
dnsDNS16アプリケーションプロトコル
ntpNTP14アプリケーションプロトコル
snmpSNMP8versionアプリケーションプロトコル
snmp_pduSNMP PDU3pdu_typeアプリケーションプロトコル
snmp_trapSNMPv1 Trap3アプリケーションプロトコル
syslogSyslog1アプリケーションプロトコル
radiusRADIUS5アプリケーションプロトコル
tftpTFTP4opcodeアプリケーションプロトコル
tftp_dataTFTP DATA3アプリケーションプロトコル
tftp_ackTFTP ACK2アプリケーションプロトコル
tftp_errorTFTP ERROR3アプリケーションプロトコル
tftp_oackTFTP OACK2アプリケーションプロトコル
ldpLDP5LDP / RSVP-TE / BFD (P2)
bfdBFD17LDP / RSVP-TE / BFD (P2)
gtpv2GTPv2-C12pMACsec / GTPv2-C / Diameter / SIP / RTP (P2)
diameterDiameter12MACsec / GTPv2-C / Diameter / SIP / RTP (P2)
sipSIP3MACsec / GTPv2-C / Diameter / SIP / RTP (P2)
rtpRTP11MACsec / GTPv2-C / Diameter / SIP / RTP (P2)
rtcpRTCP6packet_typeMACsec / GTPv2-C / Diameter / SIP / RTP (P2)
rtcp_srRTCP SR13versionMACsec / GTPv2-C / Diameter / SIP / RTP (P2)
rtcp_rrRTCP RR8versionMACsec / GTPv2-C / Diameter / SIP / RTP (P2)
rtcp_sdesRTCP SDES6versionMACsec / GTPv2-C / Diameter / SIP / RTP (P2)
rtcp_byeRTCP BYE7versionMACsec / GTPv2-C / Diameter / SIP / RTP (P2)
rtcp_appRTCP APP8versionMACsec / GTPv2-C / Diameter / SIP / RTP (P2)
ptpPTP16message_typePTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_syncPTP Sync18PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_delay_reqPTP Delay_Req18PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_pdelay_reqPTP Pdelay_Req19PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_pdelay_respPTP Pdelay_Resp20PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_follow_upPTP Follow_Up18PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_delay_respPTP Delay_Resp20PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_pdelay_resp_follow_upPTP Pdelay_Resp_Follow_Up20PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_announcePTP Announce28PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_signalingPTP Signaling18PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
ptp_managementPTP Management23PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)

ペイロード

Ethernet II (ethernet2)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header143 (0x8f)
ipv6_hopoptsnext_header143 (0x8f)
ipv6_routenext_header143 (0x8f)
ipv6_srhnext_header143 (0x8f)
ipv6_fragnext_header143 (0x8f)
ipv6_dstoptsnext_header143 (0x8f)
vxlanflags(その他の値)
greprotocol_type25944 (0x6558)
nvgreprotocol_type25944 (0x6558)
geneveprotocol_type25944 (0x6558)

フィールド

フィールド型既定値Auto説明
dstmacff:ff:ff:ff:ff:ff宛先 MAC アドレス。
srcmac02:00:00:00:00:01送信元 MAC アドレス。
ethertypeenum(16)34997 (local_experimental)次レイヤのプロトコル番号 (「次レイヤ」参照)次レイヤの EtherType (上位レイヤから Auto。次レイヤ不明時は 0x88b5 = ローカル実験用)。0x05ff 以下の値は IEEE 802.3 の長さ。

ethertype

値名前
2048 (0x0800)ipv4
2054 (0x0806)arp
33024 (0x8100)vlan
34825 (0x8809)slow_protocols
34525 (0x86dd)ipv6
34887 (0x8847)mpls
34888 (0x8848)mpls_multicast
34915 (0x8863)pppoe_discovery
34916 (0x8864)pppoe_session
34958 (0x888e)eapol
34984 (0x88a8)qinq
34997 (0x88b5)local_experimental
35020 (0x88cc)lldp
35045 (0x88e5)macsec
35063 (0x88f7)ptp
35074 (0x8902)cfm

次レイヤ

次レイヤは ethertype で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2048 (0x0800)ipv4
34525 (0x86dd)ipv6
2054 (0x0806)arp
33024 (0x8100)dot1q
34984 (0x88a8)dot1ad
35020 (0x88cc)lldp
34958 (0x888e)eapol
34915 (0x8863)pppoe_discovery
34916 (0x8864)pppoe_session
34887 (0x8847)mpls
34888 (0x8848)mpls
35045 (0x88e5)macsec
35063 (0x88f7)ptp
35063 (0x88f7)ptp_sync
35063 (0x88f7)ptp_delay_req
35063 (0x88f7)ptp_pdelay_req
35063 (0x88f7)ptp_pdelay_resp
35063 (0x88f7)ptp_follow_up
35063 (0x88f7)ptp_delay_resp
35063 (0x88f7)ptp_pdelay_resp_follow_up
35063 (0x88f7)ptp_announce
35063 (0x88f7)ptp_signaling
35063 (0x88f7)ptp_management
35074 (0x8902)cfm
35074 (0x8902)cfm_ccm
35074 (0x8902)cfm_lbr
35074 (0x8902)cfm_lbm
35074 (0x8902)cfm_ltr
35074 (0x8902)cfm_ltm
35074 (0x8902)cfm_ais
35074 (0x8902)cfm_lck
35074 (0x8902)cfm_tst
35074 (0x8902)cfm_raps
35074 (0x8902)cfm_lmr
35074 (0x8902)cfm_lmm
35074 (0x8902)cfm_1dm
35074 (0x8902)cfm_dmr
35074 (0x8902)cfm_dmm
35074 (0x8902)cfm_csf
35074 (0x8902)cfm_1sl
35074 (0x8902)cfm_slr
35074 (0x8902)cfm_slm
0 (0x0000) – 1535 (0x05ff)dot3このレイヤを読み直す

ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット

サンプルテンプレート

802.1Q VLAN (dot1q)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype33024 (0x8100)
dot1qethertype33024 (0x8100)
dot1adethertype33024 (0x8100)
snappid33024 (0x8100)

フィールド

フィールド型既定値Auto説明
pcpuint(3)0優先度コードポイント (802.1p のサービスクラス、0〜7)。
deiuint(1)0廃棄適格表示 (DEI)。
viduint(12)1VLAN ID (1〜4094。0 = 優先度タグのみ、4095 は予約)。
ethertypeenum(16)34997 (local_experimental)次レイヤのプロトコル番号 (「次レイヤ」参照)タグの次のレイヤの EtherType (Auto。もう 1 つの 802.1Q タグなら 0x8100)。

ethertype

値名前
2048 (0x0800)ipv4
2054 (0x0806)arp
33024 (0x8100)vlan
34525 (0x86dd)ipv6
34997 (0x88b5)local_experimental
35045 (0x88e5)macsec
35063 (0x88f7)ptp
35074 (0x8902)cfm

次レイヤ

次レイヤは ethertype で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2048 (0x0800)ipv4
34525 (0x86dd)ipv6
2054 (0x0806)arp
33024 (0x8100)dot1q
34984 (0x88a8)dot1ad
35045 (0x88e5)macsec
35063 (0x88f7)ptp
35063 (0x88f7)ptp_sync
35063 (0x88f7)ptp_delay_req
35063 (0x88f7)ptp_pdelay_req
35063 (0x88f7)ptp_pdelay_resp
35063 (0x88f7)ptp_follow_up
35063 (0x88f7)ptp_delay_resp
35063 (0x88f7)ptp_pdelay_resp_follow_up
35063 (0x88f7)ptp_announce
35063 (0x88f7)ptp_signaling
35063 (0x88f7)ptp_management
35074 (0x8902)cfm
35074 (0x8902)cfm_ccm
35074 (0x8902)cfm_lbr
35074 (0x8902)cfm_lbm
35074 (0x8902)cfm_ltr
35074 (0x8902)cfm_ltm
35074 (0x8902)cfm_ais
35074 (0x8902)cfm_lck
35074 (0x8902)cfm_tst
35074 (0x8902)cfm_raps
35074 (0x8902)cfm_lmr
35074 (0x8902)cfm_lmm
35074 (0x8902)cfm_1dm
35074 (0x8902)cfm_dmr
35074 (0x8902)cfm_dmm
35074 (0x8902)cfm_csf
35074 (0x8902)cfm_1sl
35074 (0x8902)cfm_slr
35074 (0x8902)cfm_slm

制約

レベル規則
警告vid が 4095 以外

サンプルテンプレート

802.1ad S-VLAN (dot1ad)

  • レイヤ: L2 (データリンク)
  • ヘッダ: 4 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype34984 (0x88a8)
dot1qethertype34984 (0x88a8)
dot1adethertype34984 (0x88a8)

フィールド

フィールド型既定値Auto説明
pcpuint(3)0優先度コードポイント (802.1p のサービスクラス、0〜7)。
deiuint(1)0廃棄適格表示 (DEI)。
viduint(12)1VLAN ID (1〜4094。0 = 優先度タグのみ、4095 は予約)。
ethertypeenum(16)33024 (vlan)次レイヤのプロトコル番号 (「次レイヤ」参照)S タグの次のレイヤの EtherType (Auto。通常は 802.1Q の C タグを示す 0x8100)。

ethertype

値名前
2048 (0x0800)ipv4
2054 (0x0806)arp
33024 (0x8100)vlan
34525 (0x86dd)ipv6
34984 (0x88a8)qinq
34997 (0x88b5)local_experimental
35063 (0x88f7)ptp
35074 (0x8902)cfm

次レイヤ

次レイヤは ethertype で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
33024 (0x8100)dot1q
34984 (0x88a8)dot1ad
2048 (0x0800)ipv4
34525 (0x86dd)ipv6
2054 (0x0806)arp
35063 (0x88f7)ptp
35063 (0x88f7)ptp_sync
35063 (0x88f7)ptp_delay_req
35063 (0x88f7)ptp_pdelay_req
35063 (0x88f7)ptp_pdelay_resp
35063 (0x88f7)ptp_follow_up
35063 (0x88f7)ptp_delay_resp
35063 (0x88f7)ptp_pdelay_resp_follow_up
35063 (0x88f7)ptp_announce
35063 (0x88f7)ptp_signaling
35063 (0x88f7)ptp_management
35074 (0x8902)cfm
35074 (0x8902)cfm_ccm
35074 (0x8902)cfm_lbr
35074 (0x8902)cfm_lbm
35074 (0x8902)cfm_ltr
35074 (0x8902)cfm_ltm
35074 (0x8902)cfm_ais
35074 (0x8902)cfm_lck
35074 (0x8902)cfm_tst
35074 (0x8902)cfm_raps
35074 (0x8902)cfm_lmr
35074 (0x8902)cfm_lmm
35074 (0x8902)cfm_1dm
35074 (0x8902)cfm_dmr
35074 (0x8902)cfm_dmm
35074 (0x8902)cfm_csf
35074 (0x8902)cfm_1sl
35074 (0x8902)cfm_slr
35074 (0x8902)cfm_slm

制約

レベル規則
警告vid が 4095 以外

サンプルテンプレート

IEEE 802.3 (dot3)

  • レイヤ: L2 (データリンク)
  • ヘッダ: 14 オクテット (固定長)
  • 最小フレーム長: 60 オクテット
  • 補足: L2 制御プロトコル

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype0 (0x0000) – 1535 (0x05ff) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
dstmacff:ff:ff:ff:ff:ff宛先 MAC アドレス。
srcmac02:00:00:00:00:01送信元 MAC アドレス。
lengthuint(16)ペイロードの長さ (オクテット単位)LLC データの長さ (バイト、Auto、最大 1500)。

次レイヤ

次レイヤは length で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
(その他の値)llc

制約

レベル規則
警告length が 0..1500 の範囲

サンプルテンプレート

  • interop-isis-l2-lan-hello-up — templates/interop/isis-l2-lan-hello-up.wpg.yaml
  • dot3-llc-osi — templates/protocols/l2/dot3-llc-osi.wpg.yaml
  • dot3-llc-snap-frame — templates/protocols/l2/dot3-llc-snap.wpg.yaml
  • dot3-llc-frame — templates/protocols/l2/dot3-llc.wpg.yaml
  • clnp-dt — templates/protocols/l3/clnp-dt.wpg.yaml
  • clnp-er — templates/protocols/l3/clnp-er.wpg.yaml
  • clnp-erq — templates/protocols/l3/clnp-erq.wpg.yaml
  • esis-esh — templates/protocols/routing/esis-esh.wpg.yaml
  • esis-generic — templates/protocols/routing/esis-generic.wpg.yaml
  • esis-ish — templates/protocols/routing/esis-ish.wpg.yaml
  • esis-rd — templates/protocols/routing/esis-rd.wpg.yaml
  • isis-generic — templates/protocols/routing/isis-generic.wpg.yaml
  • isis-l1-csnp — templates/protocols/routing/isis-l1-csnp.wpg.yaml
  • isis-l1-lan-hello — templates/protocols/routing/isis-l1-lan-hello.wpg.yaml
  • isis-l1-lsp — templates/protocols/routing/isis-l1-lsp.wpg.yaml
  • isis-l1-psnp — templates/protocols/routing/isis-l1-psnp.wpg.yaml
  • isis-l2-csnp — templates/protocols/routing/isis-l2-csnp.wpg.yaml
  • isis-l2-lan-hello — templates/protocols/routing/isis-l2-lan-hello.wpg.yaml
  • isis-l2-lsp — templates/protocols/routing/isis-l2-lsp.wpg.yaml
  • isis-l2-psnp — templates/protocols/routing/isis-l2-psnp.wpg.yaml
  • isis-p2p-hello — templates/protocols/routing/isis-p2p-hello.wpg.yaml

IEEE 802.2 LLC (llc)

下位レイヤからの到達

下位レイヤ判別フィールド値
dot3length(その他の値)

フィールド

フィールド型既定値Auto説明
dsapenum(8)170 (snap)次レイヤのプロトコル番号 (「次レイヤ」参照)宛先サービスアクセスポイント (Auto: 0xaa = SNAP、0xfe = OSI、0x42 = スパニングツリー)。
ssapenum(8)170 (snap)次レイヤのプロトコル番号 (「次レイヤ」参照)送信元サービスアクセスポイント (Auto、通常 DSAP と同じ)。
controlenum(8)3 (ui)制御フィールド。0x03 = 非番号付き情報 (UI)。

dsap

値名前
66 (0x42)stp
170 (0xaa)snap
224 (0xe0)ipx
240 (0xf0)netbios
254 (0xfe)osi
255 (0xff)global

ssap

値名前
66 (0x42)stp
170 (0xaa)snap
224 (0xe0)ipx
240 (0xf0)netbios
254 (0xfe)osi

control

値名前
3 (0x03)ui
175 (0xaf)xid
227 (0xe3)test

次レイヤ

次レイヤは dsap で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
170 (0xaa)snap
66 (0x42)stp

dsap = 254 (0xfe) のときのペイロード先頭 8 ビット

値プロトコル
129 (0x81)clnp
130 (0x82)esis
130 (0x82)esis_esh
130 (0x82)esis_ish
130 (0x82)esis_rd
131 (0x83)isis
131 (0x83)isis_l1_lan_hello
131 (0x83)isis_l2_lan_hello
131 (0x83)isis_p2p_hello
131 (0x83)isis_l1_lsp
131 (0x83)isis_l2_lsp
131 (0x83)isis_l1_csnp
131 (0x83)isis_l2_csnp
131 (0x83)isis_l1_psnp
131 (0x83)isis_l2_psnp
(その他の値)osi

サンプルテンプレート

  • interop-isis-l2-lan-hello-up — templates/interop/isis-l2-lan-hello-up.wpg.yaml
  • dot3-llc-osi — templates/protocols/l2/dot3-llc-osi.wpg.yaml
  • dot3-llc-snap-frame — templates/protocols/l2/dot3-llc-snap.wpg.yaml
  • dot3-llc-frame — templates/protocols/l2/dot3-llc.wpg.yaml
  • clnp-dt — templates/protocols/l3/clnp-dt.wpg.yaml
  • clnp-er — templates/protocols/l3/clnp-er.wpg.yaml
  • clnp-erq — templates/protocols/l3/clnp-erq.wpg.yaml
  • esis-esh — templates/protocols/routing/esis-esh.wpg.yaml
  • esis-generic — templates/protocols/routing/esis-generic.wpg.yaml
  • esis-ish — templates/protocols/routing/esis-ish.wpg.yaml
  • esis-rd — templates/protocols/routing/esis-rd.wpg.yaml
  • isis-generic — templates/protocols/routing/isis-generic.wpg.yaml
  • isis-l1-csnp — templates/protocols/routing/isis-l1-csnp.wpg.yaml
  • isis-l1-lan-hello — templates/protocols/routing/isis-l1-lan-hello.wpg.yaml
  • isis-l1-lsp — templates/protocols/routing/isis-l1-lsp.wpg.yaml
  • isis-l1-psnp — templates/protocols/routing/isis-l1-psnp.wpg.yaml
  • isis-l2-csnp — templates/protocols/routing/isis-l2-csnp.wpg.yaml
  • isis-l2-lan-hello — templates/protocols/routing/isis-l2-lan-hello.wpg.yaml
  • isis-l2-lsp — templates/protocols/routing/isis-l2-lsp.wpg.yaml
  • isis-l2-psnp — templates/protocols/routing/isis-l2-psnp.wpg.yaml
  • isis-p2p-hello — templates/protocols/routing/isis-p2p-hello.wpg.yaml

SNAP (snap)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap170 (0xaa)

フィールド

フィールド型既定値Auto説明
ouiuint(24)0組織固有識別子 (OUI)。0 ならプロトコル ID は EtherType。
pidenum(16)34997 (local_experimental)次レイヤのプロトコル番号 (「次レイヤ」参照)プロトコル ID (OUI が 0 のとき EtherType。次レイヤから Auto)。

pid

値名前
2048 (0x0800)ipv4
2054 (0x0806)arp
8192 (0x2000)cdp
33024 (0x8100)vlan
34525 (0x86dd)ipv6
34997 (0x88b5)local_experimental

次レイヤ

次レイヤは pid で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2048 (0x0800)ipv4
34525 (0x86dd)ipv6
2054 (0x0806)arp
8192 (0x2000)cdp
33024 (0x8100)dot1q

サンプルテンプレート

ARP (arp)

  • レイヤ: L2 (データリンク)
  • ヘッダ: 28 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype2054 (0x0806)
dot1qethertype2054 (0x0806)
dot1adethertype2054 (0x0806)
snappid2054 (0x0806)

フィールド

フィールド型既定値Auto説明
htypeenum(16)1 (ethernet)ハードウェア種別 (1 = Ethernet)。
ptypeenum(16)2048 (ipv4)プロトコル種別 (EtherType、0x0800 = IPv4)。
hlenuint(8)6ハードウェアアドレス長 (バイト、Ethernet は 6)。
plenuint(8)4プロトコルアドレス長 (バイト、IPv4 は 4)。
operenum(16)1 (request)オペレーション (1 = 要求、2 = 応答)。
shamac02:00:00:00:00:01送信元ハードウェアアドレス。
spaipv4192.0.2.1送信元プロトコルアドレス。
thamac00:00:00:00:00:00宛先ハードウェアアドレス。
tpaipv4192.0.2.2宛先プロトコルアドレス。

htype

値名前
1 (0x0001)ethernet
6 (0x0006)ieee802
15 (0x000f)frame_relay
16 (0x0010)atm

ptype

値名前
2048 (0x0800)ipv4
34525 (0x86dd)ipv6

oper

値名前
1 (0x0001)request
2 (0x0002)reply
3 (0x0003)rarp_request
4 (0x0004)rarp_reply
8 (0x0008)inarp_request
9 (0x0009)inarp_reply

制約

レベル規則
警告hlen が 6
警告plen が 4
警告oper が 1..2 の範囲

サンプルテンプレート

LLDP (lldp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35020 (0x88cc)

フィールド

フィールド型既定値Auto説明
tlvslist<struct> — PDU の残りすべて4 要素LLDP TLV 群 (7 ビット型 + 9 ビット長ヘッダ)。

tlvs

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
typeuint(7)
lengthuint(9)
valuebytes — length オクテット

サンプルテンプレート

  • lldp — templates/protocols/l2/lldp.wpg.yaml

CDP (cdp)

下位レイヤからの到達

下位レイヤ判別フィールド値
snappid8192 (0x2000)

フィールド

フィールド型既定値Auto説明
versionuint(8)2CDP プロトコルバージョン (2)。
ttluint(8)180このアドバタイズの有効時間 (秒)。
checksumuint(16)ヘッダとそれ以降すべてに対するインターネットチェックサムCDP ヘッダと TLV に対するインターネットチェックサム (自動)。
tlvstlv — PDU の残りすべてCDP TLV 群 (16 ビット型、ヘッダを含む 16 ビット長)。

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)device_id
2 (0x0002)addresses
3 (0x0003)port_id
4 (0x0004)capabilities
5 (0x0005)software_version
6 (0x0006)platform
7 (0x0007)ip_prefix
10 (0x000a)native_vlan
11 (0x000b)duplex

サンプルテンプレート

  • cdp — templates/protocols/l2/cdp.wpg.yaml

STP BPDU (stp)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap66 (0x42)

フィールド

フィールド型既定値Auto説明
protocol_iduint(16)0スパニングツリープロトコル識別子 (常に 0)。
protocol_versionenum(8)0 (stp)プロトコルバージョン (0 = STP、2 = RSTP、3 = MSTP)。
bpdu_typeenum(8)0 (config)BPDU 種別 (0 = Configuration、2 = RST/MST、0x80 = TCN)。
flagsflags(8)0x0BPDU フラグ (トポロジ変更、Proposal、ロール、Learning、Forwarding、Agreement、TCA)。
root_priorityuint(16)32768ルートブリッジの優先度とシステム ID 拡張。
root_macmac00:00:00:00:00:00ルートブリッジの MAC アドレス。
root_path_costuint(32)0ルートブリッジまでの経路コスト。
bridge_priorityuint(16)32768送信ブリッジの優先度とシステム ID 拡張。
bridge_macmac00:00:00:00:00:00送信ブリッジの MAC アドレス。
port_iduint(16)32769送信ポート識別子 (優先度 + 番号)。
message_ageuint(16)0BPDU の経過時間 (1/256 秒)。
max_ageuint(16)5120タイムアウトまでの最大 BPDU 経過時間 (1/256 秒)。
hello_timeuint(16)512Configuration BPDU の送信間隔 (1/256 秒)。
forward_delayuint(16)3840転送遅延タイマ (1/256 秒)。
trailerbytes — PDU の残りすべて""RSTP / MSTP 拡張 (version1 長、v3 長、MSTI レコード)。不透明オクテット。

protocol_version

値名前
0 (0x00)stp
2 (0x02)rstp
3 (0x03)mstp

bpdu_type

値名前
0 (0x00)config
2 (0x02)rapid
128 (0x80)topology_change

flags

ビットマスク名前
01 (0x01)topology_change
12 (0x02)proposal
416 (0x10)learning
532 (0x20)forwarding
664 (0x40)agreement
7128 (0x80)topology_change_ack

制約

レベル規則
警告protocol_id が 0

サンプルテンプレート

  • stp — templates/protocols/l2/stp.wpg.yaml

LACP (lacp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット1 (0x01)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)1Slow Protocols サブタイプ (1 = LACP)。
versionuint(8)1
actor_info_typeuint(8)1
actor_info_lengthuint(8)20
actor_system_priorityuint(16)32768
actor_systemmacActor システムの MAC アドレス。
actor_keyuint(16)1
actor_port_priorityuint(16)32768
actor_portuint(16)1
actor_stateflags(8)0x45Actor 状態フラグ (Activity、Timeout、Aggregation、Sync、Collecting、Distributing、Defaulted、Expired)。
actor_reservedbytes(3)00 00 00
partner_info_typeuint(8)2
partner_info_lengthuint(8)20
partner_system_priorityuint(16)32768
partner_systemmacPartner システムの MAC アドレス。
partner_keyuint(16)1
partner_port_priorityuint(16)32768
partner_portuint(16)1
partner_stateflags(8)0x45Partner 状態フラグ。
partner_reservedbytes(3)00 00 00
collector_info_typeuint(8)3
collector_info_lengthuint(8)16
collector_max_delayuint(16)0
collector_reservedbytes(12)00 00 00 00 00 00 00 00 00 00 00 00
terminator_typeuint(8)0
terminator_lengthuint(8)0
terminator_reservedbytes(50)00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

actor_state

ビットマスク名前
01 (0x01)activity
12 (0x02)timeout
24 (0x04)aggregation
38 (0x08)synchronization
416 (0x10)collecting
532 (0x20)distributing
664 (0x40)defaulted
7128 (0x80)expired

partner_state

ビットマスク名前
01 (0x01)activity
12 (0x02)timeout
24 (0x04)aggregation
38 (0x08)synchronization
416 (0x10)collecting
532 (0x20)distributing
664 (0x40)defaulted
7128 (0x80)expired

サンプルテンプレート

  • lacp — templates/protocols/l2/lacp.wpg.yaml

Marker Protocol (marker)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット2 (0x02)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)2Slow Protocols サブタイプ (2 = Marker)。
versionuint(8)1
info_typeuint(8)1
info_lengthuint(8)16
requester_portuint(16)1
requester_systemmac
requester_transaction_iduint(32)0
paduint(16)0
terminator_typeuint(8)0
terminator_lengthuint(8)0
reservedbytes(90)00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

サンプルテンプレート

  • marker — templates/protocols/l2/marker.wpg.yaml

EAPOL (eapol)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype34958 (0x888e)

フィールド

フィールド型既定値Auto説明
versionuint(8)2EAPOL プロトコルバージョン。
typeenum(8)0 (eap)EAPOL パケット種別 (0 = EAP、1 = Start、2 = Logoff、3 = Key)。
lengthuint(16)ヘッダの長さ (オクテット単位) (-4)EAPOL ボディの長さ (オクテット、自動)。
bodybytes — length オクテット""EAPOL ボディ (種別 0 では EAP パケット)。不透明オクテット。

type

値名前
0 (0x00)eap
1 (0x01)start
2 (0x02)logoff
3 (0x03)key
4 (0x04)encapsulated_asf_alert

サンプルテンプレート

  • eapol — templates/protocols/l2/eapol.wpg.yaml

PPPoE Discovery (pppoe_discovery)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype34915 (0x8863)

フィールド

フィールド型既定値Auto説明
versionuint(4)1PPPoE プロトコルバージョン (1)。
typeuint(4)1PPPoE タイプ (1)。
codeenum(8)9 (padi)PPPoE コード (PADI / PADO / PADR / PADS / PADT、0 = セッションデータ)。
session_iduint(16)0PPPoE セッション識別子。
lengthuint(16)ヘッダの長さ (オクテット単位) (-6)PPPoE ペイロードの長さ (オクテット、自動)。
tagstlv — length オクテットPPPoE ディスカバリ TAG (16 ビット型、16 ビット長)。

code

値名前
0 (0x00)session_data
9 (0x09)padi
7 (0x07)pado
25 (0x19)padr
101 (0x65)pads
167 (0xa7)padt

tags

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x0000)end_of_list
257 (0x0101)service_name
258 (0x0102)ac_name
259 (0x0103)host_uniq
260 (0x0104)ac_cookie
261 (0x0105)vendor_specific
272 (0x0110)relay_session_id
513 (0x0201)service_name_error
514 (0x0202)ac_system_error
515 (0x0203)generic_error

サンプルテンプレート

PPPoE Session (pppoe_session)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype34916 (0x8864)

フィールド

フィールド型既定値Auto説明
versionuint(4)1PPPoE プロトコルバージョン (1)。
typeuint(4)1PPPoE タイプ (1)。
codeuint(8)0PPPoE コード (PADI / PADO / PADR / PADS / PADT、0 = セッションデータ)。
session_iduint(16)1PPPoE セッション識別子。
lengthuint(16)ペイロードの長さ (オクテット単位)PPPoE ペイロードの長さ (オクテット、自動)。

次レイヤ

次レイヤは session_id で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
(その他の値)ppp

サンプルテンプレート

PPP (ppp)

下位レイヤからの到達

下位レイヤ判別フィールド値
pppoe_sessionsession_id(その他の値)

フィールド

フィールド型既定値Auto説明
protocolenum(16)49185 (lcp)次レイヤのプロトコル番号 (「次レイヤ」参照)ペイロードの PPP プロトコル識別子 (LCP / IPCP / IP / IPv6 など)。

protocol

値名前
33 (0x0021)ipv4
35 (0x0023)osi
87 (0x0057)ipv6
32801 (0x8021)ipcp
32855 (0x8057)ipv6cp
49185 (0xc021)lcp
49187 (0xc023)pap
49699 (0xc223)chap

次レイヤ

次レイヤは protocol で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
49185 (0xc021)ppp_lcp
32801 (0x8021)ppp_ipcp
33 (0x0021)ipv4
87 (0x0057)ipv6

protocol = 35 (0x0023) のときのペイロード先頭 8 ビット

値プロトコル
129 (0x81)clnp
130 (0x82)esis
130 (0x82)esis_esh
130 (0x82)esis_ish
130 (0x82)esis_rd
131 (0x83)isis
131 (0x83)isis_l1_lan_hello
131 (0x83)isis_l2_lan_hello
131 (0x83)isis_p2p_hello
131 (0x83)isis_l1_lsp
131 (0x83)isis_l2_lsp
131 (0x83)isis_l1_csnp
131 (0x83)isis_l2_csnp
131 (0x83)isis_l1_psnp
131 (0x83)isis_l2_psnp
(その他の値)osi

サンプルテンプレート

PPP LCP (ppp_lcp)

下位レイヤからの到達

下位レイヤ判別フィールド値
pppprotocol49185 (0xc021)

フィールド

フィールド型既定値Auto説明
codeenum(8)1 (configure_request)PPP コントロールプロトコルのコード (Configure-Request / Ack / Nak など)。
identifieruint(8)0PPP コントロールプロトコルの要求識別子。
lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PPP コントロールプロトコルパケットの長さ (オクテット、自動)。
optionstlv — length - 4 オクテットPPP コントロールプロトコルのオプション (8 ビット型 / 長の TLV)。

code

値名前
1 (0x01)configure_request
2 (0x02)configure_ack
3 (0x03)configure_nak
4 (0x04)configure_reject
5 (0x05)terminate_request
6 (0x06)terminate_ack
7 (0x07)code_reject
8 (0x08)protocol_reject
9 (0x09)echo_request
10 (0x0a)echo_reply
11 (0x0b)discard_request

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)mrumru
2 (0x02)async_control_char_mapmap
3 (0x03)authentication_protocol
4 (0x04)quality_protocol
5 (0x05)magic_numbermagic
7 (0x07)protocol_field_compression
8 (0x08)address_control_compression

options › mru

フィールド型既定値Auto説明
mruuint(16)

options › async_control_char_map

フィールド型既定値Auto説明
mapuint(32)

options › magic_number

フィールド型既定値Auto説明
magicuint(32)

サンプルテンプレート

  • pppoe-ppp-lcp — templates/protocols/l2/pppoe-ppp-lcp.wpg.yaml

PPP IPCP (ppp_ipcp)

下位レイヤからの到達

下位レイヤ判別フィールド値
pppprotocol32801 (0x8021)

フィールド

フィールド型既定値Auto説明
codeenum(8)1 (configure_request)PPP コントロールプロトコルのコード (Configure-Request / Ack / Nak など)。
identifieruint(8)0PPP コントロールプロトコルの要求識別子。
lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PPP コントロールプロトコルパケットの長さ (オクテット、自動)。
optionstlv — length - 4 オクテットPPP コントロールプロトコルのオプション (8 ビット型 / 長の TLV)。

code

値名前
1 (0x01)configure_request
2 (0x02)configure_ack
3 (0x03)configure_nak
4 (0x04)configure_reject
5 (0x05)terminate_request
6 (0x06)terminate_ack
7 (0x07)code_reject

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)ip_compression_protocol
3 (0x03)ip_addressaddress
129 (0x81)primary_dnsaddress
131 (0x83)secondary_dnsaddress

options › ip_address

フィールド型既定値Auto説明
addressipv4

options › primary_dns

フィールド型既定値Auto説明
addressipv4

options › secondary_dns

フィールド型既定値Auto説明
addressipv4

サンプルテンプレート

VXLAN (vxlan)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port4789 (0x12b5)

フィールド

フィールド型既定値Auto説明
flagsflags(8)0x8VXLAN フラグ (I ビット = VNI 有効)。
reserved1uint(24)0
vniuint(24)024 ビット VXLAN ネットワーク識別子。
reserved2uint(8)0

flags

ビットマスク名前
38 (0x08)vni_present

次レイヤ

次レイヤは flags で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
(その他の値)ethernet2

サンプルテンプレート

  • vxlan — templates/protocols/encap/vxlan.wpg.yaml

MPLS (mpls)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype34887 (0x8847)
ethernet2ethertype34888 (0x8848)
udpdst_port / src_port6635 (0x19eb)
greprotocol_type34887 (0x8847)
mplss0

フィールド

フィールド型既定値Auto説明
labelenum(20)1620 ビット MPLS ラベル値。0〜15 は予約 (0 / 2 Explicit Null、1 Router Alert、3 Implicit Null、7 エントロピーラベル指示子、13 GAL、14 OAM Alert、15 拡張)。SR-MPLS の SID は SRGB ベース + SID インデックス。
tcuint(3)03 ビットトラフィッククラス (QoS / ECN)。
suint(1)1次レイヤのプロトコル番号 (「次レイヤ」参照)スタック最下位ビット (1 = 最後のラベル。次レイヤから自動)。
ttluint(8)64MPLS TTL。

label

値名前
0 (0x00000)ipv4_explicit_null
1 (0x00001)router_alert
2 (0x00002)ipv6_explicit_null
3 (0x00003)implicit_null
7 (0x00007)entropy_label_indicator
13 (0x0000d)gal
14 (0x0000e)oam_alert
15 (0x0000f)extension

次レイヤ

次レイヤは s で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0mpls

s = 1 のときのペイロード先頭 4 ビット

値プロトコル
4ipv4
6ipv6

サンプルテンプレート

Geneve (geneve)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port6081 (0x17c1)

フィールド

フィールド型既定値Auto説明
versionuint(2)0Geneve バージョン (0)。
opt_lenuint(6)0オプション領域の長さ (4 オクテット単位)。
o_flaguint(1)0OAM パケットフラグ。
c_flaguint(1)0クリティカルオプション存在フラグ。
reserved_flagsuint(6)0
protocol_typeenum(16)25944 (transparent_ethernet)次レイヤのプロトコル番号 (「次レイヤ」参照)カプセル化ペイロードの EtherType。
vniuint(24)024 ビット Geneve 仮想ネットワーク識別子。
reserveduint(8)0
optionsbytes — opt_len * 4 オクテット""Geneve オプション (不透明、opt_len で長さ決定)。

protocol_type

値名前
25944 (0x6558)transparent_ethernet
2048 (0x0800)ipv4
34525 (0x86dd)ipv6

次レイヤ

次レイヤは protocol_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
25944 (0x6558)ethernet2
2048 (0x0800)ipv4
34525 (0x86dd)ipv6

サンプルテンプレート

  • geneve — templates/protocols/encap/geneve.wpg.yaml

MACsec (macsec)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35045 (0x88e5)
dot1qethertype35045 (0x88e5)

フィールド

フィールド型既定値Auto説明
vuint(1)0TCI の V ビット: バージョン(0)。
esuint(1)0TCI の ES ビット: エンドステーション(SCI は送信元 MAC アドレスとポート 1)。
scuint(1)sci の要素数TCI の SC ビット: 明示的な SCI あり(Auto: SCI を指定すると 1)。
scbuint(1)0TCI の SCB ビット: EPON のシングルコピーブロードキャスト。
euint(1)1TCI の E ビット: セキュアデータは暗号化されている。
cuint(1)1TCI の C ビット: ユーザデータが変更された(既定の暗号スイートでは E と同時に 1)。
anuint(2)0アソシエーション番号(0〜3): チャネル内のセキュアアソシエーション。
reserveduint(2)0
sluint(6)0ショート長: セキュアデータが 48 オクテット未満のときその長さ、それ以外は 0(手動)。
pnuint(32)1パケット番号(32 ビット、XPN では下位半分)。
scilist<struct> — sc 個の要素1 要素Secure Channel Identifier: システム識別子(MAC アドレス)とポート識別子。SC が 1 のときに存在。
secure_databytes — PDU の残りのうち末尾 16 オクテットを除く部分00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2fセキュアデータ: 暗号化(または完全性保護のみ)されたユーザデータを不透明なオクテット列として指定。暗号化は行わない。
icvbytes(16)00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00完全性検査値(16 オクテット)。不透明な値で、計算はしない。

sci

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
system_identifiermac02:00:00:00:00:01
port_identifieruint(16)1

制約

レベル規則
警告v が 0
警告pn が 0 以外

サンプルテンプレート

  • macsec — templates/protocols/l2/macsec.wpg.yaml

ESMC (esmc)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット10 (0x0a)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)10Slow Protocols サブタイプ(0x0a = 組織固有)。
itu_ouiuint(24)6567ITU-T の OUI(00-19-a7)。
itu_subtypeuint(16)1ITU-T サブタイプ(1 = ESMC)。
versionuint(4)1ESMC バージョン(1)。
event_flaguint(1)0イベントフラグ: QL 変化時に即座に送るイベント PDU は 1、毎秒の情報 PDU は 0。
reserveduint(3)0
reserved2uint(24)0
tlvstlv — PDU の残りすべて2 要素TLV(8 ビット型、3 オクテットのヘッダを含む 16 ビット長、自動): SSM コードの QL TLV、拡張 SSM コード・SyncE クロック ID・カスケードクロック数の拡張 QL TLV。後続のオクテット(詰め物)は 1 つの raw 項目として保持。

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプで型付きのデコードを終え、残りを 1 つの生の項目にします。
タイプ値名前値のフィールド説明
1 (0x01)qlunused, ssm_code
2 (0x02)extended_qlenhanced_ssm_code, synce_clock_identity, flags, cascaded_eeecs, cascaded_eecs, reserved

tlvs › ql

フィールド型既定値Auto説明
unuseduint(4)0
ssm_codeenum(4)2 (prc)
tlvs › ql › ssm_code
値名前
0stu
1prs
2prc
4ssu_a
7st2
8ssu_b
10st3
11sec
12smc
13st3e
14prov
15dnu

tlvs › extended_ql

フィールド型既定値Auto説明
enhanced_ssm_codeenum(8)255 (none)
synce_clock_identityuint(64)144116287553929217
flagsflags(8)0x0
cascaded_eeecsuint(8)1
cascaded_eecsuint(8)0
reservedbytes(5)00 00 00 00 00
tlvs › extended_ql › enhanced_ssm_code
値名前
32 (0x20)eprtc
33 (0x21)prtc
34 (0x22)eeec
35 (0x23)eprc
255 (0xff)none
tlvs › extended_ql › flags
ビットマスク名前
01 (0x01)mixed_eec_eeec
12 (0x02)partial_chain

制約

レベル規則
警告subtype が 10
警告itu_oui が 6567
警告version が 1

サンプルテンプレート

  • esmc-event-dnu — templates/protocols/timing/esmc-event-dnu.wpg.yaml
  • esmc-ql-prc — templates/protocols/timing/esmc-ql-prc.wpg.yaml

CFM (cfm)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)3 (lbm)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)4このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
databytes — PDU の残りすべて00 00 00 01 00First TLV Offset 以降の PDU(OpCode 固有フィールドと TLV)をオクテット列で。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

次レイヤ

次レイヤは opcode で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1 (0x01)cfm_ccmこのレイヤを読み直す
2 (0x02)cfm_lbrこのレイヤを読み直す
3 (0x03)cfm_lbmこのレイヤを読み直す
4 (0x04)cfm_ltrこのレイヤを読み直す
5 (0x05)cfm_ltmこのレイヤを読み直す
33 (0x21)cfm_aisこのレイヤを読み直す
35 (0x23)cfm_lckこのレイヤを読み直す
37 (0x25)cfm_tstこのレイヤを読み直す
40 (0x28)cfm_rapsこのレイヤを読み直す
42 (0x2a)cfm_lmrこのレイヤを読み直す
43 (0x2b)cfm_lmmこのレイヤを読み直す
45 (0x2d)cfm_1dmこのレイヤを読み直す
46 (0x2e)cfm_dmrこのレイヤを読み直す
47 (0x2f)cfm_dmmこのレイヤを読み直す
52 (0x34)cfm_csfこのレイヤを読み直す
53 (0x35)cfm_1slこのレイヤを読み直す
54 (0x36)cfm_slrこのレイヤを読み直す
55 (0x37)cfm_slmこのレイヤを読み直す

サンプルテンプレート

  • cfm-generic — templates/protocols/oam/cfm-generic.wpg.yaml

CFM CCM (cfm_ccm)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode1 (0x01) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)1 (ccm)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
rdiuint(1)0RDI: リモート障害表示。
flags_reserveduint(4)0
periodenum(3)4 (s_1)送信周期: 1 = 3.33 ms、2 = 10 ms、3 = 100 ms、4 = 1 秒、5 = 10 秒、6 = 1 分、7 = 10 分。
first_tlv_offsetuint(8)70このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
sequence_numberuint(32)0シーケンス番号。
mep_id_reserveduint(3)0
mep_iduint(13)1MEP ID(1〜8191)。
maidbytes(48)01 20 0d 57 50 47 30 30 31 4d 45 47 30 30 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00MAID / MEG ID(48 オクテット): MD 名の形式と名前、短縮 MA 名の形式・長さ・名前、ゼロ詰め(Y.1731: MD 名なし、形式 32 ICC ベース、長さ 13)。
tx_fcfuint(32)0フレームカウンタ(ロス測定)。
rx_fcbuint(32)0フレームカウンタ(ロス測定)。
tx_fcbuint(32)0フレームカウンタ(ロス測定)。
reserveduint(32)0
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

period

値名前
0invalid
1ms_3_33
2ms_10
3ms_100
4s_1
5s_10
6min_1
7min_10

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 70

サンプルテンプレート

  • cfm-ccm — templates/protocols/oam/cfm-ccm.wpg.yaml

CFM LBM (cfm_lbm)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode3 (0x03) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)3 (lbm)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)4このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
transaction_iduint(32)1ループバック / リンクトレースのトランザクション ID。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 4

サンプルテンプレート

  • cfm-lbm — templates/protocols/oam/cfm-lbm.wpg.yaml

CFM LBR (cfm_lbr)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode2 (0x02) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)2 (lbr)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)4このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
transaction_iduint(32)1ループバック / リンクトレースのトランザクション ID。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 4

サンプルテンプレート

  • cfm-lbr — templates/protocols/oam/cfm-lbr.wpg.yaml

CFM LTM (cfm_ltm)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode5 (0x05) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)5 (ltm)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
use_fdb_onlyuint(1)1UseFDBonly: 転送データベースだけで出力ポートを決める。
flags_reserveduint(7)0
first_tlv_offsetuint(8)17このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
transaction_iduint(32)1ループバック / リンクトレースのトランザクション ID。
ttluint(8)64リンクトレースの TTL。
original_macmac02:00:00:00:00:01リンクトレースを開始した MEP の MAC アドレス。
target_macmac02:00:00:00:00:02リンクトレースの宛先 MAC アドレス。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)2 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 17

サンプルテンプレート

  • cfm-ltm — templates/protocols/oam/cfm-ltm.wpg.yaml

CFM LTR (cfm_ltr)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode4 (0x04) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)4 (ltr)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
use_fdb_onlyuint(1)1UseFDBonly: 転送データベースだけで出力ポートを決める。
fwd_yesuint(1)0FwdYes: LTM を中継した。
terminal_mepuint(1)1TerminalMEP: 応答は宛先 MEP から。
flags_reserveduint(5)0
first_tlv_offsetuint(8)6このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
transaction_iduint(32)1ループバック / リンクトレースのトランザクション ID。
reply_ttluint(8)63リンクトレースの TTL。
relay_actionenum(8)1 (rly_hit)中継動作: 1 RlyHit、2 RlyFDB、3 RlyMPDB。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)3 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

relay_action

値名前
1 (0x01)rly_hit
2 (0x02)rly_fdb
3 (0x03)rly_mpdb

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 6

サンプルテンプレート

  • cfm-ltr — templates/protocols/oam/cfm-ltr.wpg.yaml

Y.1731 AIS (cfm_ais)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode33 (0x21) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)33 (ais)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flags_reserveduint(5)0
periodenum(3)4 (s_1)送信周期: 1 = 3.33 ms、2 = 10 ms、3 = 100 ms、4 = 1 秒、5 = 10 秒、6 = 1 分、7 = 10 分。
first_tlv_offsetuint(8)0このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

period

値名前
0invalid
1ms_3_33
2ms_10
3ms_100
4s_1
5s_10
6min_1
7min_10

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 0

サンプルテンプレート

  • y1731-ais — templates/protocols/oam/y1731-ais.wpg.yaml

Y.1731 LCK (cfm_lck)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode35 (0x23) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)35 (lck)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flags_reserveduint(5)0
periodenum(3)4 (s_1)送信周期: 1 = 3.33 ms、2 = 10 ms、3 = 100 ms、4 = 1 秒、5 = 10 秒、6 = 1 分、7 = 10 分。
first_tlv_offsetuint(8)0このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

period

値名前
0invalid
1ms_3_33
2ms_10
3ms_100
4s_1
5s_10
6min_1
7min_10

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 0

サンプルテンプレート

  • y1731-lck — templates/protocols/oam/y1731-lck.wpg.yaml

Y.1731 TST (cfm_tst)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode37 (0x25) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)37 (tst)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)4このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
sequence_numberuint(32)0シーケンス番号。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)2 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 4

サンプルテンプレート

  • y1731-tst — templates/protocols/oam/y1731-tst.wpg.yaml

ERPS R-APS (cfm_raps)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode40 (0x28) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)1CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)40 (ring_aps)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)32このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
request_stateenum(4)0 (nr)要求 / 状態: 0000 NR、0111 MS、1011 SF、1101 FS、1110 Event。
sub_codeuint(4)0サブコード(Event 要求では 0000 = フラッシュ要求)。
rbuint(1)1RB: RPL がブロック中。
dnfuint(1)0DNF: 転送データベースをフラッシュしない。
bpruint(1)0BPR: ブロック中ポートの参照(0 = リングリンク 0、1 = リングリンク 1)。
status_reserveduint(5)0
node_idmac02:00:00:00:00:01ノード ID: 送信したリングノードの MAC アドレス。
reservedbytes(24)00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

request_state

値名前
0nr
7ms
11sf
13fs
14event

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 32

サンプルテンプレート

Y.1731 LMM (cfm_lmm)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode43 (0x2b) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)43 (lmm)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)12このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
tx_fcfuint(32)0フレームカウンタ(ロス測定)。
rx_fcfuint(32)0フレームカウンタ(ロス測定)。
tx_fcbuint(32)0フレームカウンタ(ロス測定)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 12

サンプルテンプレート

  • y1731-lmm — templates/protocols/oam/y1731-lmm.wpg.yaml

Y.1731 LMR (cfm_lmr)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode42 (0x2a) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)42 (lmr)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)12このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
tx_fcfuint(32)0フレームカウンタ(ロス測定)。
rx_fcfuint(32)0フレームカウンタ(ロス測定)。
tx_fcbuint(32)0フレームカウンタ(ロス測定)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 12

サンプルテンプレート

  • y1731-lmr — templates/protocols/oam/y1731-lmr.wpg.yaml

Y.1731 1DM (cfm_1dm)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode45 (0x2d) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)45 (one_dm)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)16このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
tx_timestamp_f_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tx_timestamp_f_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_f_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_f_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 16

サンプルテンプレート

  • y1731-1dm — templates/protocols/oam/y1731-1dm.wpg.yaml

Y.1731 DMM (cfm_dmm)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode47 (0x2f) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)47 (dmm)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)32このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
tx_timestamp_f_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tx_timestamp_f_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_f_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_f_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tx_timestamp_b_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tx_timestamp_b_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_b_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_b_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 32

サンプルテンプレート

  • y1731-dmm — templates/protocols/oam/y1731-dmm.wpg.yaml

Y.1731 DMR (cfm_dmr)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode46 (0x2e) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)46 (dmr)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)32このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
tx_timestamp_f_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tx_timestamp_f_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_f_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_f_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tx_timestamp_b_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tx_timestamp_b_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_b_secondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
rx_timestamp_b_nanosecondsuint(32)0IEEE 1588 形式のタイムスタンプ(32 ビットの秒とナノ秒)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 32

サンプルテンプレート

  • y1731-dmr — templates/protocols/oam/y1731-dmr.wpg.yaml

Y.1731 CSF (cfm_csf)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode52 (0x34) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)52 (csf)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flags_reserveduint(2)0
typeenum(3)0 (los)クライアント信号障害の種類: 0 LOS、1 FDI / AIS、2 RDI、3 DCI。
periodenum(3)4 (s_1)送信周期: 1 = 3.33 ms、2 = 10 ms、3 = 100 ms、4 = 1 秒、5 = 10 秒、6 = 1 分、7 = 10 分。
first_tlv_offsetuint(8)0このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

type

値名前
0los
1fdi_ais
2rdi
3dci

period

値名前
0invalid
1ms_3_33
2ms_10
3ms_100
4s_1
5s_10
6min_1
7min_10

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 0

サンプルテンプレート

  • y1731-csf — templates/protocols/oam/y1731-csf.wpg.yaml

Y.1731 SLM (cfm_slm)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode55 (0x37) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)55 (slm)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)16このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
source_mep_iduint(16)1送信元 MEP ID。
responder_mep_iduint(16)0応答側 MEP ID(SLM では 0)。
test_iduint(32)1合成ロス測定のテスト ID。
tx_fcfuint(32)0フレームカウンタ(ロス測定)。
tx_fcbuint(32)0フレームカウンタ(ロス測定)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 16

サンプルテンプレート

  • y1731-slm — templates/protocols/oam/y1731-slm.wpg.yaml

Y.1731 SLR (cfm_slr)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode54 (0x36) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)54 (slr)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)16このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
source_mep_iduint(16)1送信元 MEP ID。
responder_mep_iduint(16)0応答側 MEP ID(SLM では 0)。
test_iduint(32)1合成ロス測定のテスト ID。
tx_fcfuint(32)0フレームカウンタ(ロス測定)。
tx_fcbuint(32)0フレームカウンタ(ロス測定)。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 16

サンプルテンプレート

  • y1731-slr — templates/protocols/oam/y1731-slr.wpg.yaml

Y.1731 1SL (cfm_1sl)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35074 (0x8902)
dot1qethertype35074 (0x8902)
dot1adethertype35074 (0x8902)
cfmopcode53 (0x35) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
md_leveluint(3)0メンテナンスドメイン / MEG レベル(0〜7)。
versionuint(5)0CFM バージョン(0。G.8032v2 の R-APS は 1)。
opcodeenum(8)53 (one_sl)OpCode: 1 CCM、2 LBR、3 LBM、4 LTR、5 LTM、33 AIS、35 LCK、37 TST、39 Linear APS、40 R-APS、41 MCC、42 LMR、43 LMM、45 1DM、46 DMR、47 DMM、52 CSF、53 1SL、54 SLR、55 SLM など。
flagsuint(8)0フラグ(OpCode ごとに異なる)。
first_tlv_offsetuint(8)16このフィールドの直後から最初の TLV までのオフセット(OpCode ごとに一定)。
source_mep_iduint(16)1送信元 MEP ID。
reserveduint(16)0
test_iduint(32)1合成ロス測定のテスト ID。
tx_fcfuint(32)0フレームカウンタ(ロス測定)。
reserved2uint(32)0
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)1 要素TLV(8 ビット型、値の 16 ビット長、自動): Sender ID、Port Status、Data、Interface Status、Reply Ingress / Egress、LTM / LTR Egress Identifier、Organization-Specific、Test。End TLV(タイプ 0)で終わる。

opcode

値名前
1 (0x01)ccm
2 (0x02)lbr
3 (0x03)lbm
4 (0x04)ltr
5 (0x05)ltm
33 (0x21)ais
35 (0x23)lck
37 (0x25)tst
39 (0x27)linear_aps
40 (0x28)ring_aps
41 (0x29)mcc
42 (0x2a)lmr
43 (0x2b)lmm
45 (0x2d)one_dm
46 (0x2e)dmr
47 (0x2f)dmm
48 (0x30)exr
49 (0x31)exm
50 (0x32)vsr
51 (0x33)vsm
52 (0x34)csf
53 (0x35)one_sl
54 (0x36)slr
55 (0x37)slm

tlvs

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)sender_idchassis_id_length, chassis_id_subtype, chassis_id, management_address
2 (0x02)port_statusport_status
3 (0x03)data_tlvvalue
4 (0x04)interface_statusinterface_status
5 (0x05)reply_ingressingress_action, ingress_mac, ingress_port_id
6 (0x06)reply_egressegress_action, egress_mac, egress_port_id
7 (0x07)ltm_egress_identifieregress_identifier
8 (0x08)ltr_egress_identifierlast_egress_identifier, next_egress_identifier
31 (0x1f)organization_specificoui, subtype, value
32 (0x20)testpattern_type, test_pattern

tlvs › sender_id

フィールド型既定値Auto説明
chassis_id_lengthuint(8)chassis_id のオクテット長
chassis_id_subtypeenum(8)4 (mac_address)
chassis_idbytes — chassis_id_length オクテット02 00 00 00 00 01
management_addressbytes — PDU の残りすべて
tlvs › sender_id › chassis_id_subtype
値名前
1 (0x01)chassis_component
2 (0x02)interface_alias
3 (0x03)port_component
4 (0x04)mac_address
5 (0x05)network_address
6 (0x06)interface_name
7 (0x07)local

tlvs › port_status

フィールド型既定値Auto説明
port_statusenum(8)2 (up)
tlvs › port_status › port_status
値名前
1 (0x01)blocked
2 (0x02)up

tlvs › data_tlv

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

tlvs › interface_status

フィールド型既定値Auto説明
interface_statusenum(8)1 (up)
tlvs › interface_status › interface_status
値名前
1 (0x01)up
2 (0x02)down
3 (0x03)testing
4 (0x04)unknown
5 (0x05)dormant
6 (0x06)not_present
7 (0x07)lower_layer_down

tlvs › reply_ingress

フィールド型既定値Auto説明
ingress_actionenum(8)1 (ok)
ingress_macmac02:00:00:00:00:02
ingress_port_idbytes — PDU の残りすべて
tlvs › reply_ingress › ingress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › reply_egress

フィールド型既定値Auto説明
egress_actionenum(8)1 (ok)
egress_macmac02:00:00:00:00:02
egress_port_idbytes — PDU の残りすべて
tlvs › reply_egress › egress_action
値名前
1 (0x01)ok
2 (0x02)down
3 (0x03)blocked
4 (0x04)vid

tlvs › ltm_egress_identifier

フィールド型既定値Auto説明
egress_identifieruint(64)2199023255553

tlvs › ltr_egress_identifier

フィールド型既定値Auto説明
last_egress_identifieruint(64)2199023255553
next_egress_identifieruint(64)2199023255554

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
subtypeuint(8)
valuebytes — PDU の残りすべて

tlvs › test

フィールド型既定値Auto説明
pattern_typeenum(8)
test_patternbytes — PDU の残りすべて
tlvs › test › pattern_type
値名前
0 (0x00)null_without_crc
1 (0x01)null_with_crc
2 (0x02)prbs_without_crc
3 (0x03)prbs_with_crc

制約

レベル規則
警告first_tlv_offset が 16

サンプルテンプレート

  • y1731-1sl — templates/protocols/oam/y1731-1sl.wpg.yaml

802.3ah OAM (efm_oam)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット3 (0x03)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)3Slow Protocols サブタイプ(3 = OAM)。
flagsflags(16)0x50フラグ: リンク障害、Dying Gasp、重大イベント、ローカル / リモートの評価中・安定。
codeenum(8)0 (information)OAMPDU コード: 0x00 Information、0x01 Event Notification、0x02 Variable Request、0x03 Variable Response、0x04 Loopback Control、0xfe Organization Specific。
databytes — PDU の残りすべて""OAMPDU の残りをオクテット列で。

flags

ビットマスク名前
01 (0x0001)link_fault
12 (0x0002)dying_gasp
24 (0x0004)critical_event
38 (0x0008)local_evaluating
416 (0x0010)local_stable
532 (0x0020)remote_evaluating
664 (0x0040)remote_stable

code

値名前
0 (0x00)information
1 (0x01)event_notification
2 (0x02)variable_request
3 (0x03)variable_response
4 (0x04)loopback_control
254 (0xfe)organization_specific

次レイヤ

次レイヤは code で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0 (0x00)efm_oam_informationこのレイヤを読み直す
1 (0x01)efm_oam_event_notificationこのレイヤを読み直す
2 (0x02)efm_oam_variable_requestこのレイヤを読み直す
3 (0x03)efm_oam_variable_responseこのレイヤを読み直す
4 (0x04)efm_oam_loopback_controlこのレイヤを読み直す
254 (0xfe)efm_oam_organization_specificこのレイヤを読み直す

サンプルテンプレート

802.3ah OAM Information (efm_oam_information)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット3 (0x03)
efm_oamcode0 (0x00) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)3Slow Protocols サブタイプ(3 = OAM)。
flagsflags(16)0x50フラグ: リンク障害、Dying Gasp、重大イベント、ローカル / リモートの評価中・安定。
codeenum(8)0 (information)OAMPDU コード: 0x00 Information、0x01 Event Notification、0x02 Variable Request、0x03 Variable Response、0x04 Loopback Control、0xfe Organization Specific。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)2 要素Information TLV(8 ビット型、ヘッダを含む 8 ビット長、自動): Local / Remote Information、Organization Specific。End TLV(タイプ 0)で終わる。

flags

ビットマスク名前
01 (0x0001)link_fault
12 (0x0002)dying_gasp
24 (0x0004)critical_event
38 (0x0008)local_evaluating
416 (0x0010)local_stable
532 (0x0020)remote_evaluating
664 (0x0040)remote_stable

code

値名前
0 (0x00)information
1 (0x01)event_notification
2 (0x02)variable_request
3 (0x03)variable_response
4 (0x04)loopback_control
254 (0xfe)organization_specific

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)local_informationoam_version, revision, state_reserved, multiplexer_action, parser_action, oam_configuration, oampdu_configuration_reserved, max_oampdu_size, oui, vendor_specific_information
2 (0x02)remote_informationoam_version, revision, state_reserved, multiplexer_action, parser_action, oam_configuration, oampdu_configuration_reserved, max_oampdu_size, oui, vendor_specific_information
254 (0xfe)organization_specificoui, value

tlvs › local_information

フィールド型既定値Auto説明
oam_versionuint(8)1
revisionuint(16)0
state_reserveduint(5)0
multiplexer_actionenum(1)0 (forward)
parser_actionenum(2)0 (forward)
oam_configurationflags(8)0x9
oampdu_configuration_reserveduint(5)0
max_oampdu_sizeuint(11)1518
ouiuint(24)0
vendor_specific_informationuint(32)0
tlvs › local_information › multiplexer_action
値名前
0forward
1discard
tlvs › local_information › parser_action
値名前
0forward
1loopback
2discard
tlvs › local_information › oam_configuration
ビットマスク名前
01 (0x01)active_mode
12 (0x02)unidirectional
24 (0x04)remote_loopback
38 (0x08)link_events
416 (0x10)variable_retrieval

tlvs › remote_information

フィールド型既定値Auto説明
oam_versionuint(8)1
revisionuint(16)0
state_reserveduint(5)0
multiplexer_actionenum(1)0 (forward)
parser_actionenum(2)0 (forward)
oam_configurationflags(8)0x9
oampdu_configuration_reserveduint(5)0
max_oampdu_sizeuint(11)1518
ouiuint(24)0
vendor_specific_informationuint(32)0
tlvs › remote_information › multiplexer_action
値名前
0forward
1discard
tlvs › remote_information › parser_action
値名前
0forward
1loopback
2discard
tlvs › remote_information › oam_configuration
ビットマスク名前
01 (0x01)active_mode
12 (0x02)unidirectional
24 (0x04)remote_loopback
38 (0x08)link_events
416 (0x10)variable_retrieval

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
valuebytes — PDU の残りすべて

サンプルテンプレート

802.3ah OAM Event Notification (efm_oam_event_notification)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット3 (0x03)
efm_oamcode1 (0x01) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)3Slow Protocols サブタイプ(3 = OAM)。
flagsflags(16)0x50フラグ: リンク障害、Dying Gasp、重大イベント、ローカル / リモートの評価中・安定。
codeenum(8)1 (event_notification)OAMPDU コード: 0x00 Information、0x01 Event Notification、0x02 Variable Request、0x03 Variable Response、0x04 Loopback Control、0xfe Organization Specific。
sequence_numberuint(16)1イベント通知のシーケンス番号。
tlvstlv — タイプ 0 の最初の項目まで (なければ PDU の終わりまで)2 要素リンクイベント TLV(8 ビット型、ヘッダを含む 8 ビット長、自動): Errored Symbol Period、Errored Frame、Errored Frame Period、Errored Frame Seconds Summary、Organization Specific。End TLV(タイプ 0)で終わる。

flags

ビットマスク名前
01 (0x0001)link_fault
12 (0x0002)dying_gasp
24 (0x0004)critical_event
38 (0x0008)local_evaluating
416 (0x0010)local_stable
532 (0x0020)remote_evaluating
664 (0x0040)remote_stable

code

値名前
0 (0x00)information
1 (0x01)event_notification
2 (0x02)variable_request
3 (0x03)variable_response
4 (0x04)loopback_control
254 (0xfe)organization_specific

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)end(タイプのみ。長さと値なし)
1 (0x01)errored_symbol_periodtimestamp, window, threshold, errors, error_running_total, event_running_total
2 (0x02)errored_frametimestamp, window, threshold, errors, error_running_total, event_running_total
3 (0x03)errored_frame_periodtimestamp, window, threshold, errors, error_running_total, event_running_total
4 (0x04)errored_frame_seconds_summarytimestamp, window, threshold, errors, error_running_total, event_running_total
254 (0xfe)organization_specificoui, value

tlvs › errored_symbol_period

フィールド型既定値Auto説明
timestampuint(16)0
windowuint(64)10
thresholduint(64)1
errorsuint(64)1
error_running_totaluint(64)1
event_running_totaluint(32)1

tlvs › errored_frame

フィールド型既定値Auto説明
timestampuint(16)0
windowuint(16)10
thresholduint(32)1
errorsuint(32)1
error_running_totaluint(64)1
event_running_totaluint(32)1

tlvs › errored_frame_period

フィールド型既定値Auto説明
timestampuint(16)0
windowuint(32)10
thresholduint(32)1
errorsuint(32)1
error_running_totaluint(64)1
event_running_totaluint(32)1

tlvs › errored_frame_seconds_summary

フィールド型既定値Auto説明
timestampuint(16)0
windowuint(16)10
thresholduint(16)1
errorsuint(16)1
error_running_totaluint(32)1
event_running_totaluint(32)1

tlvs › organization_specific

フィールド型既定値Auto説明
ouiuint(24)
valuebytes — PDU の残りすべて

サンプルテンプレート

  • efm-oam-event — templates/protocols/oam/efm-oam-event.wpg.yaml

802.3ah OAM Variable Request (efm_oam_variable_request)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット3 (0x03)
efm_oamcode2 (0x02) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)3Slow Protocols サブタイプ(3 = OAM)。
flagsflags(16)0x50フラグ: リンク障害、Dying Gasp、重大イベント、ローカル / リモートの評価中・安定。
codeenum(8)2 (variable_request)OAMPDU コード: 0x00 Information、0x01 Event Notification、0x02 Variable Request、0x03 Variable Response、0x04 Loopback Control、0xfe Organization Specific。
variable_descriptorsbytes — PDU の残りすべて07 00 02 00変数記述子のオクテット列: それぞれブランチ(1 オクテット)とリーフ(2 オクテット)、0 のブランチで終わる。

flags

ビットマスク名前
01 (0x0001)link_fault
12 (0x0002)dying_gasp
24 (0x0004)critical_event
38 (0x0008)local_evaluating
416 (0x0010)local_stable
532 (0x0020)remote_evaluating
664 (0x0040)remote_stable

code

値名前
0 (0x00)information
1 (0x01)event_notification
2 (0x02)variable_request
3 (0x03)variable_response
4 (0x04)loopback_control
254 (0xfe)organization_specific

サンプルテンプレート

802.3ah OAM Variable Response (efm_oam_variable_response)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット3 (0x03)
efm_oamcode3 (0x03) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)3Slow Protocols サブタイプ(3 = OAM)。
flagsflags(16)0x50フラグ: リンク障害、Dying Gasp、重大イベント、ローカル / リモートの評価中・安定。
codeenum(8)3 (variable_response)OAMPDU コード: 0x00 Information、0x01 Event Notification、0x02 Variable Request、0x03 Variable Response、0x04 Loopback Control、0xfe Organization Specific。
variable_containersbytes — PDU の残りすべて07 00 02 04 00 00 00 2a 00変数コンテナのオクテット列: それぞれブランチ・リーフ・幅・値、0 のブランチで終わる。

flags

ビットマスク名前
01 (0x0001)link_fault
12 (0x0002)dying_gasp
24 (0x0004)critical_event
38 (0x0008)local_evaluating
416 (0x0010)local_stable
532 (0x0020)remote_evaluating
664 (0x0040)remote_stable

code

値名前
0 (0x00)information
1 (0x01)event_notification
2 (0x02)variable_request
3 (0x03)variable_response
4 (0x04)loopback_control
254 (0xfe)organization_specific

サンプルテンプレート

802.3ah OAM Loopback Control (efm_oam_loopback_control)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット3 (0x03)
efm_oamcode4 (0x04) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)3Slow Protocols サブタイプ(3 = OAM)。
flagsflags(16)0x50フラグ: リンク障害、Dying Gasp、重大イベント、ローカル / リモートの評価中・安定。
codeenum(8)4 (loopback_control)OAMPDU コード: 0x00 Information、0x01 Event Notification、0x02 Variable Request、0x03 Variable Response、0x04 Loopback Control、0xfe Organization Specific。
remote_loopback_commandenum(8)1 (enable)リモートループバックコマンド: 1 有効化、2 無効化。

flags

ビットマスク名前
01 (0x0001)link_fault
12 (0x0002)dying_gasp
24 (0x0004)critical_event
38 (0x0008)local_evaluating
416 (0x0010)local_stable
532 (0x0020)remote_evaluating
664 (0x0040)remote_stable

code

値名前
0 (0x00)information
1 (0x01)event_notification
2 (0x02)variable_request
3 (0x03)variable_response
4 (0x04)loopback_control
254 (0xfe)organization_specific

remote_loopback_command

値名前
1 (0x01)enable
2 (0x02)disable

サンプルテンプレート

802.3ah OAM Organization Specific (efm_oam_organization_specific)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype = 34825 (0x8809) のときのペイロード先頭 8 ビット3 (0x03)
efm_oamcode254 (0xfe) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
subtypeuint(8)3Slow Protocols サブタイプ(3 = OAM)。
flagsflags(16)0x50フラグ: リンク障害、Dying Gasp、重大イベント、ローカル / リモートの評価中・安定。
codeenum(8)254 (organization_specific)OAMPDU コード: 0x00 Information、0x01 Event Notification、0x02 Variable Request、0x03 Variable Response、0x04 Loopback Control、0xfe Organization Specific。
ouiuint(24)0組織固有識別子(OUI)。
databytes — PDU の残りすべて""OAMPDU の残りをオクテット列で。

flags

ビットマスク名前
01 (0x0001)link_fault
12 (0x0002)dying_gasp
24 (0x0004)critical_event
38 (0x0008)local_evaluating
416 (0x0010)local_stable
532 (0x0020)remote_evaluating
664 (0x0040)remote_stable

code

値名前
0 (0x00)information
1 (0x01)event_notification
2 (0x02)variable_request
3 (0x03)variable_response
4 (0x04)loopback_control
254 (0xfe)organization_specific

サンプルテンプレート

IPv4 (ipv4)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype2048 (0x0800)
dot1qethertype2048 (0x0800)
dot1adethertype2048 (0x0800)
snappid2048 (0x0800)
ipv4protocol4 (0x04)
ipv6next_header4 (0x04)
ipv6_hopoptsnext_header4 (0x04)
ipv6_routenext_header4 (0x04)
ipv6_srhnext_header4 (0x04)
ipv6_fragnext_header4 (0x04)
ipv6_dstoptsnext_header4 (0x04)
pppprotocol33 (0x0021)
greprotocol_type2048 (0x0800)
mplss = 1 のときのペイロード先頭 4 ビット4
gtpumessage_type = 255 (0xff) のときのペイロード先頭 4 ビット4
geneveprotocol_type2048 (0x0800)
pim_registertype = 1 のときのペイロード先頭 4 ビット4

フィールド

フィールド型既定値Auto説明
versionuint(4)4IP バージョン。常に 4。
ihluint(4)ヘッダの長さ (32 ビットワード単位)ヘッダ長 (32 ビット語単位、5〜15。Auto、オプションを含む)。
dscpuint(6)0DSCP (QoS クラス、0〜63)。
ecnuint(2)0明示的輻輳通知 (0 = 非 ECT、1 / 2 = ECT、3 = CE)。
total_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダとペイロードの合計長 (バイト、Auto)。
identificationuint(16)0同じデータグラムのフラグメントで共通の識別子。
flagsflags(3)0x0フラグ: DF (分割禁止) と MF (後続フラグメントあり)。最上位ビットは予約。
frag_offsetuint(13)0このフラグメントのオフセット (8 バイト単位)。
ttluint(8)64生存時間。ルータごとに減算され、0 は送信されない。
protocolenum(8)253 (experimental)次レイヤのプロトコル番号 (「次レイヤ」参照)次レイヤのプロトコル番号 (Auto。次レイヤ不明時は 253 = 実験用)。
header_checksumuint(16)ヘッダに対するインターネットチェックサムヘッダのインターネットチェックサム (Auto)。
srcipv4192.0.2.1送信元 IPv4 アドレス。
dstipv4192.0.2.2宛先 IPv4 アドレス。
optionstlv — ihl * 4 - 20 オクテットIPv4 オプション (TLV: EOL、NOP、セキュリティ、経路記録、タイムスタンプなど)。
paddingpadding(4)オプションを 32 ビット境界に揃えるゼロパディング (Auto)。

flags

ビットマスク名前
24reserved
12df
01mf

protocol

値名前
1 (0x01)icmp
2 (0x02)igmp
4 (0x04)ipip
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
46 (0x2e)rsvp
47 (0x2f)gre
50 (0x32)esp
51 (0x33)ah
58 (0x3a)ipv6_icmp
88 (0x58)eigrp
89 (0x59)ospf
103 (0x67)pim
112 (0x70)vrrp
115 (0x73)l2tp
132 (0x84)sctp
253 (0xfd)experimental

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)eol(タイプのみ。長さと値なし)
1 (0x01)nop(タイプのみ。長さと値なし)
148 (0x94)router_alertvalue

options › router_alert

フィールド型既定値Auto説明
valueuint(16)

次レイヤ

次レイヤは protocol で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1 (0x01)icmpv4
2 (0x02)igmp
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
46 (0x2e)rsvp
47 (0x2f)gre
88 (0x58)eigrp
89 (0x59)ospfv2
103 (0x67)pim
103 (0x67)pim_register
112 (0x70)vrrpv3
112 (0x70)vrrpv2
115 (0x73)l2tpv3
132 (0x84)sctp

制約

レベル規則
警告version が 4
エラーihl が 5..15 の範囲
警告ttl が 0 以外

サンプルテンプレート

IPv6 (ipv6)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype34525 (0x86dd)
dot1qethertype34525 (0x86dd)
dot1adethertype34525 (0x86dd)
snappid34525 (0x86dd)
ipv4protocol41 (0x29)
ipv6next_header41 (0x29)
ipv6_hopoptsnext_header41 (0x29)
ipv6_routenext_header41 (0x29)
ipv6_srhnext_header41 (0x29)
ipv6_fragnext_header41 (0x29)
ipv6_dstoptsnext_header41 (0x29)
pppprotocol87 (0x0057)
greprotocol_type34525 (0x86dd)
mplss = 1 のときのペイロード先頭 4 ビット6
gtpumessage_type = 255 (0xff) のときのペイロード先頭 4 ビット6
geneveprotocol_type34525 (0x86dd)
pim_registertype = 1 のときのペイロード先頭 4 ビット6

フィールド

フィールド型既定値Auto説明
versionuint(4)6IP バージョン。常に 6。
dscpuint(6)0DSCP (QoS クラス、0〜63)。
ecnuint(2)0明示的輻輳通知 (0 = 非 ECT、1 / 2 = ECT、3 = CE)。
flow_labeluint(20)0フローラベル (20 ビット)。ルータがフローを識別する。0 = なし。
payload_lengthuint(16)ペイロードの長さ (オクテット単位)このヘッダ以降の長さ (拡張ヘッダを含む、Auto)。
next_headerenum(8)253 (experimental)次レイヤのプロトコル番号 (「次レイヤ」参照)次ヘッダのプロトコル番号 (Auto。次レイヤ不明時は 253 = 実験用)。
hop_limituint(8)64ホップリミット。ルータごとに減算され、0 は送信されない。
srcipv62001:db8::1送信元 IPv6 アドレス。
dstipv62001:db8::2宛先 IPv6 アドレス。

next_header

値名前
0 (0x00)hop_by_hop
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
43 (0x2b)routing
44 (0x2c)fragment
46 (0x2e)rsvp
50 (0x32)esp
51 (0x33)ah
58 (0x3a)icmpv6
59 (0x3b)no_next_header
60 (0x3c)destination_options
88 (0x58)eigrp
89 (0x59)ospf
112 (0x70)vrrp
132 (0x84)sctp
143 (0x8f)ethernet
253 (0xfd)experimental

次レイヤ

次レイヤは next_header で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0 (0x00)ipv6_hopopts
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
43 (0x2b)ipv6_route
44 (0x2c)ipv6_frag
46 (0x2e)rsvp
47 (0x2f)gre
58 (0x3a)icmpv6
60 (0x3c)ipv6_dstopts
88 (0x58)eigrp
89 (0x59)ospfv3
112 (0x70)vrrpv3_ipv6
115 (0x73)l2tpv3
132 (0x84)sctp
143 (0x8f)ethernet2

next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット

値プロトコル
4 (0x04)ipv6_srh
(その他の値)ipv6_route

制約

レベル規則
警告version が 6
警告hop_limit が 0 以外

サンプルテンプレート

IPv6 Hop-by-Hop Options (ipv6_hopopts)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header0 (0x00)
ipv6_hopoptsnext_header0 (0x00)
ipv6_routenext_header0 (0x00)
ipv6_srhnext_header0 (0x00)
ipv6_fragnext_header0 (0x00)
ipv6_dstoptsnext_header0 (0x00)

フィールド

フィールド型既定値Auto説明
next_headeruint(8)253次レイヤのプロトコル番号 (「次レイヤ」参照)この拡張ヘッダに続くヘッダのプロトコル番号 (Auto)。
hdr_ext_lenuint(8)ヘッダの長さ (64 ビットワード単位) (-1)この拡張ヘッダの長さ (8 バイト単位、先頭 8 バイトを除く。Auto)。
optionsbytes — hdr_ext_len * 8 + 6 オクテット01 04 00 00 00 00生の TLV オプション (8 バイトの倍数にパディング)。
paddingpadding(8)拡張ヘッダを 8 バイトの倍数に揃えるゼロパディング (Pad1、Auto)。

次レイヤ

次レイヤは next_header で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0 (0x00)ipv6_hopopts
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
43 (0x2b)ipv6_route
44 (0x2c)ipv6_frag
46 (0x2e)rsvp
47 (0x2f)gre
58 (0x3a)icmpv6
60 (0x3c)ipv6_dstopts
88 (0x58)eigrp
89 (0x59)ospfv3
112 (0x70)vrrpv3_ipv6
115 (0x73)l2tpv3
132 (0x84)sctp
143 (0x8f)ethernet2

next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット

値プロトコル
4 (0x04)ipv6_srh
(その他の値)ipv6_route

サンプルテンプレート

IPv6 Routing (ipv6_route)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header43 (0x2b)
ipv6next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット(その他の値)
ipv6_hopoptsnext_header43 (0x2b)
ipv6_hopoptsnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット(その他の値)
ipv6_routenext_header43 (0x2b)
ipv6_routenext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット(その他の値)
ipv6_srhnext_header43 (0x2b)
ipv6_srhnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット(その他の値)
ipv6_fragnext_header43 (0x2b)
ipv6_fragnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット(その他の値)
ipv6_dstoptsnext_header43 (0x2b)
ipv6_dstoptsnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット(その他の値)

フィールド

フィールド型既定値Auto説明
next_headeruint(8)253次レイヤのプロトコル番号 (「次レイヤ」参照)この拡張ヘッダに続くヘッダのプロトコル番号 (Auto)。
hdr_ext_lenuint(8)ヘッダの長さ (64 ビットワード単位) (-1)この拡張ヘッダの長さ (8 バイト単位、先頭 8 バイトを除く。Auto)。
routing_typeenum(8)2 (mobile_ipv6)ルーティングヘッダ種別 (例: 2 = Mobile IPv6、4 = SRH)。
segments_leftuint(8)1残りのルートセグメント数。
databytes — hdr_ext_len * 8 + 4 オクテット00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00ルーティングタイプ固有のデータ。
paddingpadding(8)拡張ヘッダを 8 バイトの倍数に揃えるゼロパディング (Pad1、Auto)。

routing_type

値名前
0 (0x00)source_route_deprecated
2 (0x02)mobile_ipv6
3 (0x03)rpl
4 (0x04)segment_routing

次レイヤ

次レイヤは next_header で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0 (0x00)ipv6_hopopts
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
43 (0x2b)ipv6_route
44 (0x2c)ipv6_frag
46 (0x2e)rsvp
47 (0x2f)gre
58 (0x3a)icmpv6
60 (0x3c)ipv6_dstopts
88 (0x58)eigrp
89 (0x59)ospfv3
112 (0x70)vrrpv3_ipv6
115 (0x73)l2tpv3
132 (0x84)sctp
143 (0x8f)ethernet2

next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット

値プロトコル
4 (0x04)ipv6_srh
(その他の値)ipv6_route

制約

レベル規則
警告routing_type が 0 以外

サンプルテンプレート

IPv6 Segment Routing Header (ipv6_srh)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 最終宛先: segments_left が 0 でない間は、segment_list の要素 0 が下位レイヤの疑似ヘッダの宛先アドレスを置き換えます (RFC 8200 §8.1)
  • 補足: SRv6 SRH / SR-MPLS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_hopoptsnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_routenext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_srhnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_fragnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_dstoptsnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)

フィールド

フィールド型既定値Auto説明
next_headeruint(8)253次レイヤのプロトコル番号 (「次レイヤ」参照)この拡張ヘッダに続くヘッダのプロトコル番号 (Auto)。
hdr_ext_lenuint(8)ヘッダの長さ (64 ビットワード単位) (-1)この拡張ヘッダの長さ (8 バイト単位、先頭 8 バイトを除く。Auto)。
routing_typeenum(8)4 (segment_routing)ルーティングヘッダ種別 (例: 2 = Mobile IPv6、4 = SRH)。
segments_leftuint(8)1Segments Left: 次に向かうセグメントのセグメントリスト上の位置。最後のセグメントで 0。
last_entryuint(8)segment_list の要素数 (-1)Last Entry: セグメントリスト最後の要素の位置 (= セグメント数 - 1、Auto)。
flagsuint(8)0フラグ (RFC 8754 では未定義。0)。
taguint(16)0Tag: パケットをクラスやグループで分類するための値 (0 = 未使用)。
segment_listlist<ipv6> — last_entry * 16 + 16 オクテット2 要素セグメントリスト (SID) を経路の逆順で: 要素 0 が最後のセグメント、最後の要素が最初のセグメント。Segments Left が 0 でない間は、上位層チェックサムの宛先に要素 0 を使用。
tlvstlv — グループ先頭から hdr_ext_len * 8 + 8 オクテットまで省略可能な TLV (8 ビット型、8 ビット長): Pad1、PadN、HMAC (HMAC 値は手動)。ヘッダは Pad1 で 8 オクテットの倍数まで自動で詰める。
paddingpadding(8)拡張ヘッダを 8 バイトの倍数に揃えるゼロパディング (Pad1、Auto)。

routing_type

値名前
4 (0x04)segment_routing

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)pad1(タイプのみ。長さと値なし)
4 (0x04)padnpadding
5 (0x05)hmacd, reserved, hmac_key_id, hmac

tlvs › padn

フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて

tlvs › hmac

フィールド型既定値Auto説明
duint(1)0
reserveduint(15)0
hmac_key_iduint(32)1
hmacbytes — PDU の残りすべて00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

次レイヤ

次レイヤは next_header で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0 (0x00)ipv6_hopopts
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
43 (0x2b)ipv6_route
44 (0x2c)ipv6_frag
46 (0x2e)rsvp
47 (0x2f)gre
58 (0x3a)icmpv6
60 (0x3c)ipv6_dstopts
88 (0x58)eigrp
89 (0x59)ospfv3
112 (0x70)vrrpv3_ipv6
115 (0x73)l2tpv3
132 (0x84)sctp
143 (0x8f)ethernet2

next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット

値プロトコル
4 (0x04)ipv6_srh
(その他の値)ipv6_route

制約

レベル規則
警告routing_type が 4

サンプルテンプレート

IPv6 Fragment (ipv6_frag)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 8 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header44 (0x2c)
ipv6_hopoptsnext_header44 (0x2c)
ipv6_routenext_header44 (0x2c)
ipv6_srhnext_header44 (0x2c)
ipv6_fragnext_header44 (0x2c)
ipv6_dstoptsnext_header44 (0x2c)

フィールド

フィールド型既定値Auto説明
next_headeruint(8)253次レイヤのプロトコル番号 (「次レイヤ」参照)この拡張ヘッダに続くヘッダのプロトコル番号 (Auto)。
reserveduint(8)0予約。0。
fragment_offsetuint(13)0このフラグメントのオフセット (8 バイト単位)。
resuint(2)0予約。0。
muint(1)0MF フラグ (1 = 後続のフラグメントあり)。
identificationuint(32)0同じパケットのフラグメントで共通の識別子。

次レイヤ

次レイヤは next_header で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0 (0x00)ipv6_hopopts
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
43 (0x2b)ipv6_route
44 (0x2c)ipv6_frag
46 (0x2e)rsvp
47 (0x2f)gre
58 (0x3a)icmpv6
60 (0x3c)ipv6_dstopts
88 (0x58)eigrp
89 (0x59)ospfv3
112 (0x70)vrrpv3_ipv6
115 (0x73)l2tpv3
132 (0x84)sctp
143 (0x8f)ethernet2

next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット

値プロトコル
4 (0x04)ipv6_srh
(その他の値)ipv6_route

サンプルテンプレート

IPv6 Destination Options (ipv6_dstopts)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header60 (0x3c)
ipv6_hopoptsnext_header60 (0x3c)
ipv6_routenext_header60 (0x3c)
ipv6_srhnext_header60 (0x3c)
ipv6_fragnext_header60 (0x3c)
ipv6_dstoptsnext_header60 (0x3c)

フィールド

フィールド型既定値Auto説明
next_headeruint(8)253次レイヤのプロトコル番号 (「次レイヤ」参照)この拡張ヘッダに続くヘッダのプロトコル番号 (Auto)。
hdr_ext_lenuint(8)ヘッダの長さ (64 ビットワード単位) (-1)この拡張ヘッダの長さ (8 バイト単位、先頭 8 バイトを除く。Auto)。
optionsbytes — hdr_ext_len * 8 + 6 オクテット01 04 00 00 00 00生の TLV オプション (8 バイトの倍数にパディング)。
paddingpadding(8)拡張ヘッダを 8 バイトの倍数に揃えるゼロパディング (Pad1、Auto)。

次レイヤ

次レイヤは next_header で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0 (0x00)ipv6_hopopts
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
43 (0x2b)ipv6_route
44 (0x2c)ipv6_frag
46 (0x2e)rsvp
47 (0x2f)gre
58 (0x3a)icmpv6
60 (0x3c)ipv6_dstopts
88 (0x58)eigrp
89 (0x59)ospfv3
112 (0x70)vrrpv3_ipv6
115 (0x73)l2tpv3
132 (0x84)sctp
143 (0x8f)ethernet2

next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット

値プロトコル
4 (0x04)ipv6_srh
(その他の値)ipv6_route

サンプルテンプレート

ICMPv4 (icmpv4)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 8 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol1 (0x01)

フィールド

フィールド型既定値Auto説明
typeenum(8)8 (echo_request)メッセージ種別。
codeuint(8)0メッセージコード (意味は種別による)。
checksumuint(16)ヘッダとそれ以降すべてに対するインターネットチェックサムヘッダとペイロードのインターネットチェックサム (Auto)。
restbytes(4)00 00 00 00種別ごとに意味が異なる 4 バイトのヘッダ残り部分。

type

値名前
0 (0x00)echo_reply
3 (0x03)destination_unreachable
4 (0x04)source_quench
5 (0x05)redirect
8 (0x08)echo_request
9 (0x09)router_advertisement
10 (0x0a)router_solicitation
11 (0x0b)time_exceeded
12 (0x0c)parameter_problem
13 (0x0d)timestamp_request
14 (0x0e)timestamp_reply
15 (0x0f)information_request
16 (0x10)information_reply
17 (0x11)address_mask_request
18 (0x12)address_mask_reply
42 (0x2a)extended_echo_request
43 (0x2b)extended_echo_reply

制約

レベル規則
警告type が 0..43 の範囲

サンプルテンプレート

ICMPv6 (icmpv6)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header58 (0x3a)
ipv6_hopoptsnext_header58 (0x3a)
ipv6_routenext_header58 (0x3a)
ipv6_srhnext_header58 (0x3a)
ipv6_fragnext_header58 (0x3a)
ipv6_dstoptsnext_header58 (0x3a)

フィールド

フィールド型既定値Auto説明
typeenum(8)128 (echo_request)次レイヤのプロトコル番号 (「次レイヤ」参照)メッセージ種別。
codeuint(8)0メッセージコード (意味は種別による)。
checksumuint(16)ヘッダとそれ以降すべてに対する疑似ヘッダ付きインターネットチェックサムIPv6 擬似ヘッダを含むヘッダとペイロードのインターネットチェックサム (Auto)。

type

値名前
1 (0x01)destination_unreachable
2 (0x02)packet_too_big
3 (0x03)time_exceeded
4 (0x04)parameter_problem
128 (0x80)echo_request
129 (0x81)echo_reply
130 (0x82)mld_query
131 (0x83)mld_report
132 (0x84)mld_done
133 (0x85)router_solicitation
134 (0x86)router_advertisement
135 (0x87)neighbor_solicitation
136 (0x88)neighbor_advertisement
137 (0x89)redirect
143 (0x8f)mldv2_report

次レイヤ

次レイヤは type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
130 (0x82)mldv2_query残り 24 オクテット以上
128 (0x80)icmpv6_echo
129 (0x81)icmpv6_echo
130 (0x82)mld
131 (0x83)mld
132 (0x84)mld
143 (0x8f)mldv2_report
133 (0x85)ndp_rs
134 (0x86)ndp_ra
135 (0x87)ndp_ns
136 (0x88)ndp_na
137 (0x89)ndp_redirect

制約

レベル規則
警告type が 1..255 の範囲

サンプルテンプレート

ICMPv6 Echo (icmpv6_echo)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 4 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type128 (0x80)
icmpv6type129 (0x81)

フィールド

フィールド型既定値Auto説明
identifieruint(16)0エコー要求と応答を対応付ける識別子。
sequenceuint(16)0エコー要求と応答を対応付けるシーケンス番号。

サンプルテンプレート

NDP Router Solicitation (ndp_rs)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type133 (0x85)

フィールド

フィールド型既定値Auto説明
reserveduint(32)0予約。0。
optionsbytes — PDU の残りすべて生の NDP オプション (TLV)。

サンプルテンプレート

NDP Router Advertisement (ndp_ra)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type134 (0x86)

フィールド

フィールド型既定値Auto説明
cur_hop_limituint(8)64ホストが使うべきホップリミット (0 = 未指定)。
muint(1)0管理アドレス設定フラグ (M)。
ouint(1)0その他設定フラグ (O)。
reserveduint(6)0予約。0。
router_lifetimeuint(16)1800デフォルトルータとしての生存時間 (秒。0 = デフォルトルータではない)。
reachable_timeuint(32)0到達可能時間 (ミリ秒。0 = 未指定)。
retrans_timeruint(32)0再送タイマ (ミリ秒。0 = 未指定)。
optionsbytes — PDU の残りすべて生の NDP オプション (TLV)。

サンプルテンプレート

NDP Neighbor Solicitation (ndp_ns)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type135 (0x87)

フィールド

フィールド型既定値Auto説明
reserveduint(32)0予約。0。
targetipv6fe80::1ターゲットアドレス。
optionsbytes — PDU の残りすべて生の NDP オプション (TLV)。

サンプルテンプレート

NDP Neighbor Advertisement (ndp_na)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type136 (0x88)

フィールド

フィールド型既定値Auto説明
ruint(1)0ルータフラグ (R)。
suint(1)1要請応答フラグ (S)。
ouint(1)1上書きフラグ (O)。
reserveduint(29)0予約。0。
targetipv6fe80::1ターゲットアドレス。
optionsbytes — PDU の残りすべて生の NDP オプション (TLV)。

サンプルテンプレート

NDP Redirect (ndp_redirect)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type137 (0x89)

フィールド

フィールド型既定値Auto説明
reserveduint(32)0予約。0。
targetipv6fe80::1ターゲットアドレス。
destinationipv62001:db8::1リダイレクト先の宛先アドレス。
optionsbytes — PDU の残りすべて生の NDP オプション (TLV)。

サンプルテンプレート

  • ndp-redirect — templates/protocols/l3/ndp-redirect.wpg.yaml

GRE (gre)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol47 (0x2f)
ipv6next_header47 (0x2f)
ipv6_hopoptsnext_header47 (0x2f)
ipv6_routenext_header47 (0x2f)
ipv6_srhnext_header47 (0x2f)
ipv6_fragnext_header47 (0x2f)
ipv6_dstoptsnext_header47 (0x2f)

フィールド

フィールド型既定値Auto説明
flagsflags(16)0x0GRE フラグとバージョン (checksum / key / sequence の存在ビット)。
protocol_typeenum(16)2048 (ipv4)次レイヤのプロトコル番号 (「次レイヤ」参照)カプセル化ペイロードの EtherType。

flags

ビットマスク名前
1532768 (0x8000)checksum_present
138192 (0x2000)key_present
124096 (0x1000)sequence_present

protocol_type

値名前
2048 (0x0800)ipv4
34525 (0x86dd)ipv6
25944 (0x6558)transparent_ethernet
34887 (0x8847)mpls

次レイヤ

次レイヤは protocol_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2048 (0x0800)ipv4
34525 (0x86dd)ipv6
25944 (0x6558)ethernet2
34887 (0x8847)mpls

サンプルテンプレート

  • gre-ipv4 — templates/protocols/encap/gre-ipv4.wpg.yaml

NVGRE (nvgre)

下位レイヤからの到達

カタログ内にこのプロトコルへ至る下位レイヤはありません。先頭レイヤとして使うか、明示的に積んでください。

フィールド

フィールド型既定値Auto説明
flagsflags(16)0x2000GRE フラグとバージョン (checksum / key / sequence の存在ビット)。
protocol_typeenum(16)25944 (transparent_ethernet)カプセル化ペイロードの EtherType。
vsiduint(24)024 ビット NVGRE 仮想サブネット ID。
flow_iduint(8)0NVGRE FlowID (負荷分散用エントロピー)。

flags

ビットマスク名前
1532768 (0x8000)checksum_present
138192 (0x2000)key_present
124096 (0x1000)sequence_present

protocol_type

値名前
25944 (0x6558)transparent_ethernet

次レイヤ

次レイヤは protocol_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
25944 (0x6558)ethernet2

サンプルテンプレート

  • nvgre — templates/protocols/encap/nvgre.wpg.yaml

OSPFv2 (ospfv2)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol89 (0x59)

フィールド

フィールド型既定値Auto説明
versionuint(8)2OSPF バージョン (2 = OSPFv2、3 = OSPFv3)。
typeenum(8)1 (hello)次レイヤのプロトコル番号 (「次レイヤ」参照)OSPF パケットタイプ (Hello / DB Description / LS Request / LS Update / LS Ack。次レイヤから自動)。
packet_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダを含む OSPF パケット長 (オクテット、自動)。
router_idipv4192.0.2.1送信ルータのルータ ID。
area_idipv40.0.0.0パケットが属するエリア (0.0.0.0 = バックボーン)。
checksumuint(16)ヘッダとそれ以降すべてに対するインターネットチェックサム; authentication は 0 として計算認証フィールドを除いた OSPF パケットのインターネットチェックサム (自動)。
au_typeenum(16)0 (null)認証タイプ (0 = なし、1 = 平文パスワード、2 = 暗号認証)。
authenticationbytes(8)00 00 00 00 00 00 00 0064 ビットの認証フィールド (パスワード、または暗号認証のキー ID / シーケンス)。

type

値名前
1 (0x01)hello
2 (0x02)db_description
3 (0x03)ls_request
4 (0x04)ls_update
5 (0x05)ls_ack

au_type

値名前
0 (0x0000)null
1 (0x0001)simple_password
2 (0x0002)cryptographic

次レイヤ

次レイヤは type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1 (0x01)ospfv2_hello
2 (0x02)ospfv2_dbd
3 (0x03)ospfv2_lsr
4 (0x04)ospfv2_lsu
5 (0x05)ospfv2_lsack

制約

レベル規則
警告version が 2

サンプルテンプレート

OSPFv2 Hello (ospfv2_hello)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2type1 (0x01)

フィールド

フィールド型既定値Auto説明
network_maskipv4255.255.255.0インタフェースまたは広告ネットワークのネットマスク。
hello_intervaluint(16)10Hello パケットの送信間隔 (秒)。
optionsflags(8)0x2オプション機能 (E、MC、N/P、L、DC、O、DN ビット)。
router_priorityuint(8)1DR 選出のルータ優先度 (0 = DR にならない)。
router_dead_intervaluint(32)40Hello が途絶えてから隣接ルータをダウンと判断するまでの秒数。
designated_routeripv40.0.0.0代表ルータ DR (0.0.0.0 = なし)。
backup_designated_routeripv40.0.0.0バックアップ代表ルータ BDR (0.0.0.0 = なし)。
neighborslist<ipv4> — PDU の残りすべてリンク上で認識している隣接ルータのルータ ID。

options

ビットマスク名前
01 (0x01)mt
12 (0x02)e
24 (0x04)mc
38 (0x08)np
416 (0x10)l
532 (0x20)dc
664 (0x40)o
7128 (0x80)dn

サンプルテンプレート

OSPFv2 DBD (ospfv2_dbd)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2type2 (0x02)

フィールド

フィールド型既定値Auto説明
interface_mtuuint(16)1500フラグメントなしで送信できる最大 IP データグラム長。
optionsflags(8)0x2オプション機能 (E、MC、N/P、L、DC、O、DN ビット)。
flagsflags(8)0x7Database Description フラグ (I = 初期、M = 続きあり、MS = マスタ)。
dd_sequenceuint(32)1Database Description シーケンス番号。
lsa_headerslist<struct> — PDU の残りすべてLSA ヘッダ (各 20 オクテット。チェックサムと長さは手動)。

options

ビットマスク名前
01 (0x01)mt
12 (0x02)e
24 (0x04)mc
38 (0x08)np
416 (0x10)l
532 (0x20)dc
664 (0x40)o
7128 (0x80)dn

flags

ビットマスク名前
24 (0x04)init
12 (0x02)more
01 (0x01)master

lsa_headers

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
ls_ageuint(16)
optionsuint(8)
ls_typeuint(8)
link_state_idipv4
advertising_routeripv4
ls_sequenceuint(32)
ls_checksumuint(16)
lengthuint(16)

サンプルテンプレート

  • ospfv2-dbd — templates/protocols/routing/ospfv2-dbd.wpg.yaml

OSPFv2 LSR (ospfv2_lsr)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2type3 (0x03)

フィールド

フィールド型既定値Auto説明
requestslist<struct> — PDU の残りすべて要求する LSA (LS タイプ、リンクステート ID、広告ルータ)。

requests

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
ls_typeuint(32)
link_state_idipv4
advertising_routeripv4

サンプルテンプレート

  • ospfv2-lsr — templates/protocols/routing/ospfv2-lsr.wpg.yaml

OSPFv2 LSU (ospfv2_lsu)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 4 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2type4 (0x04)

フィールド

フィールド型既定値Auto説明
num_lsasuint(32)1アップデートに含まれる LSA の数。

次レイヤ

次レイヤは num_lsas で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
(その他の値)ospfv2_lsa

サンプルテンプレート

OSPFv2 LSAck (ospfv2_lsack)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2type5 (0x05)

フィールド

フィールド型既定値Auto説明
lsa_headerslist<struct> — PDU の残りすべてLSA ヘッダ (各 20 オクテット。チェックサムと長さは手動)。

lsa_headers

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
ls_ageuint(16)
optionsuint(8)
ls_typeuint(8)
link_state_idipv4
advertising_routeripv4
ls_sequenceuint(32)
ls_checksumuint(16)
lengthuint(16)

サンプルテンプレート

  • ospfv2-lsack — templates/protocols/routing/ospfv2-lsack.wpg.yaml

OSPFv2 LSA (ospfv2_lsa)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_lsunum_lsas(その他の値)

フィールド

フィールド型既定値Auto説明
ls_ageuint(16)0LSA 生成からの経過秒数 (自動チェックサムを正確にするには 0 のまま)。
optionsflags(8)0x2オプション機能 (E、MC、N/P、L、DC、O、DN ビット)。
ls_typeenum(8)1 (router)次レイヤのプロトコル番号 (「次レイヤ」参照)LSA タイプ (LSA 本体レイヤから自動。9 / 10 / 11 = Opaque LSA)。
link_state_idipv4192.0.2.1記述対象を識別するリンクステート ID。
advertising_routeripv4192.0.2.1LSA を生成したルータのルータ ID。
ls_sequenceuint(32)2147483649LSA シーケンス番号 (0x80000001 = 初期値)。
ls_checksumuint(16)ヘッダとそれ以降すべてに対するFletcher チェックサム; ls_age は 0 として計算LS age を除いた LSA の Fletcher チェックサム (自動)。
lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダを含む LSA 長 (オクテット、自動)。

options

ビットマスク名前
01 (0x01)mt
12 (0x02)e
24 (0x04)mc
38 (0x08)np
416 (0x10)l
532 (0x20)dc
664 (0x40)o
7128 (0x80)dn

ls_type

値名前
1 (0x01)router
2 (0x02)network
3 (0x03)summary_network
4 (0x04)summary_asbr
5 (0x05)as_external
7 (0x07)nssa_external
9 (0x09)link_local_opaque
10 (0x0a)area_opaque
11 (0x0b)as_opaque

次レイヤ

次レイヤは ls_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1 (0x01)ospfv2_router_lsa
2 (0x02)ospfv2_network_lsa
3 (0x03)ospfv2_summary_lsa
4 (0x04)ospfv2_summary_lsa
5 (0x05)ospfv2_external_lsa
7 (0x07)ospfv2_external_lsa
9 (0x09) – 11 (0x0b)ospfv2_opaque_lsaこのレイヤを読み直す

サンプルテンプレート

OSPFv2 Router-LSA (ospfv2_router_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_lsals_type1 (0x01)

フィールド

フィールド型既定値Auto説明
flagsflags(8)0x0Router-LSA フラグ (V = 仮想リンク端点、E = ASBR、B = ABR)。
reserveduint(8)0
num_linksuint(16)links の要素数記述するルータリンクの数。
linkslist<struct> — PDU の残りすべて1 要素ルータリンク (リンク ID、リンクデータ、タイプ、TOS 数、メトリック)。

flags

ビットマスク名前
24 (0x04)v
12 (0x02)e
01 (0x01)b

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
link_idipv4
link_dataipv4
typeenum(8)
num_tosuint(8)
metricuint(16)
値名前
1 (0x01)point_to_point
2 (0x02)transit
3 (0x03)stub
4 (0x04)virtual_link

サンプルテンプレート

OSPFv2 Network-LSA (ospfv2_network_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_lsals_type2 (0x02)

フィールド

フィールド型既定値Auto説明
network_maskipv4255.255.255.0インタフェースまたは広告ネットワークのネットマスク。
attached_routerslist<ipv4> — PDU の残りすべてネットワークに接続しているルータのルータ ID。

サンプルテンプレート

OSPFv2 Summary-LSA (ospfv2_summary_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 8 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_lsals_type3 (0x03)
ospfv2_lsals_type4 (0x04)

フィールド

フィールド型既定値Auto説明
network_maskipv4255.255.255.0インタフェースまたは広告ネットワークのネットマスク。
reserveduint(8)0
metricuint(24)10経路のコスト。

サンプルテンプレート

OSPFv2 AS-External-LSA (ospfv2_external_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 16 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_lsals_type5 (0x05)
ospfv2_lsals_type7 (0x07)

フィールド

フィールド型既定値Auto説明
network_maskipv4255.255.255.0インタフェースまたは広告ネットワークのネットマスク。
e_bituint(1)1外部メトリックタイプ (1 = タイプ 2、0 = タイプ 1)。
reserveduint(7)0
metricuint(24)20経路のコスト。
forwarding_addressipv40.0.0.0宛先へのトラフィックの転送先アドレス (0.0.0.0 = ASBR 自身)。
external_route_taguint(32)0外部経路に付く 32 ビットのタグ。

サンプルテンプレート

OSPFv2 Opaque LSA (ospfv2_opaque_lsa)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_lsals_type9 (0x09) – 11 (0x0b) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
ls_ageuint(16)0LSA 生成からの経過秒数 (自動チェックサムを正確にするには 0 のまま)。
optionsflags(8)0x42オプション機能 (E、MC、N/P、L、DC、O、DN ビット)。
ls_typeenum(8)10 (area_opaque)Opaque LSA のフラッディング範囲 (9 = リンクローカル、10 = エリア、11 = AS)。
opaque_typeenum(8)4 (router_information)次レイヤのプロトコル番号 (「次レイヤ」参照)Opaque タイプ (1 = TE、4 = Router Information、7 = Extended Prefix、8 = Extended Link。本体レイヤから自動)。
opaque_iduint(24)0同じ Opaque タイプの LSA を区別する Opaque ID (24 ビット)。
advertising_routeripv4192.0.2.1LSA を生成したルータのルータ ID。
ls_sequenceuint(32)2147483649LSA シーケンス番号 (0x80000001 = 初期値)。
ls_checksumuint(16)ヘッダとそれ以降すべてに対するFletcher チェックサム; ls_age は 0 として計算LS age を除いた LSA の Fletcher チェックサム (自動)。
lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダを含む LSA 長 (オクテット、自動)。

options

ビットマスク名前
01 (0x01)mt
12 (0x02)e
24 (0x04)mc
38 (0x08)np
416 (0x10)l
532 (0x20)dc
664 (0x40)o
7128 (0x80)dn

ls_type

値名前
9 (0x09)link_local_opaque
10 (0x0a)area_opaque
11 (0x0b)as_opaque

opaque_type

値名前
1 (0x01)traffic_engineering
4 (0x04)router_information
7 (0x07)extended_prefix
8 (0x08)extended_link

次レイヤ

次レイヤは opaque_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1 (0x01)ospfv2_te_lsa
4 (0x04)ospfv2_ri_lsa
7 (0x07)ospfv2_ext_prefix_lsa
8 (0x08)ospfv2_ext_link_lsa

制約

レベル規則
警告ls_type が 9..11 の範囲

サンプルテンプレート

OSPFv2 TE LSA (ospfv2_te_lsa)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_opaque_lsaopaque_type1 (0x01)

フィールド

フィールド型既定値Auto説明
tlvstlv — PDU の残りすべて1 要素Opaque LSA の TLV (16 ビットのタイプと長さ、値は 4 オクテット境界まで詰め物。長さは自動)。

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)router_addressaddress
2 (0x0002)linksub_tlvs

tlvs › router_address

フィールド型既定値Auto説明
addressipv4
フィールド型既定値Auto説明
sub_tlvstlv — PDU の残りすべて
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)link_typelink_type
2 (0x0002)link_idlink_id
3 (0x0003)local_addressaddresses
4 (0x0004)remote_addressaddresses
5 (0x0005)te_metricmetric
6 (0x0006)max_bandwidthbandwidth
7 (0x0007)max_reservable_bandwidthbandwidth
8 (0x0008)unreserved_bandwidthbandwidths
9 (0x0009)admin_groupgroups
フィールド型既定値Auto説明
link_typeenum(8)

tlvs › link › sub_tlvs › link_type › link_type

値名前
1 (0x01)point_to_point
2 (0x02)multi_access
フィールド型既定値Auto説明
link_idipv4
フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて
フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて
フィールド型既定値Auto説明
metricuint(32)
フィールド型既定値Auto説明
bandwidthuint(32)
フィールド型既定値Auto説明
bandwidthuint(32)
フィールド型既定値Auto説明
bandwidthslist<uint(32)> — PDU の残りすべて
フィールド型既定値Auto説明
groupsuint(32)

サンプルテンプレート

OSPFv2 Router Information LSA (ospfv2_ri_lsa)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_opaque_lsaopaque_type4 (0x04)

フィールド

フィールド型既定値Auto説明
tlvstlv — PDU の残りすべて4 要素Opaque LSA の TLV (16 ビットのタイプと長さ、値は 4 オクテット境界まで詰め物。長さは自動)。

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)informational_capabilitiescapabilities
2 (0x0002)functional_capabilitiescapabilities
7 (0x0007)hostnamehostname
8 (0x0008)sr_algorithmalgorithms
9 (0x0009)sid_label_rangerange_size, reserved, sub_tlvs
14 (0x000e)sr_local_blockrange_size, reserved, sub_tlvs
15 (0x000f)srms_preferencepreference, reserved

tlvs › informational_capabilities

フィールド型既定値Auto説明
capabilitiesflags(32)
tlvs › informational_capabilities › capabilities
ビットマスク名前
312147483648 (0x80000000)graceful_restart
301073741824 (0x40000000)graceful_restart_helper
29536870912 (0x20000000)stub_router
28268435456 (0x10000000)traffic_engineering
27134217728 (0x08000000)p2p_over_lan
2667108864 (0x04000000)experimental_te

tlvs › functional_capabilities

フィールド型既定値Auto説明
capabilitiesuint(32)

tlvs › hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › sr_algorithm

フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

tlvs › sid_label_range

フィールド型既定値Auto説明
range_sizeuint(24)
reserveduint(8)
sub_tlvstlv — PDU の残りすべて
tlvs › sid_label_range › sub_tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)sid_labellabel; 値が 3 オクテットのとき
1 (0x0001)sid_label_indexindex; 値が 4 オクテットのとき
tlvs › sid_label_range › sub_tlvs › sid_label
フィールド型既定値Auto説明
labeluint(24)
tlvs › sid_label_range › sub_tlvs › sid_label_index
フィールド型既定値Auto説明
indexuint(32)

tlvs › sr_local_block

フィールド型既定値Auto説明
range_sizeuint(24)
reserveduint(8)
sub_tlvstlv — PDU の残りすべて
tlvs › sr_local_block › sub_tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)sid_labellabel; 値が 3 オクテットのとき
1 (0x0001)sid_label_indexindex; 値が 4 オクテットのとき
tlvs › sr_local_block › sub_tlvs › sid_label
フィールド型既定値Auto説明
labeluint(24)
tlvs › sr_local_block › sub_tlvs › sid_label_index
フィールド型既定値Auto説明
indexuint(32)

tlvs › srms_preference

フィールド型既定値Auto説明
preferenceuint(8)
reserveduint(24)

サンプルテンプレート

OSPFv2 Extended Prefix LSA (ospfv2_ext_prefix_lsa)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_opaque_lsaopaque_type7 (0x07)

フィールド

フィールド型既定値Auto説明
tlvstlv — PDU の残りすべて1 要素Opaque LSA の TLV (16 ビットのタイプと長さ、値は 4 オクテット境界まで詰め物。長さは自動)。

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)extended_prefixroute_type, prefix_length, address_family, flags, prefix, sub_tlvs
2 (0x0002)extended_prefix_rangeprefix_length, address_family, range_size, flags, reserved, prefix, sub_tlvs

tlvs › extended_prefix

フィールド型既定値Auto説明
route_typeenum(8)
prefix_lengthuint(8)
address_familyuint(8)
flagsflags(8)
prefixipv4
sub_tlvstlv — PDU の残りすべて
tlvs › extended_prefix › route_type
値名前
0 (0x00)unspecified
1 (0x01)intra_area
3 (0x03)inter_area
5 (0x05)as_external
7 (0x07)nssa_external
tlvs › extended_prefix › flags
ビットマスク名前
7128 (0x80)a
664 (0x40)n
tlvs › extended_prefix › sub_tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x0002)prefix_sid_labelflags, reserved, mt_id, algorithm, label; 値が 7 オクテットのとき
2 (0x0002)prefix_sidflags, reserved, mt_id, algorithm, index; 値が 8 オクテットのとき
tlvs › extended_prefix › sub_tlvs › prefix_sid_label
フィールド型既定値Auto説明
flagsflags(8)
reserveduint(8)
mt_iduint(8)
algorithmuint(8)
labeluint(24)

tlvs › extended_prefix › sub_tlvs › prefix_sid_label › flags

ビットマスク名前
664 (0x40)np
532 (0x20)m
416 (0x10)e
38 (0x08)v
24 (0x04)l
tlvs › extended_prefix › sub_tlvs › prefix_sid
フィールド型既定値Auto説明
flagsflags(8)
reserveduint(8)
mt_iduint(8)
algorithmuint(8)
indexuint(32)

tlvs › extended_prefix › sub_tlvs › prefix_sid › flags

ビットマスク名前
664 (0x40)np
532 (0x20)m
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_prefix_range

フィールド型既定値Auto説明
prefix_lengthuint(8)
address_familyuint(8)
range_sizeuint(16)
flagsflags(8)
reserveduint(24)
prefixipv4
sub_tlvstlv — PDU の残りすべて
tlvs › extended_prefix_range › flags
ビットマスク名前
7128 (0x80)ia
tlvs › extended_prefix_range › sub_tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x0002)prefix_sid_labelflags, reserved, mt_id, algorithm, label; 値が 7 オクテットのとき
2 (0x0002)prefix_sidflags, reserved, mt_id, algorithm, index; 値が 8 オクテットのとき
tlvs › extended_prefix_range › sub_tlvs › prefix_sid_label
フィールド型既定値Auto説明
flagsflags(8)
reserveduint(8)
mt_iduint(8)
algorithmuint(8)
labeluint(24)

tlvs › extended_prefix_range › sub_tlvs › prefix_sid_label › flags

ビットマスク名前
664 (0x40)np
532 (0x20)m
416 (0x10)e
38 (0x08)v
24 (0x04)l
tlvs › extended_prefix_range › sub_tlvs › prefix_sid
フィールド型既定値Auto説明
flagsflags(8)
reserveduint(8)
mt_iduint(8)
algorithmuint(8)
indexuint(32)

tlvs › extended_prefix_range › sub_tlvs › prefix_sid › flags

ビットマスク名前
664 (0x40)np
532 (0x20)m
416 (0x10)e
38 (0x08)v
24 (0x04)l

サンプルテンプレート

OSPFv2 Extended Link LSA (ospfv2_ext_link_lsa)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv2_opaque_lsaopaque_type8 (0x08)

フィールド

フィールド型既定値Auto説明
tlvstlv — PDU の残りすべて1 要素Opaque LSA の TLV (16 ビットのタイプと長さ、値は 4 オクテット境界まで詰め物。長さは自動)。

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)extended_linklink_type, reserved, link_id, link_data, sub_tlvs
フィールド型既定値Auto説明
link_typeenum(8)
reserveduint(24)
link_idipv4
link_dataipv4
sub_tlvstlv — PDU の残りすべて
値名前
1 (0x01)point_to_point
2 (0x02)transit
3 (0x03)stub
4 (0x04)virtual
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x0002)adj_sidflags, reserved, mt_id, weight, label; 値が 7 オクテットのとき
2 (0x0002)adj_sid_indexflags, reserved, mt_id, weight, index; 値が 8 オクテットのとき
3 (0x0003)lan_adj_sidflags, reserved, mt_id, weight, neighbor_id, label; 値が 11 オクテットのとき
3 (0x0003)lan_adj_sid_indexflags, reserved, mt_id, weight, neighbor_id, index; 値が 12 オクテットのとき
フィールド型既定値Auto説明
flagsflags(8)
reserveduint(8)
mt_iduint(8)
weightuint(8)
labeluint(24)

tlvs › extended_link › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)b
664 (0x40)v
532 (0x20)l
416 (0x10)g
38 (0x08)p
フィールド型既定値Auto説明
flagsflags(8)
reserveduint(8)
mt_iduint(8)
weightuint(8)
indexuint(32)

tlvs › extended_link › sub_tlvs › adj_sid_index › flags

ビットマスク名前
7128 (0x80)b
664 (0x40)v
532 (0x20)l
416 (0x10)g
38 (0x08)p
フィールド型既定値Auto説明
flagsflags(8)
reserveduint(8)
mt_iduint(8)
weightuint(8)
neighbor_idipv4
labeluint(24)

tlvs › extended_link › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)b
664 (0x40)v
532 (0x20)l
416 (0x10)g
38 (0x08)p
フィールド型既定値Auto説明
flagsflags(8)
reserveduint(8)
mt_iduint(8)
weightuint(8)
neighbor_idipv4
indexuint(32)

tlvs › extended_link › sub_tlvs › lan_adj_sid_index › flags

ビットマスク名前
7128 (0x80)b
664 (0x40)v
532 (0x20)l
416 (0x10)g
38 (0x08)p

サンプルテンプレート

OSPFv3 (ospfv3)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header89 (0x59)
ipv6_hopoptsnext_header89 (0x59)
ipv6_routenext_header89 (0x59)
ipv6_srhnext_header89 (0x59)
ipv6_fragnext_header89 (0x59)
ipv6_dstoptsnext_header89 (0x59)

フィールド

フィールド型既定値Auto説明
versionuint(8)3OSPF バージョン (2 = OSPFv2、3 = OSPFv3)。
typeenum(8)1 (hello)次レイヤのプロトコル番号 (「次レイヤ」参照)OSPF パケットタイプ (Hello / DB Description / LS Request / LS Update / LS Ack。次レイヤから自動)。
packet_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダを含む OSPF パケット長 (オクテット、自動)。
router_idipv4192.0.2.1送信ルータのルータ ID。
area_idipv40.0.0.0パケットが属するエリア (0.0.0.0 = バックボーン)。
checksumuint(16)ヘッダとそれ以降すべてに対する疑似ヘッダ付きインターネットチェックサムIPv6 疑似ヘッダを含む OSPFv3 パケットのインターネットチェックサム (自動)。
instance_iduint(8)0インスタンス ID (同一リンク上の OSPFv3 インスタンスを区別)。
reserveduint(8)0

type

値名前
1 (0x01)hello
2 (0x02)db_description
3 (0x03)ls_request
4 (0x04)ls_update
5 (0x05)ls_ack

次レイヤ

次レイヤは type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1 (0x01)ospfv3_hello
2 (0x02)ospfv3_dbd
3 (0x03)ospfv3_lsr
4 (0x04)ospfv3_lsu
5 (0x05)ospfv3_lsack

制約

レベル規則
警告version が 3

サンプルテンプレート

OSPFv3 Hello (ospfv3_hello)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3type1 (0x01)

フィールド

フィールド型既定値Auto説明
interface_iduint(32)1送信インタフェースのインタフェース ID。
router_priorityuint(8)1DR 選出のルータ優先度 (0 = DR にならない)。
optionsflags(24)0x13OSPFv3 オプション (V6、E、N、R、DC、AF ビット)。
hello_intervaluint(16)10Hello パケットの送信間隔 (秒)。
router_dead_intervaluint(16)40Hello が途絶えてから隣接ルータをダウンと判断するまでの秒数。
designated_routeripv40.0.0.0代表ルータ DR (0.0.0.0 = なし)。
backup_designated_routeripv40.0.0.0バックアップ代表ルータ BDR (0.0.0.0 = なし)。
neighborslist<ipv4> — PDU の残りすべてリンク上で認識している隣接ルータのルータ ID。

options

ビットマスク名前
01 (0x000001)v6
12 (0x000002)e
38 (0x000008)n
416 (0x000010)r
532 (0x000020)dc
8256 (0x000100)af

サンプルテンプレート

  • ospfv3-hello — templates/protocols/routing/ospfv3-hello.wpg.yaml

OSPFv3 DBD (ospfv3_dbd)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3type2 (0x02)

フィールド

フィールド型既定値Auto説明
reserved1uint(8)0
optionsflags(24)0x13OSPFv3 オプション (V6、E、N、R、DC、AF ビット)。
interface_mtuuint(16)1500フラグメントなしで送信できる最大 IP データグラム長。
reserved2uint(8)0
flagsflags(8)0x7Database Description フラグ (I = 初期、M = 続きあり、MS = マスタ)。
dd_sequenceuint(32)1Database Description シーケンス番号。
lsa_headerslist<struct> — PDU の残りすべてLSA ヘッダ (各 20 オクテット。チェックサムと長さは手動)。

options

ビットマスク名前
01 (0x000001)v6
12 (0x000002)e
38 (0x000008)n
416 (0x000010)r
532 (0x000020)dc
8256 (0x000100)af

flags

ビットマスク名前
24 (0x04)init
12 (0x02)more
01 (0x01)master

lsa_headers

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
ls_ageuint(16)
ls_typeuint(16)
link_state_iduint(32)
advertising_routeripv4
ls_sequenceuint(32)
ls_checksumuint(16)
lengthuint(16)

サンプルテンプレート

  • ospfv3-dbd — templates/protocols/routing/ospfv3-dbd.wpg.yaml

OSPFv3 LSR (ospfv3_lsr)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3type3 (0x03)

フィールド

フィールド型既定値Auto説明
requestslist<struct> — PDU の残りすべて要求する LSA (LS タイプ、リンクステート ID、広告ルータ)。

requests

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
reserveduint(16)
ls_typeuint(16)
link_state_iduint(32)
advertising_routeripv4

サンプルテンプレート

  • ospfv3-lsr — templates/protocols/routing/ospfv3-lsr.wpg.yaml

OSPFv3 LSU (ospfv3_lsu)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3type4 (0x04)

フィールド

フィールド型既定値Auto説明
num_lsasuint(32)1アップデートに含まれる LSA の数。

次レイヤ

次レイヤは num_lsas で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
(その他の値)ospfv3_lsa

サンプルテンプレート

OSPFv3 LSAck (ospfv3_lsack)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3type5 (0x05)

フィールド

フィールド型既定値Auto説明
lsa_headerslist<struct> — PDU の残りすべてLSA ヘッダ (各 20 オクテット。チェックサムと長さは手動)。

lsa_headers

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
ls_ageuint(16)
ls_typeuint(16)
link_state_iduint(32)
advertising_routeripv4
ls_sequenceuint(32)
ls_checksumuint(16)
lengthuint(16)

サンプルテンプレート

  • ospfv3-lsack — templates/protocols/routing/ospfv3-lsack.wpg.yaml

OSPFv3 LSA (ospfv3_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 20 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3_lsunum_lsas(その他の値)

フィールド

フィールド型既定値Auto説明
ls_ageuint(16)0LSA 生成からの経過秒数 (自動チェックサムを正確にするには 0 のまま)。
ls_typeenum(16)8193 (router)次レイヤのプロトコル番号 (「次レイヤ」参照)U / S スコープビット付きの LSA 機能コード (LSA 本体レイヤから自動)。
link_state_iduint(32)0記述対象を識別するリンクステート ID。
advertising_routeripv4192.0.2.1LSA を生成したルータのルータ ID。
ls_sequenceuint(32)2147483649LSA シーケンス番号 (0x80000001 = 初期値)。
ls_checksumuint(16)ヘッダとそれ以降すべてに対するFletcher チェックサム; ls_age は 0 として計算LS age を除いた LSA の Fletcher チェックサム (自動)。
lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダを含む LSA 長 (オクテット、自動)。

ls_type

値名前
8193 (0x2001)router
8194 (0x2002)network
8195 (0x2003)inter_area_prefix
8196 (0x2004)inter_area_router
16389 (0x4005)as_external
8199 (0x2007)nssa
8 (0x0008)link
8201 (0x2009)intra_area_prefix

次レイヤ

次レイヤは ls_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
8193 (0x2001)ospfv3_router_lsa
8194 (0x2002)ospfv3_network_lsa
8195 (0x2003)ospfv3_inter_area_prefix_lsa
16389 (0x4005)ospfv3_as_external_lsa
8199 (0x2007)ospfv3_as_external_lsa
8 (0x0008)ospfv3_link_lsa
8201 (0x2009)ospfv3_intra_area_prefix_lsa

サンプルテンプレート

OSPFv3 Router-LSA (ospfv3_router_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3_lsals_type8193 (0x2001)

フィールド

フィールド型既定値Auto説明
flagsflags(8)0x0Router-LSA フラグ (V = 仮想リンク端点、E = ASBR、B = ABR)。
optionsflags(24)0x13OSPFv3 オプション (V6、E、N、R、DC、AF ビット)。
linkslist<struct> — PDU の残りすべて1 要素ルータインタフェース (タイプ、メトリック、インタフェース ID、隣接ルータ ID)。

flags

ビットマスク名前
24 (0x04)v
12 (0x02)e
01 (0x01)b

options

ビットマスク名前
01 (0x000001)v6
12 (0x000002)e
38 (0x000008)n
416 (0x000010)r
532 (0x000020)dc
8256 (0x000100)af

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
typeuint(8)
reserveduint(8)
metricuint(16)
interface_iduint(32)
neighbor_interface_iduint(32)
neighbor_router_idipv4

サンプルテンプレート

OSPFv3 Network-LSA (ospfv3_network_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3_lsals_type8194 (0x2002)

フィールド

フィールド型既定値Auto説明
reserveduint(8)0
optionsflags(24)0x13OSPFv3 オプション (V6、E、N、R、DC、AF ビット)。
attached_routerslist<ipv4> — PDU の残りすべてネットワークに接続しているルータのルータ ID。

options

ビットマスク名前
01 (0x000001)v6
12 (0x000002)e
38 (0x000008)n
416 (0x000010)r
532 (0x000020)dc
8256 (0x000100)af

サンプルテンプレート

OSPFv3 Inter-Area-Prefix-LSA (ospfv3_inter_area_prefix_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3_lsals_type8195 (0x2003)

フィールド

フィールド型既定値Auto説明
reserveduint(8)0
metricuint(24)10経路のコスト。
prefix_lengthuint(8)64プレフィックス長 (ビット)。
prefix_optionsflags(8)0x0プレフィックスオプション (NU、LA、P、DN ビット)。
reserved2uint(16)0
address_prefixbytes — PDU の残りすべて20 01 0d b8 00 01 00 004 オクテット境界にパディングしたアドレスプレフィックス。

prefix_options

ビットマスク名前
01 (0x01)nu
12 (0x02)la
38 (0x08)p
416 (0x10)dn

サンプルテンプレート

OSPFv3 AS-External-LSA (ospfv3_as_external_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3_lsals_type16389 (0x4005)
ospfv3_lsals_type8199 (0x2007)

フィールド

フィールド型既定値Auto説明
flagsflags(8)0x4AS-External-LSA フラグ (E = タイプ 2 メトリック、F = 転送アドレスあり、T = ルートタグあり)。
metricuint(24)20経路のコスト。
prefix_lengthuint(8)64プレフィックス長 (ビット)。
prefix_optionsflags(8)0x0プレフィックスオプション (NU、LA、P、DN ビット)。
referenced_ls_typeuint(16)0参照する LSA の LS タイプ。
address_prefixbytes — PDU の残りすべて20 01 0d b8 00 02 00 004 オクテット境界にパディングしたアドレスプレフィックス。

flags

ビットマスク名前
24 (0x04)e
12 (0x02)f
01 (0x01)t

prefix_options

ビットマスク名前
01 (0x01)nu
12 (0x02)la
38 (0x08)p
416 (0x10)dn

サンプルテンプレート

OSPFv3 Link-LSA (ospfv3_link_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3_lsals_type8 (0x0008)

フィールド

フィールド型既定値Auto説明
router_priorityuint(8)1DR 選出のルータ優先度 (0 = DR にならない)。
optionsflags(24)0x13OSPFv3 オプション (V6、E、N、R、DC、AF ビット)。
link_local_addressipv6fe80::1インタフェースのリンクローカルアドレス。
num_prefixesuint(32)0後続のプレフィックス数。
prefixesbytes — PDU の残りすべて""プレフィックスエントリ (長さ、オプション、メトリック / 予約、アドレスプレフィックス)。不透明なオクテット列。

options

ビットマスク名前
01 (0x000001)v6
12 (0x000002)e
38 (0x000008)n
416 (0x000010)r
532 (0x000020)dc
8256 (0x000100)af

サンプルテンプレート

OSPFv3 Intra-Area-Prefix-LSA (ospfv3_intra_area_prefix_lsa)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
ospfv3_lsals_type8201 (0x2009)

フィールド

フィールド型既定値Auto説明
num_prefixesuint(16)1後続のプレフィックス数。
referenced_ls_typeuint(16)8193参照する LSA の LS タイプ。
referenced_link_state_iduint(32)0参照する LSA のリンクステート ID。
referenced_advertising_routeripv4192.0.2.1参照する LSA の広告ルータ。
prefixesbytes — PDU の残りすべて40 00 00 0a 20 01 0d b8 00 03 00 00プレフィックスエントリ (長さ、オプション、メトリック / 予約、アドレスプレフィックス)。不透明なオクテット列。

サンプルテンプレート

EIGRP (eigrp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol88 (0x58)
ipv6next_header88 (0x58)
ipv6_hopoptsnext_header88 (0x58)
ipv6_routenext_header88 (0x58)
ipv6_srhnext_header88 (0x58)
ipv6_fragnext_header88 (0x58)
ipv6_dstoptsnext_header88 (0x58)

フィールド

フィールド型既定値Auto説明
versionuint(8)2EIGRP ヘッダのバージョン (2)。
opcodeenum(8)5 (hello)EIGRP オペコード (Update / Query / Reply / Hello / SIA-Query / SIA-Reply)。
checksumuint(16)ヘッダとそれ以降すべてに対するインターネットチェックサムEIGRP パケットのインターネットチェックサム (自動)。
flagsflags(32)0x0EIGRP フラグ (Init、Conditional Receive、Restart、End of Table)。
sequenceuint(32)0信頼性のある配送のためのシーケンス番号。
acknowledgeuint(32)0確認応答するシーケンス番号 (0 = なし)。
virtual_router_iduint(16)0仮想ルータ ID (0 = ユニキャストアドレスファミリ)。
autonomous_systemuint(16)100EIGRP の AS 番号。
tlvstlv — PDU の残りすべて2 要素EIGRP TLV (16 ビットタイプ、ヘッダを含む 16 ビット長)。

opcode

値名前
1 (0x01)update
3 (0x03)query
4 (0x04)reply
5 (0x05)hello
10 (0x0a)sia_query
11 (0x0b)sia_reply

flags

ビットマスク名前
01 (0x00000001)init
12 (0x00000002)conditional_receive
24 (0x00000004)restart
38 (0x00000008)end_of_table

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)parametersk1, k2, k3, k4, k5, k6, hold_time
2 (0x0002)authenticationdata
3 (0x0003)sequenceaddress_length, address
4 (0x0004)software_versionos_major, os_minor, tlv_major, tlv_minor
5 (0x0005)next_multicast_sequencesequence
7 (0x0007)peer_terminationdata
258 (0x0102)ipv4_internalnext_hop, delay, bandwidth, mtu, hop_count, reliability, load, internal_tag, flags, prefix_length, destination
259 (0x0103)ipv4_externalnext_hop, originating_router, originating_as, arbitrary_tag, external_metric, reserved, external_protocol, external_flags, delay, bandwidth, mtu, hop_count, reliability, load, internal_tag, flags, prefix_length, destination
1026 (0x0402)ipv6_internalnext_hop, delay, bandwidth, mtu, hop_count, reliability, load, internal_tag, flags, prefix_length, destination
1027 (0x0403)ipv6_externalnext_hop, originating_router, originating_as, arbitrary_tag, external_metric, reserved, external_protocol, external_flags, delay, bandwidth, mtu, hop_count, reliability, load, internal_tag, flags, prefix_length, destination

tlvs › parameters

フィールド型既定値Auto説明
k1uint(8)
k2uint(8)
k3uint(8)
k4uint(8)
k5uint(8)
k6uint(8)
hold_timeuint(16)

tlvs › authentication

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › sequence

フィールド型既定値Auto説明
address_lengthuint(8)
addressbytes — PDU の残りすべて

tlvs › software_version

フィールド型既定値Auto説明
os_majoruint(8)
os_minoruint(8)
tlv_majoruint(8)
tlv_minoruint(8)

tlvs › next_multicast_sequence

フィールド型既定値Auto説明
sequenceuint(32)

tlvs › peer_termination

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › ipv4_internal

フィールド型既定値Auto説明
next_hopipv4
delayuint(32)
bandwidthuint(32)
mtuuint(24)
hop_countuint(8)
reliabilityuint(8)
loaduint(8)
internal_taguint(8)
flagsuint(8)
prefix_lengthuint(8)
destinationbytes — PDU の残りすべて

tlvs › ipv4_external

フィールド型既定値Auto説明
next_hopipv4
originating_routeripv4
originating_asuint(32)
arbitrary_taguint(32)
external_metricuint(32)
reserveduint(16)
external_protocoluint(8)
external_flagsuint(8)
delayuint(32)
bandwidthuint(32)
mtuuint(24)
hop_countuint(8)
reliabilityuint(8)
loaduint(8)
internal_taguint(8)
flagsuint(8)
prefix_lengthuint(8)
destinationbytes — PDU の残りすべて

tlvs › ipv6_internal

フィールド型既定値Auto説明
next_hopipv6
delayuint(32)
bandwidthuint(32)
mtuuint(24)
hop_countuint(8)
reliabilityuint(8)
loaduint(8)
internal_taguint(8)
flagsuint(8)
prefix_lengthuint(8)
destinationbytes — PDU の残りすべて

tlvs › ipv6_external

フィールド型既定値Auto説明
next_hopipv6
originating_routeripv4
originating_asuint(32)
arbitrary_taguint(32)
external_metricuint(32)
reserveduint(16)
external_protocoluint(8)
external_flagsuint(8)
delayuint(32)
bandwidthuint(32)
mtuuint(24)
hop_countuint(8)
reliabilityuint(8)
loaduint(8)
internal_taguint(8)
flagsuint(8)
prefix_lengthuint(8)
destinationbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

  • eigrp-hello — templates/protocols/routing/eigrp-hello.wpg.yaml
  • eigrp-update — templates/protocols/routing/eigrp-update.wpg.yaml

VRRPv2 (vrrpv2)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol112 (0x70)
vrrpv3version2 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
versionuint(4)2VRRP バージョン (2 = RFC 3768、3 = RFC 5798)。
typeenum(4)1 (advertisement)VRRP パケットタイプ (1 = Advertisement)。
vriduint(8)1仮想ルータ識別子 (VRID)。
priorityuint(8)100送信ルータの優先度 (255 = アドレス所有者、0 = 離脱)。
count_ip_addrsuint(8)ip_addresses の要素数広告に含まれる仮想アドレス数 (Auto)。
auth_typeenum(8)0 (no_authentication)VRRPv2 認証タイプ (0 = なし、1 = 平文、2 = IP AH)。
adver_intuint(8)1VRRPv2 広告間隔 (秒)。
checksumuint(16)ヘッダとそれ以降すべてに対するインターネットチェックサムVRRP メッセージのインターネットチェックサム (VRRPv3 は IP 疑似ヘッダを含む) (Auto)。
ip_addresseslist<ipv4> — count_ip_addrs * 4 オクテット1 要素仮想ルータアドレス。
auth_databytes(8)00 00 00 00 00 00 00 00VRRPv2 認証データ (8 オクテット)。

type

値名前
1advertisement

auth_type

値名前
0 (0x00)no_authentication
1 (0x01)simple_text_password
2 (0x02)ip_authentication_header

制約

レベル規則
警告version が 2

サンプルテンプレート

  • vrrpv2 — templates/protocols/fhrp/vrrpv2.wpg.yaml

VRRPv3 (vrrpv3)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol112 (0x70)

フィールド

フィールド型既定値Auto説明
versionuint(4)3VRRP バージョン (2 = RFC 3768、3 = RFC 5798)。
typeenum(4)1 (advertisement)VRRP パケットタイプ (1 = Advertisement)。
vriduint(8)1仮想ルータ識別子 (VRID)。
priorityuint(8)100送信ルータの優先度 (255 = アドレス所有者、0 = 離脱)。
count_ipvx_addrsuint(8)ip_addresses の要素数広告に含まれる仮想アドレス数 (Auto)。
reserveduint(4)0
max_adver_intuint(12)100VRRPv3 最大広告間隔 (センチ秒)。
checksumuint(16)ヘッダとそれ以降すべてに対する疑似ヘッダ付きインターネットチェックサムVRRP メッセージのインターネットチェックサム (VRRPv3 は IP 疑似ヘッダを含む) (Auto)。
ip_addresseslist<ipv4> — count_ipvx_addrs * 4 オクテット1 要素仮想ルータアドレス。

type

値名前
1advertisement

次レイヤ

次レイヤは version で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2vrrpv2このレイヤを読み直す

制約

レベル規則
警告version が 3

サンプルテンプレート

VRRPv3 (IPv6) (vrrpv3_ipv6)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header112 (0x70)
ipv6_hopoptsnext_header112 (0x70)
ipv6_routenext_header112 (0x70)
ipv6_srhnext_header112 (0x70)
ipv6_fragnext_header112 (0x70)
ipv6_dstoptsnext_header112 (0x70)

フィールド

フィールド型既定値Auto説明
versionuint(4)3VRRP バージョン (2 = RFC 3768、3 = RFC 5798)。
typeenum(4)1 (advertisement)VRRP パケットタイプ (1 = Advertisement)。
vriduint(8)1仮想ルータ識別子 (VRID)。
priorityuint(8)100送信ルータの優先度 (255 = アドレス所有者、0 = 離脱)。
count_ipvx_addrsuint(8)ip_addresses の要素数広告に含まれる仮想アドレス数 (Auto)。
reserveduint(4)0
max_adver_intuint(12)100VRRPv3 最大広告間隔 (センチ秒)。
checksumuint(16)ヘッダとそれ以降すべてに対する疑似ヘッダ付きインターネットチェックサムVRRP メッセージのインターネットチェックサム (VRRPv3 は IP 疑似ヘッダを含む) (Auto)。
ip_addresseslist<ipv6> — count_ipvx_addrs * 16 オクテット1 要素仮想ルータアドレス。

type

値名前
1advertisement

制約

レベル規則
警告version が 3

サンプルテンプレート

  • vrrpv3-ipv6 — templates/protocols/fhrp/vrrpv3-ipv6.wpg.yaml

IGMP (igmp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol2 (0x02)

フィールド

フィールド型既定値Auto説明
typeenum(8)17 (membership_query)次レイヤのプロトコル番号 (「次レイヤ」参照)IGMP メッセージタイプ (ボディから Auto: 0x11 クエリ、0x12 / 0x16 レポート、0x17 離脱、0x22 v3 レポート)。
max_resp_codeuint(8)100最大応答時間 / コード (1/10 秒単位、クエリ用。レポートでは 0)。
checksumuint(16)ヘッダとそれ以降すべてに対するインターネットチェックサムIGMP メッセージ全体のインターネットチェックサム (Auto)。

type

値名前
17 (0x11)membership_query
18 (0x12)v1_membership_report
22 (0x16)v2_membership_report
23 (0x17)leave_group
34 (0x22)v3_membership_report

次レイヤ

次レイヤは type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
17 (0x11)igmpv3_query残り 8 オクテット以上
17 (0x11)igmpv2
18 (0x12)igmpv2
22 (0x16)igmpv2
23 (0x17)igmpv2
34 (0x22)igmpv3_report

サンプルテンプレート

  • igmpv2-query — templates/protocols/mcast/igmpv2-query.wpg.yaml
  • igmpv3-query — templates/protocols/mcast/igmpv3-query.wpg.yaml
  • igmpv3-report — templates/protocols/mcast/igmpv3-report.wpg.yaml

IGMPv1/v2 (igmpv2)

下位レイヤからの到達

下位レイヤ判別フィールド値
igmptype17 (0x11)
igmptype18 (0x12)
igmptype22 (0x16)
igmptype23 (0x17)

フィールド

フィールド型既定値Auto説明
groupipv40.0.0.0マルチキャストグループアドレス (一般クエリでは 0.0.0.0)。

サンプルテンプレート

  • igmpv2-query — templates/protocols/mcast/igmpv2-query.wpg.yaml

IGMPv3 Query (igmpv3_query)

下位レイヤからの到達

下位レイヤ判別フィールド値
igmptype17 (0x11) (残り 8 オクテット以上)

フィールド

フィールド型既定値Auto説明
groupipv40.0.0.0マルチキャストグループアドレス (一般クエリでは 0.0.0.0)。
reserveduint(4)0
suint(1)0ルータ側処理抑止フラグ。
qrvuint(3)2クエリアのロバストネス変数 (QRV)。
qqicuint(8)125クエリアのクエリ間隔コード (QQIC)。
num_sourcesuint(16)sources の要素数送信元アドレス数。
sourceslist<ipv4> — num_sources * 4 オクテット[]送信元アドレス。

サンプルテンプレート

  • igmpv3-query — templates/protocols/mcast/igmpv3-query.wpg.yaml

IGMPv3 Report (igmpv3_report)

下位レイヤからの到達

下位レイヤ判別フィールド値
igmptype34 (0x22)

フィールド

フィールド型既定値Auto説明
reserveduint(16)0
num_group_recordsuint(16)group_records の要素数グループレコード数。
group_recordslist<struct> — PDU の残りすべて1 要素グループレコード (レコードタイプ、補助データ長、送信元、マルチキャストアドレス)。

group_records

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
record_typeenum(8)4 (change_to_exclude)
aux_data_lenuint(8)0
num_sourcesuint(16)sources の要素数
multicast_addressipv4239.1.1.1
sourceslist<ipv4> — num_sources * 4 オクテット[]
aux_databytes — aux_data_len * 4 オクテット""

group_records › record_type

値名前
1 (0x01)mode_is_include
2 (0x02)mode_is_exclude
3 (0x03)change_to_include
4 (0x04)change_to_exclude
5 (0x05)allow_new_sources
6 (0x06)block_old_sources

サンプルテンプレート

  • igmpv3-report — templates/protocols/mcast/igmpv3-report.wpg.yaml

MLDv1 (mld)

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type130 (0x82)
icmpv6type131 (0x83)
icmpv6type132 (0x84)

フィールド

フィールド型既定値Auto説明
max_resp_delayuint(16)10000最大応答遅延 / コード (ミリ秒)。
reserveduint(16)0
multicast_addressipv6::IPv6 マルチキャストアドレス (一般クエリでは ::)。

サンプルテンプレート

  • mldv1-query — templates/protocols/mcast/mldv1-query.wpg.yaml

MLDv2 Query (mldv2_query)

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type130 (0x82) (残り 24 オクテット以上)

フィールド

フィールド型既定値Auto説明
max_resp_codeuint(16)10000最大応答遅延 / コード (ミリ秒)。
reserveduint(16)0
multicast_addressipv6::IPv6 マルチキャストアドレス (一般クエリでは ::)。
reserved2uint(4)0
suint(1)0ルータ側処理抑止フラグ。
qrvuint(3)2クエリアのロバストネス変数 (QRV)。
qqicuint(8)125クエリアのクエリ間隔コード (QQIC)。
num_sourcesuint(16)sources の要素数送信元アドレス数。
sourceslist<ipv6> — num_sources * 16 オクテット[]送信元アドレス。

サンプルテンプレート

  • mldv2-query — templates/protocols/mcast/mldv2-query.wpg.yaml

MLDv2 Report (mldv2_report)

下位レイヤからの到達

下位レイヤ判別フィールド値
icmpv6type143 (0x8f)

フィールド

フィールド型既定値Auto説明
reserveduint(16)0
num_recordsuint(16)records の要素数グループレコード数。
recordslist<struct> — PDU の残りすべて1 要素グループレコード (レコードタイプ、補助データ長、送信元、マルチキャストアドレス)。

records

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
record_typeenum(8)4 (change_to_exclude)
aux_data_lenuint(8)0
num_sourcesuint(16)sources の要素数
multicast_addressipv6ff05::1
sourceslist<ipv6> — num_sources * 16 オクテット[]
aux_databytes — aux_data_len * 4 オクテット""

records › record_type

値名前
1 (0x01)mode_is_include
2 (0x02)mode_is_exclude
3 (0x03)change_to_include
4 (0x04)change_to_exclude
5 (0x05)allow_new_sources
6 (0x06)block_old_sources

サンプルテンプレート

  • mldv2-report — templates/protocols/mcast/mldv2-report.wpg.yaml

PIM (pim)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol103 (0x67)

フィールド

フィールド型既定値Auto説明
versionuint(4)2PIM バージョン (2)。
typeenum(4)0 (hello)次レイヤのプロトコル番号 (「次レイヤ」参照)PIM メッセージタイプ (ボディから Auto: 0 Hello、1 Register、3 Join/Prune)。
reserveduint(8)0
checksumuint(16)ヘッダとそれ以降すべてに対するインターネットチェックサムインターネットチェックサム (メッセージ全体。Register は先頭 8 オクテットのみ) (Auto)。

type

値名前
0hello
1register
2register_stop
3join_prune
4bootstrap
5assert
6graft
7graft_ack
8candidate_rp_advertisement

次レイヤ

次レイヤは type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0pim_hello
3pim_join_prune

制約

レベル規則
警告version が 2

サンプルテンプレート

PIM Hello (pim_hello)

下位レイヤからの到達

下位レイヤ判別フィールド値
pimtype0

フィールド

フィールド型既定値Auto説明
optionstlv — PDU の残りすべて3 要素PIM Hello オプション (Holdtime、LAN Prune Delay、DR Priority、Generation ID、Address List)。

options

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)holdtimeholdtime
2 (0x0002)lan_prune_delayt, propagation_delay, override_interval
19 (0x0013)dr_prioritypriority
20 (0x0014)generation_idgeneration_id
24 (0x0018)address_list

options › holdtime

フィールド型既定値Auto説明
holdtimeuint(16)105

options › lan_prune_delay

フィールド型既定値Auto説明
tuint(1)0
propagation_delayuint(15)500
override_intervaluint(16)2500

options › dr_priority

フィールド型既定値Auto説明
priorityuint(32)1

options › generation_id

フィールド型既定値Auto説明
generation_iduint(32)0

サンプルテンプレート

PIM Join/Prune (pim_join_prune)

下位レイヤからの到達

下位レイヤ判別フィールド値
pimtype3

フィールド

フィールド型既定値Auto説明
upstream_familyuint(8)1エンコードアドレスのアドレスファミリ (1 = IPv4)。
upstream_encodinguint(8)0
upstream_neighboripv4192.0.2.1Join/Prune の宛先となる上流ネイバーアドレス。
reserveduint(8)0
num_groupsuint(8)groups の要素数グループセット数。
holdtimeuint(16)210Join/Prune 状態の保持時間 (秒)。
groupslist<struct> — PDU の残りすべて1 要素グループセット (エンコードグループ、Join / Prune するエンコード送信元)。

groups

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
familyuint(8)1
encodinguint(8)0
flagsflags(8)0x0
mask_lenuint(8)32
group_addressipv4239.1.1.1
num_joineduint(16)joined の要素数
num_pruneduint(16)pruned の要素数
joinedlist<struct> — num_joined * 8 オクテット[]
prunedlist<struct> — num_pruned * 8 オクテット[]

groups › flags

ビットマスク名前
7128 (0x80)bidir
01 (0x01)admin_scope

groups › joined

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
familyuint(8)1
encodinguint(8)0
flagsflags(8)0x4
mask_lenuint(8)32
addressipv4192.0.2.10
groups › joined › flags
ビットマスク名前
24 (0x04)sparse
12 (0x02)wildcard
01 (0x01)rpt

groups › pruned

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
familyuint(8)1
encodinguint(8)0
flagsflags(8)0x4
mask_lenuint(8)32
addressipv4192.0.2.10
groups › pruned › flags
ビットマスク名前
24 (0x04)sparse
12 (0x02)wildcard
01 (0x01)rpt

サンプルテンプレート

  • pim-join-prune — templates/protocols/mcast/pim-join-prune.wpg.yaml

PIM Register (pim_register)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol103 (0x67)

フィールド

フィールド型既定値Auto説明
versionuint(4)2PIM バージョン (2)。
typeuint(4)1PIM メッセージタイプ (ボディから Auto: 0 Hello、1 Register、3 Join/Prune)。
reserveduint(8)0
checksumuint(16)ヘッダに対するインターネットチェックサムインターネットチェックサム (メッセージ全体。Register は先頭 8 オクテットのみ) (Auto)。
borderuint(1)0Border ビット (送信者が PIM マルチキャスト境界ルータ)。
null_registeruint(1)0Null-Register ビット (カプセル化データパケットなし)。
reserved2uint(30)0

次レイヤ

次レイヤは type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

type = 1 のときのペイロード先頭 4 ビット

値プロトコル
4ipv4
6ipv6

制約

レベル規則
警告type が 1

サンプルテンプレート

  • pim-register — templates/protocols/mcast/pim-register.wpg.yaml

OSI network PDU (osi)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット(その他の値)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット(その他の値)

フィールド

フィールド型既定値Auto説明
nlpidenum(8)131 (isis)ネットワーク層プロトコル識別子 (ISO/IEC TR 9577): 0x81 CLNP、0x82 ES-IS、0x83 IS-IS。
databytes — PDU の残りすべて""NLPID 以降の OSI PDU の残り (不透明なオクテット列)。

nlpid

値名前
0 (0x00)null
129 (0x81)clnp
130 (0x82)esis
131 (0x83)isis
142 (0x8e)ipv6
204 (0xcc)ipv4

サンプルテンプレート

  • dot3-llc-osi — templates/protocols/l2/dot3-llc-osi.wpg.yaml

CLNP (clnp)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット129 (0x81)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット129 (0x81)

フィールド

フィールド型既定値Auto説明
nlpidenum(8)129 (clnp)ネットワーク層プロトコル識別子(0x81 = CLNP)。
length_indicatoruint(8)ヘッダの長さ (オクテット単位)オプションの終わりまでのヘッダ長(オクテット、Auto)。
versionuint(8)1バージョン / プロトコル ID 拡張(1)。
lifetimeuint(8)32残り寿命(500 ms 単位)。
spuint(1)segmentation の要素数SP: セグメント化許可。セグメンテーション部が存在します(セグメンテーション部から Auto)。
msuint(1)0MS: 後続セグメントあり。
eruint(1)1E/R: PDU が破棄されたらエラーレポートを送る。
pdu_typeenum(5)28 (dt)PDU 種別: 0x1c DT(データ)、0x1d MD(マルチキャストデータ)、0x01 ER(エラーレポート)、0x1e ERQ / 0x1f ERP(エコー要求 / 応答)。
segment_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダとデータを含む PDU 全体の長さ(Auto)。
checksumuint(16)ヘッダに対するFletcher チェックサムヘッダの ISO 8473 Fletcher チェックサム(Auto)。0 = チェックサム不使用。
destinationnsap49.0001.0000.0000.0002.00宛先 NSAP アドレス。
sourcensap49.0001.0000.0000.0001.00送信元 NSAP アドレス。
segmentationlist<struct> — sp 個の要素[]セグメンテーション部(データユニット識別子、セグメントオフセット、全長)。SP が立っているときに存在します。全長は計算しません。
optionstlv — グループ先頭から length_indicator オクテットまで[]長さ指示子までのオプション(8 ビットコード / 8 ビット長): セキュリティ、QoS 維持、優先度、ソースルーティング、経路記録、パディング、破棄理由。

nlpid

値名前
129 (0x81)clnp

pdu_type

値名前
1er
28dt
29md
30erq
31erp

segmentation

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
data_unit_identifieruint(16)
segment_offsetuint(16)
total_lengthuint(16)

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
197 (0xc5)securityvalue
195 (0xc3)qos_maintenancevalue
205 (0xcd)priorityvalue
200 (0xc8)source_routingroute_type, next_address, addresses
203 (0xcb)recording_of_routeroute_type, next_address, addresses
204 (0xcc)paddingdata
193 (0xc1)reason_for_discardreason, pointer

options › security

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

options › qos_maintenance

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

options › priority

フィールド型既定値Auto説明
valueuint(8)

options › source_routing

フィールド型既定値Auto説明
route_typeenum(8)
next_addressuint(8)
addresseslist<struct> — PDU の残りすべて
options › source_routing › route_type
値名前
0 (0x00)partial
255 (0xff)complete
options › source_routing › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

options › recording_of_route

フィールド型既定値Auto説明
route_typeenum(8)
next_addressuint(8)
addresseslist<struct> — PDU の残りすべて
options › recording_of_route › route_type
値名前
0 (0x00)partial
255 (0xff)complete
options › recording_of_route › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

options › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

options › reason_for_discard

フィールド型既定値Auto説明
reasonenum(8)
pointeruint(8)
options › reason_for_discard › reason
値名前
0 (0x00)general
1 (0x01)checksum
2 (0x02)congestion
3 (0x03)header_syntax
4 (0x04)segmentation_needed
5 (0x05)incomplete_pdu
6 (0x06)duplicate_option
128 (0x80)destination_unreachable
129 (0x81)destination_unknown
144 (0x90)source_routing_unspecified
145 (0x91)source_routing_syntax
146 (0x92)source_routing_unknown_address
147 (0x93)source_routing_path_not_acceptable
160 (0xa0)lifetime_expired_in_transit
161 (0xa1)lifetime_expired_reassembly
176 (0xb0)unsupported_option
177 (0xb1)unsupported_version
178 (0xb2)unsupported_security
179 (0xb3)unsupported_source_routing
180 (0xb4)unsupported_recording_of_route
192 (0xc0)reassembly_interference

サンプルテンプレート

  • clnp-dt — templates/protocols/l3/clnp-dt.wpg.yaml
  • clnp-er — templates/protocols/l3/clnp-er.wpg.yaml
  • clnp-erq — templates/protocols/l3/clnp-erq.wpg.yaml

ES-IS (esis)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット130 (0x82)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット130 (0x82)

フィールド

フィールド型既定値Auto説明
nlpidenum(8)130 (esis)ネットワーク層プロトコル識別子(0x82 = ES-IS)。
length_indicatoruint(8)ヘッダの長さ (オクテット単位)PDU の長さ(オクテット、Auto)。
versionuint(8)1バージョン / プロトコル ID 拡張(1)。
reserveduint(8)0
reserved_typeuint(3)0
pdu_typeenum(5)2 (esh)PDU 種別: 2 ESH(エンドシステム Hello)、4 ISH(中間システム Hello)、6 RD(リダイレクト)。
holding_timeuint(16)30保持時間(秒)。
checksumuint(16)ヘッダに対するFletcher チェックサムPDU の ISO 8473 Fletcher チェックサム(Auto)。0 = チェックサム不使用。
databytes — PDU の残りすべて""固定部以降の PDU(不透明なオクテット列)。

nlpid

値名前
130 (0x82)esis

pdu_type

値名前
2esh
4ish
6rd

次レイヤ

次レイヤは pdu_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2esis_eshこのレイヤを読み直す
4esis_ishこのレイヤを読み直す
6esis_rdこのレイヤを読み直す

サンプルテンプレート

  • esis-generic — templates/protocols/routing/esis-generic.wpg.yaml

ES-IS ESH (esis_esh)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット130 (0x82)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット130 (0x82)
esispdu_type2 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
nlpidenum(8)130 (esis)ネットワーク層プロトコル識別子(0x82 = ES-IS)。
length_indicatoruint(8)ヘッダの長さ (オクテット単位)PDU の長さ(オクテット、Auto)。
versionuint(8)1バージョン / プロトコル ID 拡張(1)。
reserveduint(8)0
reserved_typeuint(3)0
pdu_typeenum(5)2 (esh)PDU 種別: 2 ESH(エンドシステム Hello)、4 ISH(中間システム Hello)、6 RD(リダイレクト)。
holding_timeuint(16)30保持時間(秒)。
checksumuint(16)ヘッダに対するFletcher チェックサムPDU の ISO 8473 Fletcher チェックサム(Auto)。0 = チェックサム不使用。
number_of_source_addressesuint(8)source_addresses の要素数送信元アドレスの数(Auto)。
source_addresseslist<struct> — number_of_source_addresses 個の要素1 要素エンドシステムが受け持つ NSAP アドレス。
optionstlv — グループ先頭から length_indicator オクテットまで[]長さ指示子までのオプション(8 ビットコード / 8 ビット長): セキュリティ、QoS 維持、優先度、アドレスマスク、SNPA マスク、推奨 ES 設定タイマ。

nlpid

値名前
130 (0x82)esis

pdu_type

値名前
2esh
4ish
6rd

source_addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
197 (0xc5)securityvalue
195 (0xc3)qos_maintenancevalue
205 (0xcd)priorityvalue
225 (0xe1)address_maskmask
226 (0xe2)snpa_maskmask
198 (0xc6)es_configuration_timerseconds

options › security

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

options › qos_maintenance

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

options › priority

フィールド型既定値Auto説明
valueuint(8)

options › address_mask

フィールド型既定値Auto説明
maskbytes — PDU の残りすべて

options › snpa_mask

フィールド型既定値Auto説明
maskbytes — PDU の残りすべて

options › es_configuration_timer

フィールド型既定値Auto説明
secondsuint(16)

サンプルテンプレート

  • esis-esh — templates/protocols/routing/esis-esh.wpg.yaml

ES-IS ISH (esis_ish)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット130 (0x82)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット130 (0x82)
esispdu_type4 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
nlpidenum(8)130 (esis)ネットワーク層プロトコル識別子(0x82 = ES-IS)。
length_indicatoruint(8)ヘッダの長さ (オクテット単位)PDU の長さ(オクテット、Auto)。
versionuint(8)1バージョン / プロトコル ID 拡張(1)。
reserveduint(8)0
reserved_typeuint(3)0
pdu_typeenum(5)4 (ish)PDU 種別: 2 ESH(エンドシステム Hello)、4 ISH(中間システム Hello)、6 RD(リダイレクト)。
holding_timeuint(16)30保持時間(秒)。
checksumuint(16)ヘッダに対するFletcher チェックサムPDU の ISO 8473 Fletcher チェックサム(Auto)。0 = チェックサム不使用。
netnsap49.0001.0000.0000.0001.00中間システムのネットワークエンティティタイトル(リダイレクト: 次ホップがエンドシステムなら空)。
optionstlv — グループ先頭から length_indicator オクテットまで[]長さ指示子までのオプション(8 ビットコード / 8 ビット長): セキュリティ、QoS 維持、優先度、アドレスマスク、SNPA マスク、推奨 ES 設定タイマ。

nlpid

値名前
130 (0x82)esis

pdu_type

値名前
2esh
4ish
6rd

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
197 (0xc5)securityvalue
195 (0xc3)qos_maintenancevalue
205 (0xcd)priorityvalue
225 (0xe1)address_maskmask
226 (0xe2)snpa_maskmask
198 (0xc6)es_configuration_timerseconds

options › security

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

options › qos_maintenance

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

options › priority

フィールド型既定値Auto説明
valueuint(8)

options › address_mask

フィールド型既定値Auto説明
maskbytes — PDU の残りすべて

options › snpa_mask

フィールド型既定値Auto説明
maskbytes — PDU の残りすべて

options › es_configuration_timer

フィールド型既定値Auto説明
secondsuint(16)

サンプルテンプレート

  • esis-ish — templates/protocols/routing/esis-ish.wpg.yaml

ES-IS Redirect (esis_rd)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット130 (0x82)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット130 (0x82)
esispdu_type6 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
nlpidenum(8)130 (esis)ネットワーク層プロトコル識別子(0x82 = ES-IS)。
length_indicatoruint(8)ヘッダの長さ (オクテット単位)PDU の長さ(オクテット、Auto)。
versionuint(8)1バージョン / プロトコル ID 拡張(1)。
reserveduint(8)0
reserved_typeuint(3)0
pdu_typeenum(5)6 (rd)PDU 種別: 2 ESH(エンドシステム Hello)、4 ISH(中間システム Hello)、6 RD(リダイレクト)。
holding_timeuint(16)30保持時間(秒)。
checksumuint(16)ヘッダに対するFletcher チェックサムPDU の ISO 8473 Fletcher チェックサム(Auto)。0 = チェックサム不使用。
destinationnsap49.0001.0000.0000.0002.00リダイレクト対象の宛先 NSAP アドレス。
bsnpa_lengthuint(8)bsnpa のオクテット長サブネットワークアドレスの長さ(Auto)。
bsnpabytes — bsnpa_length オクテット02 00 00 00 00 02より良い次ホップのサブネットワークアドレス(MAC アドレスなど)。
netnsap49.0001.0000.0000.0002.00中間システムのネットワークエンティティタイトル(リダイレクト: 次ホップがエンドシステムなら空)。
optionstlv — グループ先頭から length_indicator オクテットまで[]長さ指示子までのオプション(8 ビットコード / 8 ビット長): セキュリティ、QoS 維持、優先度、アドレスマスク、SNPA マスク、推奨 ES 設定タイマ。

nlpid

値名前
130 (0x82)esis

pdu_type

値名前
2esh
4ish
6rd

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
197 (0xc5)securityvalue
195 (0xc3)qos_maintenancevalue
205 (0xcd)priorityvalue
225 (0xe1)address_maskmask
226 (0xe2)snpa_maskmask
198 (0xc6)es_configuration_timerseconds

options › security

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

options › qos_maintenance

フィールド型既定値Auto説明
valuebytes — PDU の残りすべて

options › priority

フィールド型既定値Auto説明
valueuint(8)

options › address_mask

フィールド型既定値Auto説明
maskbytes — PDU の残りすべて

options › snpa_mask

フィールド型既定値Auto説明
maskbytes — PDU の残りすべて

options › es_configuration_timer

フィールド型既定値Auto説明
secondsuint(16)

サンプルテンプレート

  • esis-rd — templates/protocols/routing/esis-rd.wpg.yaml

IS-IS (isis)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)27固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)15 (l1_lan_hello)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
databytes — PDU の残りすべて""共通ヘッダ以降の PDU(不透明なオクテット列)。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

次レイヤ

次レイヤは pdu_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
15isis_l1_lan_helloこのレイヤを読み直す
16isis_l2_lan_helloこのレイヤを読み直す
17isis_p2p_helloこのレイヤを読み直す
18isis_l1_lspこのレイヤを読み直す
20isis_l2_lspこのレイヤを読み直す
24isis_l1_csnpこのレイヤを読み直す
25isis_l2_csnpこのレイヤを読み直す
26isis_l1_psnpこのレイヤを読み直す
27isis_l2_psnpこのレイヤを読み直す

サンプルテンプレート

  • isis-generic — templates/protocols/routing/isis-generic.wpg.yaml

IS-IS L1 LAN Hello (isis_l1_lan_hello)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type15 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)27固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)15 (l1_lan_hello)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
reserved_ctuint(6)0
circuit_typeenum(2)3 (l1_l2)回線種別: 1 = L1、2 = L2、3 = L1/L2。
source_idbytes(6)00 00 00 00 00 01送信元の System ID。
holding_timeuint(16)30保持時間(秒)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
reserved_priuint(1)0
priorityuint(7)64代表 IS 選出の優先度(0〜127)。
lan_idbytes(7)00 00 00 00 00 01 01LAN ID: 代表 IS の System ID と擬似ノード ID。
tlvstlv — PDU の残りすべて3 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

circuit_type

値名前
1l1
2l2
3l1_l2

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • pdu_length を Manual にすると、その長さまで padding の項目で詰めます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 27

サンプルテンプレート

IS-IS L2 LAN Hello (isis_l2_lan_hello)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type16 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)27固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)16 (l2_lan_hello)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
reserved_ctuint(6)0
circuit_typeenum(2)3 (l1_l2)回線種別: 1 = L1、2 = L2、3 = L1/L2。
source_idbytes(6)00 00 00 00 00 01送信元の System ID。
holding_timeuint(16)30保持時間(秒)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
reserved_priuint(1)0
priorityuint(7)64代表 IS 選出の優先度(0〜127)。
lan_idbytes(7)00 00 00 00 00 01 01LAN ID: 代表 IS の System ID と擬似ノード ID。
tlvstlv — PDU の残りすべて3 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

circuit_type

値名前
1l1
2l2
3l1_l2

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • pdu_length を Manual にすると、その長さまで padding の項目で詰めます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 27

サンプルテンプレート

IS-IS P2P Hello (isis_p2p_hello)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type17 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)20固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)17 (p2p_hello)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
reserved_ctuint(6)0
circuit_typeenum(2)3 (l1_l2)回線種別: 1 = L1、2 = L2、3 = L1/L2。
source_idbytes(6)00 00 00 00 00 01送信元の System ID。
holding_timeuint(16)30保持時間(秒)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
local_circuit_iduint(8)1ローカル回線 ID。
tlvstlv — PDU の残りすべて4 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

circuit_type

値名前
1l1
2l2
3l1_l2

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • pdu_length を Manual にすると、その長さまで padding の項目で詰めます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 20

サンプルテンプレート

  • isis-p2p-hello — templates/protocols/routing/isis-p2p-hello.wpg.yaml

IS-IS L1 LSP (isis_l1_lsp)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type18 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)27固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)18 (l1_lsp)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
remaining_lifetimeuint(16)1199LSP の残り寿命(秒、チェックサム対象外)。
lsp_idbytes(8)00 00 00 00 00 01 00 00LSP ID: System ID、擬似ノード ID、フラグメント番号。
sequence_numberuint(32)1LSP シーケンス番号。
checksumuint(16)ヘッダとそれ以降すべてに対するFletcher チェックサム; irpd, header_length, version_ext, id_length, reserved, pdu_type, version, reserved2, max_area_addresses, pdu_length, remaining_lifetime は 0 として計算LSP ID から PDU 末尾までの Fletcher チェックサム(Auto)。
partition_repairuint(1)0P ビット: パーティション修復対応。
attachedflags(4)0x0ATT ビット: 他エリアへの接続(default / delay / expense / error メトリック)。
overloaduint(1)0OL ビット: LSP データベース過負荷。
is_typeenum(2)1 (l1)IS 種別: 1 = L1、3 = L1/L2。
tlvstlv — PDU の残りすべて6 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

attached

ビットマスク名前
01default
12delay
24expense
38error

is_type

値名前
1l1
3l1_l2

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 27

サンプルテンプレート

  • isis-l1-lsp — templates/protocols/routing/isis-l1-lsp.wpg.yaml

IS-IS L2 LSP (isis_l2_lsp)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type20 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)27固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)20 (l2_lsp)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
remaining_lifetimeuint(16)1199LSP の残り寿命(秒、チェックサム対象外)。
lsp_idbytes(8)00 00 00 00 00 01 00 00LSP ID: System ID、擬似ノード ID、フラグメント番号。
sequence_numberuint(32)1LSP シーケンス番号。
checksumuint(16)ヘッダとそれ以降すべてに対するFletcher チェックサム; irpd, header_length, version_ext, id_length, reserved, pdu_type, version, reserved2, max_area_addresses, pdu_length, remaining_lifetime は 0 として計算LSP ID から PDU 末尾までの Fletcher チェックサム(Auto)。
partition_repairuint(1)0P ビット: パーティション修復対応。
attachedflags(4)0x0ATT ビット: 他エリアへの接続(default / delay / expense / error メトリック)。
overloaduint(1)0OL ビット: LSP データベース過負荷。
is_typeenum(2)3 (l1_l2)IS 種別: 1 = L1、3 = L1/L2。
tlvstlv — PDU の残りすべて6 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

attached

ビットマスク名前
01default
12delay
24expense
38error

is_type

値名前
1l1
3l1_l2

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 27

サンプルテンプレート

  • isis-l2-lsp — templates/protocols/routing/isis-l2-lsp.wpg.yaml

IS-IS L1 CSNP (isis_l1_csnp)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type24 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)33固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)24 (l1_csnp)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
source_idbytes(7)00 00 00 00 00 01 00送信元の System ID と回線 ID(0)。
start_lsp_idbytes(8)00 00 00 00 00 00 00 00CSNP が対象とする最初の LSP ID。
end_lsp_idbytes(8)ff ff ff ff ff ff ff ffCSNP が対象とする最後の LSP ID。
tlvstlv — PDU の残りすべて1 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 33

サンプルテンプレート

  • isis-l1-csnp — templates/protocols/routing/isis-l1-csnp.wpg.yaml

IS-IS L2 CSNP (isis_l2_csnp)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type25 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)33固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)25 (l2_csnp)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
source_idbytes(7)00 00 00 00 00 01 00送信元の System ID と回線 ID(0)。
start_lsp_idbytes(8)00 00 00 00 00 00 00 00CSNP が対象とする最初の LSP ID。
end_lsp_idbytes(8)ff ff ff ff ff ff ff ffCSNP が対象とする最後の LSP ID。
tlvstlv — PDU の残りすべて1 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 33

サンプルテンプレート

  • isis-l2-csnp — templates/protocols/routing/isis-l2-csnp.wpg.yaml

IS-IS L1 PSNP (isis_l1_psnp)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type26 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)17固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)26 (l1_psnp)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
source_idbytes(7)00 00 00 00 00 01 00送信元の System ID と回線 ID(0)。
tlvstlv — PDU の残りすべて1 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 17

サンプルテンプレート

  • isis-l1-psnp — templates/protocols/routing/isis-l1-psnp.wpg.yaml

IS-IS L2 PSNP (isis_l2_psnp)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 補足: IS-IS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
llcdsap = 254 (0xfe) のときのペイロード先頭 8 ビット131 (0x83)
pppprotocol = 35 (0x0023) のときのペイロード先頭 8 ビット131 (0x83)
isispdu_type27 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
irpdenum(8)131 (isis)ドメイン内ルーティングプロトコル識別子(0x83 = IS-IS)。
header_lengthuint(8)17固定ヘッダの長さ(オクテット)。PDU 種別ごとに一定(LAN Hello / LSP 27、P2P Hello 20、CSNP 33、PSNP 17)。
version_extuint(8)1バージョン / プロトコル ID 拡張(1)。
id_lengthuint(8)0System ID の長さ(0 = 6 オクテット)。
reserveduint(3)0
pdu_typeenum(5)27 (l2_psnp)PDU 種別(15/16 LAN Hello L1/L2、17 P2P Hello、18/20 LSP L1/L2、24/25 CSNP、26/27 PSNP)。
versionuint(8)1バージョン(1)。
reserved2uint(8)0
max_area_addressesuint(8)0エリアアドレスの最大数(0 = 3)。
pdu_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)PDU 全体の長さ(Auto)。Hello で Manual 値を指定すると Padding TLV でその長さまで埋めます(例: MTU 1500 なら 1497)。
source_idbytes(7)00 00 00 00 00 01 00送信元の System ID と回線 ID(0)。
tlvstlv — PDU の残りすべて1 要素TLV(8 ビットコード / 8 ビット長)とそのサブ TLV。

irpd

値名前
131 (0x83)isis

pdu_type

値名前
15l1_lan_hello
16l2_lan_hello
17p2p_hello
18l1_lsp
20l2_lsp
24l1_csnp
25l2_csnp
26l1_psnp
27l2_psnp

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)area_addressesaddresses
2 (0x02)is_reachabilityvirtual_flag, neighbors
6 (0x06)is_neighborsneighbors
8 (0x08)paddingdata
9 (0x09)lsp_entriesentries
10 (0x0a)authenticationauth_type, value
22 (0x16)extended_is_reachabilityneighbors
128 (0x80)ip_internal_reachabilityprefixes
129 (0x81)protocols_supportednlpids
130 (0x82)ip_external_reachabilityprefixes
132 (0x84)ip_interface_addressesaddresses
134 (0x86)te_router_idrouter_id
135 (0x87)extended_ip_reachabilityprefixes
137 (0x89)dynamic_hostnamehostname
232 (0xe8)ipv6_interface_addressesaddresses
236 (0xec)ipv6_reachabilityprefixes
240 (0xf0)p2p_adjacency_stateadjacency_state, extended_local_circuit_id, neighbor_system_id, neighbor_extended_local_circuit_id
242 (0xf2)router_capabilityrouter_id, flags, sub_tlvs

tlvs › area_addresses

フィールド型既定値Auto説明
addresseslist<struct> — PDU の残りすべて
tlvs › area_addresses › addresses

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
addressnsap

tlvs › is_reachability

フィールド型既定値Auto説明
virtual_flaguint(8)
neighborslist<struct> — PDU の残りすべて
tlvs › is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
neighbor_idbytes(7)

tlvs › is_neighbors

フィールド型既定値Auto説明
neighborslist<mac> — PDU の残りすべて

tlvs › padding

フィールド型既定値Auto説明
databytes — PDU の残りすべて

tlvs › lsp_entries

フィールド型既定値Auto説明
entrieslist<struct> — PDU の残りすべて
tlvs › lsp_entries › entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
remaining_lifetimeuint(16)
lsp_idbytes(8)
sequence_numberuint(32)
checksumuint(16)

tlvs › authentication

フィールド型既定値Auto説明
auth_typeenum(8)
valuebytes — PDU の残りすべて
tlvs › authentication › auth_type
値名前
1 (0x01)cleartext
54 (0x36)hmac_md5

tlvs › extended_is_reachability

フィールド型既定値Auto説明
neighborslist<struct> — PDU の残りすべて
tlvs › extended_is_reachability › neighbors

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
neighbor_idbytes(7)
metricuint(24)
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット
tlvs › extended_is_reachability › neighbors › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
3 (0x03)admin_groupvalue
4 (0x04)link_idslocal_id, remote_id
6 (0x06)ipv4_interface_addressaddress
8 (0x08)ipv4_neighbor_addressaddress
9 (0x09)max_link_bandwidthvalue
10 (0x0a)max_reservable_bandwidthvalue
11 (0x0b)unreserved_bandwidthvalues
18 (0x12)te_default_metricvalue
31 (0x1f)adj_sidflags, weight, sid
32 (0x20)lan_adj_sidflags, weight, neighbor_id, sid

tlvs › extended_is_reachability › neighbors › sub_tlvs › admin_group

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › link_ids

フィールド型既定値Auto説明
local_iduint(32)
remote_iduint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_interface_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › ipv4_neighbor_address

フィールド型既定値Auto説明
addressipv4

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_link_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › max_reservable_bandwidth

フィールド型既定値Auto説明
valueuint(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › unreserved_bandwidth

フィールド型既定値Auto説明
valuesbytes(32)

tlvs › extended_is_reachability › neighbors › sub_tlvs › te_default_metric

フィールド型既定値Auto説明
valueuint(24)

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid

フィールド型既定値Auto説明
flagsflags(8)
weightuint(8)
neighbor_idbytes(6)
sidbytes — PDU の残りすべて

tlvs › extended_is_reachability › neighbors › sub_tlvs › lan_adj_sid › flags

ビットマスク名前
7128 (0x80)f
664 (0x40)b
532 (0x20)v
416 (0x10)l
38 (0x08)s
24 (0x04)p

tlvs › ip_internal_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_internal_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › protocols_supported

フィールド型既定値Auto説明
nlpidslist<enum(8)> — PDU の残りすべて
tlvs › protocols_supported › nlpids
値名前
129 (0x81)clnp
142 (0x8e)ipv6
204 (0xcc)ipv4

tlvs › ip_external_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ip_external_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
default_metricuint(8)10
delay_metricuint(8)128
expense_metricuint(8)128
error_metricuint(8)128
ip_addressipv4
subnet_maskipv4

tlvs › ip_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

tlvs › te_router_id

フィールド型既定値Auto説明
router_idipv4

tlvs › extended_ip_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › extended_ip_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
prefix_lengthuint(6)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › extended_ip_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › extended_ip_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › dynamic_hostname

フィールド型既定値Auto説明
hostnamebytes — PDU の残りすべて

tlvs › ipv6_interface_addresses

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

tlvs › ipv6_reachability

フィールド型既定値Auto説明
prefixeslist<struct> — PDU の残りすべて
tlvs › ipv6_reachability › prefixes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
metricuint(32)
up_downuint(1)
externaluint(1)
sub_tlvs_presentuint(1)sub_tlv_block の要素数
reserveduint(5)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット
sub_tlv_blocklist<struct> — sub_tlvs_present 個の要素
tlvs › ipv6_reachability › prefixes › sub_tlv_block

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
sub_tlvs_lengthuint(8)sub_tlvs のオクテット長
sub_tlvstlv — sub_tlvs_length オクテット

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)admin_tagtags
2 (0x02)admin_tag64tags
3 (0x03)prefix_sidflags, algorithm, sid
4 (0x04)prefix_attribute_flagsflags

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag

フィールド型既定値Auto説明
tagslist<uint(32)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › admin_tag64

フィールド型既定値Auto説明
tagslist<uint(64)> — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid

フィールド型既定値Auto説明
flagsflags(8)
algorithmuint(8)
sidbytes — PDU の残りすべて

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_sid › flags

ビットマスク名前
7128 (0x80)r
664 (0x40)n
532 (0x20)p
416 (0x10)e
38 (0x08)v
24 (0x04)l

tlvs › ipv6_reachability › prefixes › sub_tlv_block › sub_tlvs › prefix_attribute_flags

フィールド型既定値Auto説明
flagsbytes — PDU の残りすべて

tlvs › p2p_adjacency_state

フィールド型既定値Auto説明
adjacency_stateenum(8)
extended_local_circuit_iduint(32)
neighbor_system_idbytes(6)
neighbor_extended_local_circuit_iduint(32)
tlvs › p2p_adjacency_state › adjacency_state
値名前
0 (0x00)up
1 (0x01)initializing
2 (0x02)down

tlvs › router_capability

フィールド型既定値Auto説明
router_idipv4
flagsflags(8)
sub_tlvstlv — PDU の残りすべて
tlvs › router_capability › flags
ビットマスク名前
01 (0x01)s
12 (0x02)d
tlvs › router_capability › sub_tlvs
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)sr_capabilitiesflags, ranges
19 (0x13)sr_algorithmsalgorithms
tlvs › router_capability › sub_tlvs › sr_capabilities
フィールド型既定値Auto説明
flagsflags(8)
rangesbytes — PDU の残りすべて

tlvs › router_capability › sub_tlvs › sr_capabilities › flags

ビットマスク名前
7128 (0x80)i
664 (0x40)v
tlvs › router_capability › sub_tlvs › sr_algorithms
フィールド型既定値Auto説明
algorithmslist<uint(8)> — PDU の残りすべて

制約

レベル規則
警告header_length が 17

サンプルテンプレート

  • isis-l2-psnp — templates/protocols/routing/isis-l2-psnp.wpg.yaml

TCP (tcp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol6 (0x06)
ipv6next_header6 (0x06)
ipv6_hopoptsnext_header6 (0x06)
ipv6_routenext_header6 (0x06)
ipv6_srhnext_header6 (0x06)
ipv6_fragnext_header6 (0x06)
ipv6_dstoptsnext_header6 (0x06)

フィールド

フィールド型既定値Auto説明
src_portuint(16)49152送信元ポート。
dst_portuint(16)80宛先ポート。次レイヤを選択する (179 = BGP、646 = LDP、3868 = Diameter、5060 = SIP)。
sequint(32)0先頭データオクテットのシーケンス番号 (SYN では初期シーケンス番号)。
ackuint(32)0確認応答番号。ACK フラグが立っているとき有効。
data_offsetuint(4)ヘッダの長さ (32 ビットワード単位)ヘッダ長 (32 ビット語単位、5〜15。Auto、オプションを含む)。
reserveduint(4)0予約ビット。0。
flagsflags(8)0x2制御フラグ: CWR、ECE、URG、ACK、PSH、RST、SYN、FIN (既定は SYN)。
windowuint(16)65535受信ウィンドウ (バイト。ウィンドウスケールオプションで拡大)。
checksumuint(16)ヘッダとそれ以降すべてに対する疑似ヘッダ付きインターネットチェックサムIPv4 / IPv6 擬似ヘッダを含むインターネットチェックサム (Auto)。
urgent_ptruint(16)0緊急ポインタ。URG フラグが立っているとき有効。
optionstlv — data_offset * 4 - 20 オクテットTCP オプション (TLV: EOL、NOP、MSS、ウィンドウスケール、SACK 許可、SACK、タイムスタンプ)。
paddingpadding(4)オプションを 32 ビット境界に揃えるゼロパディング (Auto)。

flags

ビットマスク名前
7128 (0x80)cwr
664 (0x40)ece
532 (0x20)urg
416 (0x10)ack
38 (0x08)psh
24 (0x04)rst
12 (0x02)syn
01 (0x01)fin

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)eol(タイプのみ。長さと値なし)
1 (0x01)nop(タイプのみ。長さと値なし)
2 (0x02)mssvalue
3 (0x03)wsshift
4 (0x04)sack_permitted
5 (0x05)sackblocks
8 (0x08)timestampstsval, tsecr

options › mss

フィールド型既定値Auto説明
valueuint(16)

options › ws

フィールド型既定値Auto説明
shiftuint(8)

options › sack

フィールド型既定値Auto説明
blockslist<struct> — PDU の残りすべて
options › sack › blocks

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
leftuint(32)
rightuint(32)

options › timestamps

フィールド型既定値Auto説明
tsvaluint(32)
tsecruint(32)

次レイヤ

次レイヤは dst_port で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。 デコード時は、最初のフィールドがどの項目にも一致しなければ src_port も参照します。

値プロトコル備考
179 (0x00b3)bgp
646 (0x0286)ldp
3868 (0x0f1c)diameter
5060 (0x13c4)sip

制約

レベル規則
エラーdata_offset が 5..15 の範囲

サンプルテンプレート

UDP (udp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol17 (0x11)
ipv6next_header17 (0x11)
ipv6_hopoptsnext_header17 (0x11)
ipv6_routenext_header17 (0x11)
ipv6_srhnext_header17 (0x11)
ipv6_fragnext_header17 (0x11)
ipv6_dstoptsnext_header17 (0x11)

フィールド

フィールド型既定値Auto説明
src_portuint(16)49152送信元ポート。
dst_portuint(16)9宛先ポート。Auto のとき次レイヤを選択する (53 = DNS、67 / 68 = DHCP、4789 = VXLAN など)。
lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダとペイロードの長さ (バイト、Auto)。
checksumuint(16)ヘッダとそれ以降すべてに対する疑似ヘッダ付きインターネットチェックサム; 計算結果の 0 は全ビット 1 で送出IPv4 / IPv6 擬似ヘッダを含むインターネットチェックサム (Auto。0 は 0xffff になる)。

次レイヤ

次レイヤは dst_port で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。 デコード時は、最初のフィールドがどの項目にも一致しなければ src_port も参照します。

値プロトコル備考
520 (0x0208)rip
521 (0x0209)ripng
1701 (0x06a5)l2tpv2
1985 (0x07c1)hsrp
1985 (0x07c1)hsrpv2
2029 (0x07ed)hsrpv2
2152 (0x0868)gtpu
3222 (0x0c96)glbp
4789 (0x12b5)vxlan
6081 (0x17c1)geneve
6635 (0x19eb)mpls
9899 (0x26ab)sctp
646 (0x0286)ldp
3784 (0x0ec8)bfd
4784 (0x12b0)bfd
6784 (0x1a80)bfd
2123 (0x084b)gtpv2
5060 (0x13c4)sip
5004 (0x138c)rtp
5005 (0x138d)rtcp
53 (0x0035)dns
67 (0x0043)dhcpv4
68 (0x0044)dhcpv4
69 (0x0045)tftp
123 (0x007b)ntp
161 (0x00a1)snmp
162 (0x00a2)snmp
514 (0x0202)syslog
546 (0x0222)dhcpv6
547 (0x0223)dhcpv6
1812 (0x0714)radius
1813 (0x0715)radius
319 (0x013f)ptp
319 (0x013f)ptp_sync
319 (0x013f)ptp_delay_req
319 (0x013f)ptp_pdelay_req
319 (0x013f)ptp_pdelay_resp
320 (0x0140)ptp
320 (0x0140)ptp_follow_up
320 (0x0140)ptp_delay_resp
320 (0x0140)ptp_pdelay_resp_follow_up
320 (0x0140)ptp_announce
320 (0x0140)ptp_signaling
320 (0x0140)ptp_management

制約

レベル規則
警告ヘッダとペイロードが 8 オクテット以上

サンプルテンプレート

GTP-U (gtpu)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port2152 (0x0868)

フィールド

フィールド型既定値Auto説明
versionuint(3)1GTP バージョン (1)。
protocol_typeuint(1)1プロトコルタイプ (1 = GTP、0 = GTP’)。
spareuint(1)0
e_flaguint(1)0拡張ヘッダ存在フラグ。
s_flaguint(1)0シーケンス番号存在フラグ。
pn_flaguint(1)0N-PDU 番号存在フラグ。
message_typeenum(8)255 (g_pdu)GTP-U メッセージ種別 (255 = G-PDU)。
lengthuint(16)ペイロードの長さ (オクテット単位)必須ヘッダ以降のペイロード長 (オクテット、自動)。
teiduint(32)0トンネルエンドポイント識別子。

message_type

値名前
1 (0x01)echo_request
2 (0x02)echo_response
26 (0x1a)error_indication
31 (0x1f)supported_extension_headers
254 (0xfe)end_marker
255 (0xff)g_pdu

次レイヤ

次レイヤは message_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

message_type = 255 (0xff) のときのペイロード先頭 4 ビット

値プロトコル
4ipv4
6ipv6

サンプルテンプレート

  • gtpu-ipv4 — templates/protocols/encap/gtpu-ipv4.wpg.yaml

L2TPv2 (l2tpv2)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port1701 (0x06a5)

フィールド

フィールド型既定値Auto説明
flagsflags(16)0x2L2TP フラグとバージョン (type、length、sequence、offset、priority ビット)。
bodybytes — PDU の残りすべて""L2TP ボディ (存在条件付きフィールド + ペイロード)。不透明オクテット。

flags

ビットマスク名前
1532768 (0x8000)type_control
1416384 (0x4000)length_present
9512 (0x0200)sequence_present
7128 (0x0080)offset_present
38 (0x0008)priority

サンプルテンプレート

  • l2tpv2 — templates/protocols/encap/l2tpv2.wpg.yaml

L2TPv3 (l2tpv3)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol115 (0x73)
ipv6next_header115 (0x73)
ipv6_hopoptsnext_header115 (0x73)
ipv6_routenext_header115 (0x73)
ipv6_srhnext_header115 (0x73)
ipv6_fragnext_header115 (0x73)
ipv6_dstoptsnext_header115 (0x73)

フィールド

フィールド型既定値Auto説明
session_iduint(32)0L2TPv3 セッション ID。
bodybytes — PDU の残りすべて""L2TP ボディ (存在条件付きフィールド + ペイロード)。不透明オクテット。

サンプルテンプレート

  • l2tpv3 — templates/protocols/encap/l2tpv3.wpg.yaml

SCTP (sctp)

  • レイヤ: L4 (トランスポート)
  • ヘッダ: 可変長
  • 補足: SCTP (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol132 (0x84)
udpdst_port / src_port9899 (0x26ab)
ipv6next_header132 (0x84)
ipv6_hopoptsnext_header132 (0x84)
ipv6_routenext_header132 (0x84)
ipv6_srhnext_header132 (0x84)
ipv6_fragnext_header132 (0x84)
ipv6_dstoptsnext_header132 (0x84)

フィールド

フィールド型既定値Auto説明
src_portuint(16)49152送信元ポート。
dst_portuint(16)9宛先ポート。
verification_taguint(32)0検証タグ: 相手の Initiate Tag(INIT を含むパケットでは 0)。
checksumuint(32)ヘッダとそれ以降すべてに対するCRC-32Cこのフィールドを 0 とした SCTP パケット全体の CRC32c(Auto)。下位オクテットから送出。
chunkstlv — PDU の残りすべて1 要素チャンク(8 ビット型、8 ビットフラグ、4 オクテットのヘッダを含む 16 ビット長、4 オクテット境界までゼロ詰め): DATA、INIT、INIT ACK、SACK、HEARTBEAT、ABORT、SHUTDOWN、ERROR、COOKIE ECHO / ACK、AUTH、I-DATA、ASCONF、RE-CONFIG、FORWARD TSN、PAD。長さ・詰め物・SACK の件数は Auto。

chunks

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 値の先頭 1 オクテットはタイプと長さの間にあります。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)dataflags, tsn, stream_identifier, stream_sequence_number, payload_protocol_identifier, user_data
1 (0x01)initflags, initiate_tag, a_rwnd, outbound_streams, inbound_streams, initial_tsn, parameters
2 (0x02)init_ackflags, initiate_tag, a_rwnd, outbound_streams, inbound_streams, initial_tsn, parameters
3 (0x03)sackflags, cumulative_tsn_ack, a_rwnd, number_of_gap_ack_blocks, number_of_duplicate_tsns, gap_ack_blocks, duplicate_tsns
4 (0x04)heartbeatflags, parameters
5 (0x05)heartbeat_ackflags, parameters
6 (0x06)abortflags, causes
7 (0x07)shutdownflags, cumulative_tsn_ack
8 (0x08)shutdown_ackflags
9 (0x09)errorflags, causes
10 (0x0a)cookie_echoflags, cookie
11 (0x0b)cookie_ackflags
14 (0x0e)shutdown_completeflags
15 (0x0f)authflags, shared_key_identifier, hmac_identifier, hmac
64 (0x40)i_dataflags, tsn, stream_identifier, reserved, message_identifier, ppid_or_fsn, user_data
128 (0x80)asconf_ackflags, serial_number, parameters
130 (0x82)re_configflags, parameters
132 (0x84)padflags, padding
192 (0xc0)forward_tsnflags, new_cumulative_tsn, streams
193 (0xc1)asconfflags, serial_number, parameters

chunks › data

フィールド型既定値Auto説明
flagsflags(8)0x3
tsnuint(32)1
stream_identifieruint(16)
stream_sequence_numberuint(16)
payload_protocol_identifieruint(32)
user_databytes — PDU の残りすべて00 00 00 00
chunks › data › flags
ビットマスク名前
38 (0x08)i
24 (0x04)u
12 (0x02)b
01 (0x01)e

chunks › init

フィールド型既定値Auto説明
flagsuint(8)0
initiate_taguint(32)1
a_rwnduint(32)106496
outbound_streamsuint(16)10
inbound_streamsuint(16)65535
initial_tsnuint(32)1
parameterstlv — PDU の残りすべて[]
chunks › init › parameters
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress
1 (0x0001)heartbeat_infoinfo
7 (0x0007)state_cookiecookie
8 (0x0008)unrecognized_parameterparameter
9 (0x0009)cookie_preservativeincrement_ms
11 (0x000b)host_name_addresshost_name
12 (0x000c)supported_address_typestypes
13 (0x000d)outgoing_ssn_reset_requestrequest_sequence, response_sequence, last_tsn, streams
14 (0x000e)incoming_ssn_reset_requestrequest_sequence, streams
15 (0x000f)ssn_tsn_reset_requestrequest_sequence
16 (0x0010)reconfiguration_responseresponse_sequence, result, tsns
17 (0x0011)add_outgoing_streams_requestrequest_sequence, number_of_new_streams, reserved
18 (0x0012)add_incoming_streams_requestrequest_sequence, number_of_new_streams, reserved
32768 (0x8000)ecn_capable
32770 (0x8002)randomrandom
32771 (0x8003)chunk_listchunk_types
32772 (0x8004)requested_hmac_algorithmhmac_identifiers
32773 (0x8005)paddingpadding
32776 (0x8008)supported_extensionschunk_types
49152 (0xc000)forward_tsn_supported
49153 (0xc001)add_ip_addresscorrelation_id, address
49154 (0xc002)delete_ip_addresscorrelation_id, address
49155 (0xc003)error_cause_indicationcorrelation_id, causes
49156 (0xc004)set_primary_addresscorrelation_id, address
49157 (0xc005)success_indicationcorrelation_id
49158 (0xc006)adaptation_layer_indicationindication
chunks › init › parameters › ipv4_address
フィールド型既定値Auto説明
addressipv4
chunks › init › parameters › ipv6_address
フィールド型既定値Auto説明
addressipv6
chunks › init › parameters › heartbeat_info
フィールド型既定値Auto説明
infobytes — PDU の残りすべて
フィールド型既定値Auto説明
cookiebytes — PDU の残りすべて
chunks › init › parameters › unrecognized_parameter
フィールド型既定値Auto説明
parameterbytes — PDU の残りすべて
フィールド型既定値Auto説明
increment_msuint(32)
chunks › init › parameters › host_name_address
フィールド型既定値Auto説明
host_namebytes — PDU の残りすべて
chunks › init › parameters › supported_address_types
フィールド型既定値Auto説明
typeslist<enum(16)> — PDU の残りすべて

chunks › init › parameters › supported_address_types › types

値名前
5 (0x0005)ipv4
6 (0x0006)ipv6
11 (0x000b)host_name
chunks › init › parameters › outgoing_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
response_sequenceuint(32)
last_tsnuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › init › parameters › incoming_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › init › parameters › ssn_tsn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
chunks › init › parameters › reconfiguration_response
フィールド型既定値Auto説明
response_sequenceuint(32)
resultenum(32)
tsnsbytes — PDU の残りすべて

chunks › init › parameters › reconfiguration_response › result

値名前
0 (0x00000000)success_nothing_to_do
1 (0x00000001)success_performed
2 (0x00000002)denied
3 (0x00000003)error_wrong_ssn
4 (0x00000004)error_request_already_in_progress
5 (0x00000005)error_bad_sequence_number
6 (0x00000006)in_progress
chunks › init › parameters › add_outgoing_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › init › parameters › add_incoming_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › init › parameters › random
フィールド型既定値Auto説明
randombytes — PDU の残りすべて
chunks › init › parameters › chunk_list
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › init › parameters › requested_hmac_algorithm
フィールド型既定値Auto説明
hmac_identifierslist<uint(16)> — PDU の残りすべて
chunks › init › parameters › padding
フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて
chunks › init › parameters › supported_extensions
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › init › parameters › add_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › init › parameters › add_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › init › parameters › add_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › init › parameters › add_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › init › parameters › delete_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › init › parameters › delete_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › init › parameters › delete_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › init › parameters › delete_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › init › parameters › error_cause_indication
フィールド型既定値Auto説明
correlation_iduint(32)
causestlv — PDU の残りすべて

chunks › init › parameters › error_cause_indication › causes

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier

chunks › init › parameters › error_cause_indication › causes › invalid_stream_identifier

フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0

chunks › init › parameters › error_cause_indication › causes › missing_mandatory_parameter

フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素

chunks › init › parameters › error_cause_indication › causes › stale_cookie

フィールド型既定値Auto説明
staleness_usuint(32)

chunks › init › parameters › error_cause_indication › causes › unresolvable_address

フィールド型既定値Auto説明
addressbytes — PDU の残りすべて

chunks › init › parameters › error_cause_indication › causes › unrecognized_chunk_type

フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて

chunks › init › parameters › error_cause_indication › causes › unrecognized_parameters

フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて

chunks › init › parameters › error_cause_indication › causes › no_user_data

フィールド型既定値Auto説明
tsnuint(32)

chunks › init › parameters › error_cause_indication › causes › restart_with_new_addresses

フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて

chunks › init › parameters › error_cause_indication › causes › user_initiated_abort

フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて

chunks › init › parameters › error_cause_indication › causes › protocol_violation

フィールド型既定値Auto説明
informationbytes — PDU の残りすべて

chunks › init › parameters › error_cause_indication › causes › unsupported_hmac_identifier

フィールド型既定値Auto説明
hmac_identifieruint(16)
chunks › init › parameters › set_primary_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › init › parameters › set_primary_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › init › parameters › set_primary_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › init › parameters › set_primary_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › init › parameters › success_indication
フィールド型既定値Auto説明
correlation_iduint(32)
chunks › init › parameters › adaptation_layer_indication
フィールド型既定値Auto説明
indicationuint(32)

chunks › init_ack

フィールド型既定値Auto説明
flagsuint(8)0
initiate_taguint(32)2
a_rwnduint(32)106496
outbound_streamsuint(16)10
inbound_streamsuint(16)65535
initial_tsnuint(32)2
parameterstlv — PDU の残りすべて1 要素
chunks › init_ack › parameters
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress
1 (0x0001)heartbeat_infoinfo
7 (0x0007)state_cookiecookie
8 (0x0008)unrecognized_parameterparameter
9 (0x0009)cookie_preservativeincrement_ms
11 (0x000b)host_name_addresshost_name
12 (0x000c)supported_address_typestypes
13 (0x000d)outgoing_ssn_reset_requestrequest_sequence, response_sequence, last_tsn, streams
14 (0x000e)incoming_ssn_reset_requestrequest_sequence, streams
15 (0x000f)ssn_tsn_reset_requestrequest_sequence
16 (0x0010)reconfiguration_responseresponse_sequence, result, tsns
17 (0x0011)add_outgoing_streams_requestrequest_sequence, number_of_new_streams, reserved
18 (0x0012)add_incoming_streams_requestrequest_sequence, number_of_new_streams, reserved
32768 (0x8000)ecn_capable
32770 (0x8002)randomrandom
32771 (0x8003)chunk_listchunk_types
32772 (0x8004)requested_hmac_algorithmhmac_identifiers
32773 (0x8005)paddingpadding
32776 (0x8008)supported_extensionschunk_types
49152 (0xc000)forward_tsn_supported
49153 (0xc001)add_ip_addresscorrelation_id, address
49154 (0xc002)delete_ip_addresscorrelation_id, address
49155 (0xc003)error_cause_indicationcorrelation_id, causes
49156 (0xc004)set_primary_addresscorrelation_id, address
49157 (0xc005)success_indicationcorrelation_id
49158 (0xc006)adaptation_layer_indicationindication
chunks › init_ack › parameters › ipv4_address
フィールド型既定値Auto説明
addressipv4
chunks › init_ack › parameters › ipv6_address
フィールド型既定値Auto説明
addressipv6
chunks › init_ack › parameters › heartbeat_info
フィールド型既定値Auto説明
infobytes — PDU の残りすべて
フィールド型既定値Auto説明
cookiebytes — PDU の残りすべて
chunks › init_ack › parameters › unrecognized_parameter
フィールド型既定値Auto説明
parameterbytes — PDU の残りすべて
フィールド型既定値Auto説明
increment_msuint(32)
chunks › init_ack › parameters › host_name_address
フィールド型既定値Auto説明
host_namebytes — PDU の残りすべて
chunks › init_ack › parameters › supported_address_types
フィールド型既定値Auto説明
typeslist<enum(16)> — PDU の残りすべて

chunks › init_ack › parameters › supported_address_types › types

値名前
5 (0x0005)ipv4
6 (0x0006)ipv6
11 (0x000b)host_name
chunks › init_ack › parameters › outgoing_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
response_sequenceuint(32)
last_tsnuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › init_ack › parameters › incoming_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › init_ack › parameters › ssn_tsn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
chunks › init_ack › parameters › reconfiguration_response
フィールド型既定値Auto説明
response_sequenceuint(32)
resultenum(32)
tsnsbytes — PDU の残りすべて

chunks › init_ack › parameters › reconfiguration_response › result

値名前
0 (0x00000000)success_nothing_to_do
1 (0x00000001)success_performed
2 (0x00000002)denied
3 (0x00000003)error_wrong_ssn
4 (0x00000004)error_request_already_in_progress
5 (0x00000005)error_bad_sequence_number
6 (0x00000006)in_progress
chunks › init_ack › parameters › add_outgoing_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › init_ack › parameters › add_incoming_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › init_ack › parameters › random
フィールド型既定値Auto説明
randombytes — PDU の残りすべて
chunks › init_ack › parameters › chunk_list
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › init_ack › parameters › requested_hmac_algorithm
フィールド型既定値Auto説明
hmac_identifierslist<uint(16)> — PDU の残りすべて
chunks › init_ack › parameters › padding
フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて
chunks › init_ack › parameters › supported_extensions
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › init_ack › parameters › add_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › init_ack › parameters › add_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › init_ack › parameters › add_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › init_ack › parameters › add_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › init_ack › parameters › delete_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › init_ack › parameters › delete_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › init_ack › parameters › delete_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › init_ack › parameters › delete_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › init_ack › parameters › error_cause_indication
フィールド型既定値Auto説明
correlation_iduint(32)
causestlv — PDU の残りすべて

chunks › init_ack › parameters › error_cause_indication › causes

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier

chunks › init_ack › parameters › error_cause_indication › causes › invalid_stream_identifier

フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0

chunks › init_ack › parameters › error_cause_indication › causes › missing_mandatory_parameter

フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素

chunks › init_ack › parameters › error_cause_indication › causes › stale_cookie

フィールド型既定値Auto説明
staleness_usuint(32)

chunks › init_ack › parameters › error_cause_indication › causes › unresolvable_address

フィールド型既定値Auto説明
addressbytes — PDU の残りすべて

chunks › init_ack › parameters › error_cause_indication › causes › unrecognized_chunk_type

フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて

chunks › init_ack › parameters › error_cause_indication › causes › unrecognized_parameters

フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて

chunks › init_ack › parameters › error_cause_indication › causes › no_user_data

フィールド型既定値Auto説明
tsnuint(32)

chunks › init_ack › parameters › error_cause_indication › causes › restart_with_new_addresses

フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて

chunks › init_ack › parameters › error_cause_indication › causes › user_initiated_abort

フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて

chunks › init_ack › parameters › error_cause_indication › causes › protocol_violation

フィールド型既定値Auto説明
informationbytes — PDU の残りすべて

chunks › init_ack › parameters › error_cause_indication › causes › unsupported_hmac_identifier

フィールド型既定値Auto説明
hmac_identifieruint(16)
chunks › init_ack › parameters › set_primary_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › init_ack › parameters › set_primary_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › init_ack › parameters › set_primary_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › init_ack › parameters › set_primary_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › init_ack › parameters › success_indication
フィールド型既定値Auto説明
correlation_iduint(32)
chunks › init_ack › parameters › adaptation_layer_indication
フィールド型既定値Auto説明
indicationuint(32)

chunks › sack

フィールド型既定値Auto説明
flagsuint(8)0
cumulative_tsn_ackuint(32)1
a_rwnduint(32)106496
number_of_gap_ack_blocksuint(16)gap_ack_blocks の要素数
number_of_duplicate_tsnsuint(16)duplicate_tsns の要素数
gap_ack_blockslist<struct> — number_of_gap_ack_blocks 個の要素
duplicate_tsnslist<uint(32)> — number_of_duplicate_tsns 個の要素
chunks › sack › gap_ack_blocks

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
startuint(16)
enduint(16)

chunks › heartbeat

フィールド型既定値Auto説明
flagsuint(8)0
parameterstlv — PDU の残りすべて
chunks › heartbeat › parameters
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress
1 (0x0001)heartbeat_infoinfo
7 (0x0007)state_cookiecookie
8 (0x0008)unrecognized_parameterparameter
9 (0x0009)cookie_preservativeincrement_ms
11 (0x000b)host_name_addresshost_name
12 (0x000c)supported_address_typestypes
13 (0x000d)outgoing_ssn_reset_requestrequest_sequence, response_sequence, last_tsn, streams
14 (0x000e)incoming_ssn_reset_requestrequest_sequence, streams
15 (0x000f)ssn_tsn_reset_requestrequest_sequence
16 (0x0010)reconfiguration_responseresponse_sequence, result, tsns
17 (0x0011)add_outgoing_streams_requestrequest_sequence, number_of_new_streams, reserved
18 (0x0012)add_incoming_streams_requestrequest_sequence, number_of_new_streams, reserved
32768 (0x8000)ecn_capable
32770 (0x8002)randomrandom
32771 (0x8003)chunk_listchunk_types
32772 (0x8004)requested_hmac_algorithmhmac_identifiers
32773 (0x8005)paddingpadding
32776 (0x8008)supported_extensionschunk_types
49152 (0xc000)forward_tsn_supported
49153 (0xc001)add_ip_addresscorrelation_id, address
49154 (0xc002)delete_ip_addresscorrelation_id, address
49155 (0xc003)error_cause_indicationcorrelation_id, causes
49156 (0xc004)set_primary_addresscorrelation_id, address
49157 (0xc005)success_indicationcorrelation_id
49158 (0xc006)adaptation_layer_indicationindication
chunks › heartbeat › parameters › ipv4_address
フィールド型既定値Auto説明
addressipv4
chunks › heartbeat › parameters › ipv6_address
フィールド型既定値Auto説明
addressipv6
chunks › heartbeat › parameters › heartbeat_info
フィールド型既定値Auto説明
infobytes — PDU の残りすべて
フィールド型既定値Auto説明
cookiebytes — PDU の残りすべて
chunks › heartbeat › parameters › unrecognized_parameter
フィールド型既定値Auto説明
parameterbytes — PDU の残りすべて
フィールド型既定値Auto説明
increment_msuint(32)
chunks › heartbeat › parameters › host_name_address
フィールド型既定値Auto説明
host_namebytes — PDU の残りすべて
chunks › heartbeat › parameters › supported_address_types
フィールド型既定値Auto説明
typeslist<enum(16)> — PDU の残りすべて

chunks › heartbeat › parameters › supported_address_types › types

値名前
5 (0x0005)ipv4
6 (0x0006)ipv6
11 (0x000b)host_name
chunks › heartbeat › parameters › outgoing_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
response_sequenceuint(32)
last_tsnuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › heartbeat › parameters › incoming_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › heartbeat › parameters › ssn_tsn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
chunks › heartbeat › parameters › reconfiguration_response
フィールド型既定値Auto説明
response_sequenceuint(32)
resultenum(32)
tsnsbytes — PDU の残りすべて

chunks › heartbeat › parameters › reconfiguration_response › result

値名前
0 (0x00000000)success_nothing_to_do
1 (0x00000001)success_performed
2 (0x00000002)denied
3 (0x00000003)error_wrong_ssn
4 (0x00000004)error_request_already_in_progress
5 (0x00000005)error_bad_sequence_number
6 (0x00000006)in_progress
chunks › heartbeat › parameters › add_outgoing_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › heartbeat › parameters › add_incoming_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › heartbeat › parameters › random
フィールド型既定値Auto説明
randombytes — PDU の残りすべて
chunks › heartbeat › parameters › chunk_list
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › heartbeat › parameters › requested_hmac_algorithm
フィールド型既定値Auto説明
hmac_identifierslist<uint(16)> — PDU の残りすべて
chunks › heartbeat › parameters › padding
フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて
chunks › heartbeat › parameters › supported_extensions
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › heartbeat › parameters › add_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › heartbeat › parameters › add_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › heartbeat › parameters › add_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › heartbeat › parameters › add_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › heartbeat › parameters › delete_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › heartbeat › parameters › delete_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › heartbeat › parameters › delete_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › heartbeat › parameters › delete_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › heartbeat › parameters › error_cause_indication
フィールド型既定値Auto説明
correlation_iduint(32)
causestlv — PDU の残りすべて

chunks › heartbeat › parameters › error_cause_indication › causes

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier

chunks › heartbeat › parameters › error_cause_indication › causes › invalid_stream_identifier

フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0

chunks › heartbeat › parameters › error_cause_indication › causes › missing_mandatory_parameter

フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素

chunks › heartbeat › parameters › error_cause_indication › causes › stale_cookie

フィールド型既定値Auto説明
staleness_usuint(32)

chunks › heartbeat › parameters › error_cause_indication › causes › unresolvable_address

フィールド型既定値Auto説明
addressbytes — PDU の残りすべて

chunks › heartbeat › parameters › error_cause_indication › causes › unrecognized_chunk_type

フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて

chunks › heartbeat › parameters › error_cause_indication › causes › unrecognized_parameters

フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて

chunks › heartbeat › parameters › error_cause_indication › causes › no_user_data

フィールド型既定値Auto説明
tsnuint(32)

chunks › heartbeat › parameters › error_cause_indication › causes › restart_with_new_addresses

フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて

chunks › heartbeat › parameters › error_cause_indication › causes › user_initiated_abort

フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて

chunks › heartbeat › parameters › error_cause_indication › causes › protocol_violation

フィールド型既定値Auto説明
informationbytes — PDU の残りすべて

chunks › heartbeat › parameters › error_cause_indication › causes › unsupported_hmac_identifier

フィールド型既定値Auto説明
hmac_identifieruint(16)
chunks › heartbeat › parameters › set_primary_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › heartbeat › parameters › set_primary_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › heartbeat › parameters › set_primary_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › heartbeat › parameters › set_primary_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › heartbeat › parameters › success_indication
フィールド型既定値Auto説明
correlation_iduint(32)
chunks › heartbeat › parameters › adaptation_layer_indication
フィールド型既定値Auto説明
indicationuint(32)

chunks › heartbeat_ack

フィールド型既定値Auto説明
flagsuint(8)0
parameterstlv — PDU の残りすべて
chunks › heartbeat_ack › parameters
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress
1 (0x0001)heartbeat_infoinfo
7 (0x0007)state_cookiecookie
8 (0x0008)unrecognized_parameterparameter
9 (0x0009)cookie_preservativeincrement_ms
11 (0x000b)host_name_addresshost_name
12 (0x000c)supported_address_typestypes
13 (0x000d)outgoing_ssn_reset_requestrequest_sequence, response_sequence, last_tsn, streams
14 (0x000e)incoming_ssn_reset_requestrequest_sequence, streams
15 (0x000f)ssn_tsn_reset_requestrequest_sequence
16 (0x0010)reconfiguration_responseresponse_sequence, result, tsns
17 (0x0011)add_outgoing_streams_requestrequest_sequence, number_of_new_streams, reserved
18 (0x0012)add_incoming_streams_requestrequest_sequence, number_of_new_streams, reserved
32768 (0x8000)ecn_capable
32770 (0x8002)randomrandom
32771 (0x8003)chunk_listchunk_types
32772 (0x8004)requested_hmac_algorithmhmac_identifiers
32773 (0x8005)paddingpadding
32776 (0x8008)supported_extensionschunk_types
49152 (0xc000)forward_tsn_supported
49153 (0xc001)add_ip_addresscorrelation_id, address
49154 (0xc002)delete_ip_addresscorrelation_id, address
49155 (0xc003)error_cause_indicationcorrelation_id, causes
49156 (0xc004)set_primary_addresscorrelation_id, address
49157 (0xc005)success_indicationcorrelation_id
49158 (0xc006)adaptation_layer_indicationindication
chunks › heartbeat_ack › parameters › ipv4_address
フィールド型既定値Auto説明
addressipv4
chunks › heartbeat_ack › parameters › ipv6_address
フィールド型既定値Auto説明
addressipv6
chunks › heartbeat_ack › parameters › heartbeat_info
フィールド型既定値Auto説明
infobytes — PDU の残りすべて
フィールド型既定値Auto説明
cookiebytes — PDU の残りすべて
chunks › heartbeat_ack › parameters › unrecognized_parameter
フィールド型既定値Auto説明
parameterbytes — PDU の残りすべて
フィールド型既定値Auto説明
increment_msuint(32)
chunks › heartbeat_ack › parameters › host_name_address
フィールド型既定値Auto説明
host_namebytes — PDU の残りすべて
chunks › heartbeat_ack › parameters › supported_address_types
フィールド型既定値Auto説明
typeslist<enum(16)> — PDU の残りすべて

chunks › heartbeat_ack › parameters › supported_address_types › types

値名前
5 (0x0005)ipv4
6 (0x0006)ipv6
11 (0x000b)host_name
chunks › heartbeat_ack › parameters › outgoing_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
response_sequenceuint(32)
last_tsnuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › heartbeat_ack › parameters › incoming_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › heartbeat_ack › parameters › ssn_tsn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
chunks › heartbeat_ack › parameters › reconfiguration_response
フィールド型既定値Auto説明
response_sequenceuint(32)
resultenum(32)
tsnsbytes — PDU の残りすべて

chunks › heartbeat_ack › parameters › reconfiguration_response › result

値名前
0 (0x00000000)success_nothing_to_do
1 (0x00000001)success_performed
2 (0x00000002)denied
3 (0x00000003)error_wrong_ssn
4 (0x00000004)error_request_already_in_progress
5 (0x00000005)error_bad_sequence_number
6 (0x00000006)in_progress
chunks › heartbeat_ack › parameters › add_outgoing_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › heartbeat_ack › parameters › add_incoming_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › heartbeat_ack › parameters › random
フィールド型既定値Auto説明
randombytes — PDU の残りすべて
chunks › heartbeat_ack › parameters › chunk_list
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › heartbeat_ack › parameters › requested_hmac_algorithm
フィールド型既定値Auto説明
hmac_identifierslist<uint(16)> — PDU の残りすべて
chunks › heartbeat_ack › parameters › padding
フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて
chunks › heartbeat_ack › parameters › supported_extensions
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › heartbeat_ack › parameters › add_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › heartbeat_ack › parameters › add_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › heartbeat_ack › parameters › add_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › heartbeat_ack › parameters › add_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › heartbeat_ack › parameters › delete_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › heartbeat_ack › parameters › delete_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › heartbeat_ack › parameters › delete_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › heartbeat_ack › parameters › delete_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › heartbeat_ack › parameters › error_cause_indication
フィールド型既定値Auto説明
correlation_iduint(32)
causestlv — PDU の残りすべて

chunks › heartbeat_ack › parameters › error_cause_indication › causes

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier

chunks › heartbeat_ack › parameters › error_cause_indication › causes › invalid_stream_identifier

フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0

chunks › heartbeat_ack › parameters › error_cause_indication › causes › missing_mandatory_parameter

フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素

chunks › heartbeat_ack › parameters › error_cause_indication › causes › stale_cookie

フィールド型既定値Auto説明
staleness_usuint(32)

chunks › heartbeat_ack › parameters › error_cause_indication › causes › unresolvable_address

フィールド型既定値Auto説明
addressbytes — PDU の残りすべて

chunks › heartbeat_ack › parameters › error_cause_indication › causes › unrecognized_chunk_type

フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて

chunks › heartbeat_ack › parameters › error_cause_indication › causes › unrecognized_parameters

フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて

chunks › heartbeat_ack › parameters › error_cause_indication › causes › no_user_data

フィールド型既定値Auto説明
tsnuint(32)

chunks › heartbeat_ack › parameters › error_cause_indication › causes › restart_with_new_addresses

フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて

chunks › heartbeat_ack › parameters › error_cause_indication › causes › user_initiated_abort

フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて

chunks › heartbeat_ack › parameters › error_cause_indication › causes › protocol_violation

フィールド型既定値Auto説明
informationbytes — PDU の残りすべて

chunks › heartbeat_ack › parameters › error_cause_indication › causes › unsupported_hmac_identifier

フィールド型既定値Auto説明
hmac_identifieruint(16)
chunks › heartbeat_ack › parameters › set_primary_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › heartbeat_ack › parameters › set_primary_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › heartbeat_ack › parameters › set_primary_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › heartbeat_ack › parameters › set_primary_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › heartbeat_ack › parameters › success_indication
フィールド型既定値Auto説明
correlation_iduint(32)
chunks › heartbeat_ack › parameters › adaptation_layer_indication
フィールド型既定値Auto説明
indicationuint(32)

chunks › abort

フィールド型既定値Auto説明
flagsflags(8)0x0
causestlv — PDU の残りすべて
chunks › abort › flags
ビットマスク名前
01 (0x01)t
chunks › abort › causes
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier
chunks › abort › causes › invalid_stream_identifier
フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0
chunks › abort › causes › missing_mandatory_parameter
フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素
フィールド型既定値Auto説明
staleness_usuint(32)
chunks › abort › causes › unresolvable_address
フィールド型既定値Auto説明
addressbytes — PDU の残りすべて
chunks › abort › causes › unrecognized_chunk_type
フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて
chunks › abort › causes › unrecognized_parameters
フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて
chunks › abort › causes › no_user_data
フィールド型既定値Auto説明
tsnuint(32)
chunks › abort › causes › restart_with_new_addresses
フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて
chunks › abort › causes › user_initiated_abort
フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて
chunks › abort › causes › protocol_violation
フィールド型既定値Auto説明
informationbytes — PDU の残りすべて
chunks › abort › causes › unsupported_hmac_identifier
フィールド型既定値Auto説明
hmac_identifieruint(16)

chunks › shutdown

フィールド型既定値Auto説明
flagsuint(8)0
cumulative_tsn_ackuint(32)

chunks › shutdown_ack

フィールド型既定値Auto説明
flagsuint(8)0

chunks › error

フィールド型既定値Auto説明
flagsuint(8)0
causestlv — PDU の残りすべて
chunks › error › causes
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier
chunks › error › causes › invalid_stream_identifier
フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0
chunks › error › causes › missing_mandatory_parameter
フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素
フィールド型既定値Auto説明
staleness_usuint(32)
chunks › error › causes › unresolvable_address
フィールド型既定値Auto説明
addressbytes — PDU の残りすべて
chunks › error › causes › unrecognized_chunk_type
フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて
chunks › error › causes › unrecognized_parameters
フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて
chunks › error › causes › no_user_data
フィールド型既定値Auto説明
tsnuint(32)
chunks › error › causes › restart_with_new_addresses
フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて
chunks › error › causes › user_initiated_abort
フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて
chunks › error › causes › protocol_violation
フィールド型既定値Auto説明
informationbytes — PDU の残りすべて
chunks › error › causes › unsupported_hmac_identifier
フィールド型既定値Auto説明
hmac_identifieruint(16)
フィールド型既定値Auto説明
flagsuint(8)0
cookiebytes — PDU の残りすべて
フィールド型既定値Auto説明
flagsuint(8)0

chunks › shutdown_complete

フィールド型既定値Auto説明
flagsflags(8)0x0
chunks › shutdown_complete › flags
ビットマスク名前
01 (0x01)t

chunks › auth

フィールド型既定値Auto説明
flagsuint(8)0
shared_key_identifieruint(16)
hmac_identifieruint(16)1
hmacbytes — PDU の残りすべて

chunks › i_data

フィールド型既定値Auto説明
flagsflags(8)0x3
tsnuint(32)1
stream_identifieruint(16)
reserveduint(16)0
message_identifieruint(32)
ppid_or_fsnuint(32)
user_databytes — PDU の残りすべて00 00 00 00
chunks › i_data › flags
ビットマスク名前
38 (0x08)i
24 (0x04)u
12 (0x02)b
01 (0x01)e

chunks › asconf_ack

フィールド型既定値Auto説明
flagsuint(8)0
serial_numberuint(32)
parameterstlv — PDU の残りすべて
chunks › asconf_ack › parameters
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress
1 (0x0001)heartbeat_infoinfo
7 (0x0007)state_cookiecookie
8 (0x0008)unrecognized_parameterparameter
9 (0x0009)cookie_preservativeincrement_ms
11 (0x000b)host_name_addresshost_name
12 (0x000c)supported_address_typestypes
13 (0x000d)outgoing_ssn_reset_requestrequest_sequence, response_sequence, last_tsn, streams
14 (0x000e)incoming_ssn_reset_requestrequest_sequence, streams
15 (0x000f)ssn_tsn_reset_requestrequest_sequence
16 (0x0010)reconfiguration_responseresponse_sequence, result, tsns
17 (0x0011)add_outgoing_streams_requestrequest_sequence, number_of_new_streams, reserved
18 (0x0012)add_incoming_streams_requestrequest_sequence, number_of_new_streams, reserved
32768 (0x8000)ecn_capable
32770 (0x8002)randomrandom
32771 (0x8003)chunk_listchunk_types
32772 (0x8004)requested_hmac_algorithmhmac_identifiers
32773 (0x8005)paddingpadding
32776 (0x8008)supported_extensionschunk_types
49152 (0xc000)forward_tsn_supported
49153 (0xc001)add_ip_addresscorrelation_id, address
49154 (0xc002)delete_ip_addresscorrelation_id, address
49155 (0xc003)error_cause_indicationcorrelation_id, causes
49156 (0xc004)set_primary_addresscorrelation_id, address
49157 (0xc005)success_indicationcorrelation_id
49158 (0xc006)adaptation_layer_indicationindication
chunks › asconf_ack › parameters › ipv4_address
フィールド型既定値Auto説明
addressipv4
chunks › asconf_ack › parameters › ipv6_address
フィールド型既定値Auto説明
addressipv6
chunks › asconf_ack › parameters › heartbeat_info
フィールド型既定値Auto説明
infobytes — PDU の残りすべて
フィールド型既定値Auto説明
cookiebytes — PDU の残りすべて
chunks › asconf_ack › parameters › unrecognized_parameter
フィールド型既定値Auto説明
parameterbytes — PDU の残りすべて
フィールド型既定値Auto説明
increment_msuint(32)
chunks › asconf_ack › parameters › host_name_address
フィールド型既定値Auto説明
host_namebytes — PDU の残りすべて
chunks › asconf_ack › parameters › supported_address_types
フィールド型既定値Auto説明
typeslist<enum(16)> — PDU の残りすべて

chunks › asconf_ack › parameters › supported_address_types › types

値名前
5 (0x0005)ipv4
6 (0x0006)ipv6
11 (0x000b)host_name
chunks › asconf_ack › parameters › outgoing_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
response_sequenceuint(32)
last_tsnuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › asconf_ack › parameters › incoming_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › asconf_ack › parameters › ssn_tsn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
chunks › asconf_ack › parameters › reconfiguration_response
フィールド型既定値Auto説明
response_sequenceuint(32)
resultenum(32)
tsnsbytes — PDU の残りすべて

chunks › asconf_ack › parameters › reconfiguration_response › result

値名前
0 (0x00000000)success_nothing_to_do
1 (0x00000001)success_performed
2 (0x00000002)denied
3 (0x00000003)error_wrong_ssn
4 (0x00000004)error_request_already_in_progress
5 (0x00000005)error_bad_sequence_number
6 (0x00000006)in_progress
chunks › asconf_ack › parameters › add_outgoing_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › asconf_ack › parameters › add_incoming_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › asconf_ack › parameters › random
フィールド型既定値Auto説明
randombytes — PDU の残りすべて
chunks › asconf_ack › parameters › chunk_list
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › asconf_ack › parameters › requested_hmac_algorithm
フィールド型既定値Auto説明
hmac_identifierslist<uint(16)> — PDU の残りすべて
chunks › asconf_ack › parameters › padding
フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて
chunks › asconf_ack › parameters › supported_extensions
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › asconf_ack › parameters › add_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › asconf_ack › parameters › add_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › asconf_ack › parameters › add_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › asconf_ack › parameters › add_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › asconf_ack › parameters › delete_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › asconf_ack › parameters › delete_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › asconf_ack › parameters › delete_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › asconf_ack › parameters › delete_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › asconf_ack › parameters › error_cause_indication
フィールド型既定値Auto説明
correlation_iduint(32)
causestlv — PDU の残りすべて

chunks › asconf_ack › parameters › error_cause_indication › causes

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier

chunks › asconf_ack › parameters › error_cause_indication › causes › invalid_stream_identifier

フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0

chunks › asconf_ack › parameters › error_cause_indication › causes › missing_mandatory_parameter

フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素

chunks › asconf_ack › parameters › error_cause_indication › causes › stale_cookie

フィールド型既定値Auto説明
staleness_usuint(32)

chunks › asconf_ack › parameters › error_cause_indication › causes › unresolvable_address

フィールド型既定値Auto説明
addressbytes — PDU の残りすべて

chunks › asconf_ack › parameters › error_cause_indication › causes › unrecognized_chunk_type

フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて

chunks › asconf_ack › parameters › error_cause_indication › causes › unrecognized_parameters

フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて

chunks › asconf_ack › parameters › error_cause_indication › causes › no_user_data

フィールド型既定値Auto説明
tsnuint(32)

chunks › asconf_ack › parameters › error_cause_indication › causes › restart_with_new_addresses

フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて

chunks › asconf_ack › parameters › error_cause_indication › causes › user_initiated_abort

フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて

chunks › asconf_ack › parameters › error_cause_indication › causes › protocol_violation

フィールド型既定値Auto説明
informationbytes — PDU の残りすべて

chunks › asconf_ack › parameters › error_cause_indication › causes › unsupported_hmac_identifier

フィールド型既定値Auto説明
hmac_identifieruint(16)
chunks › asconf_ack › parameters › set_primary_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › asconf_ack › parameters › set_primary_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › asconf_ack › parameters › set_primary_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › asconf_ack › parameters › set_primary_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › asconf_ack › parameters › success_indication
フィールド型既定値Auto説明
correlation_iduint(32)
chunks › asconf_ack › parameters › adaptation_layer_indication
フィールド型既定値Auto説明
indicationuint(32)

chunks › re_config

フィールド型既定値Auto説明
flagsuint(8)0
parameterstlv — PDU の残りすべて
chunks › re_config › parameters
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress
1 (0x0001)heartbeat_infoinfo
7 (0x0007)state_cookiecookie
8 (0x0008)unrecognized_parameterparameter
9 (0x0009)cookie_preservativeincrement_ms
11 (0x000b)host_name_addresshost_name
12 (0x000c)supported_address_typestypes
13 (0x000d)outgoing_ssn_reset_requestrequest_sequence, response_sequence, last_tsn, streams
14 (0x000e)incoming_ssn_reset_requestrequest_sequence, streams
15 (0x000f)ssn_tsn_reset_requestrequest_sequence
16 (0x0010)reconfiguration_responseresponse_sequence, result, tsns
17 (0x0011)add_outgoing_streams_requestrequest_sequence, number_of_new_streams, reserved
18 (0x0012)add_incoming_streams_requestrequest_sequence, number_of_new_streams, reserved
32768 (0x8000)ecn_capable
32770 (0x8002)randomrandom
32771 (0x8003)chunk_listchunk_types
32772 (0x8004)requested_hmac_algorithmhmac_identifiers
32773 (0x8005)paddingpadding
32776 (0x8008)supported_extensionschunk_types
49152 (0xc000)forward_tsn_supported
49153 (0xc001)add_ip_addresscorrelation_id, address
49154 (0xc002)delete_ip_addresscorrelation_id, address
49155 (0xc003)error_cause_indicationcorrelation_id, causes
49156 (0xc004)set_primary_addresscorrelation_id, address
49157 (0xc005)success_indicationcorrelation_id
49158 (0xc006)adaptation_layer_indicationindication
chunks › re_config › parameters › ipv4_address
フィールド型既定値Auto説明
addressipv4
chunks › re_config › parameters › ipv6_address
フィールド型既定値Auto説明
addressipv6
chunks › re_config › parameters › heartbeat_info
フィールド型既定値Auto説明
infobytes — PDU の残りすべて
フィールド型既定値Auto説明
cookiebytes — PDU の残りすべて
chunks › re_config › parameters › unrecognized_parameter
フィールド型既定値Auto説明
parameterbytes — PDU の残りすべて
フィールド型既定値Auto説明
increment_msuint(32)
chunks › re_config › parameters › host_name_address
フィールド型既定値Auto説明
host_namebytes — PDU の残りすべて
chunks › re_config › parameters › supported_address_types
フィールド型既定値Auto説明
typeslist<enum(16)> — PDU の残りすべて

chunks › re_config › parameters › supported_address_types › types

値名前
5 (0x0005)ipv4
6 (0x0006)ipv6
11 (0x000b)host_name
chunks › re_config › parameters › outgoing_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
response_sequenceuint(32)
last_tsnuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › re_config › parameters › incoming_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › re_config › parameters › ssn_tsn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
chunks › re_config › parameters › reconfiguration_response
フィールド型既定値Auto説明
response_sequenceuint(32)
resultenum(32)
tsnsbytes — PDU の残りすべて

chunks › re_config › parameters › reconfiguration_response › result

値名前
0 (0x00000000)success_nothing_to_do
1 (0x00000001)success_performed
2 (0x00000002)denied
3 (0x00000003)error_wrong_ssn
4 (0x00000004)error_request_already_in_progress
5 (0x00000005)error_bad_sequence_number
6 (0x00000006)in_progress
chunks › re_config › parameters › add_outgoing_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › re_config › parameters › add_incoming_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › re_config › parameters › random
フィールド型既定値Auto説明
randombytes — PDU の残りすべて
chunks › re_config › parameters › chunk_list
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › re_config › parameters › requested_hmac_algorithm
フィールド型既定値Auto説明
hmac_identifierslist<uint(16)> — PDU の残りすべて
chunks › re_config › parameters › padding
フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて
chunks › re_config › parameters › supported_extensions
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › re_config › parameters › add_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › re_config › parameters › add_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › re_config › parameters › add_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › re_config › parameters › add_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › re_config › parameters › delete_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › re_config › parameters › delete_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › re_config › parameters › delete_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › re_config › parameters › delete_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › re_config › parameters › error_cause_indication
フィールド型既定値Auto説明
correlation_iduint(32)
causestlv — PDU の残りすべて

chunks › re_config › parameters › error_cause_indication › causes

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier

chunks › re_config › parameters › error_cause_indication › causes › invalid_stream_identifier

フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0

chunks › re_config › parameters › error_cause_indication › causes › missing_mandatory_parameter

フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素

chunks › re_config › parameters › error_cause_indication › causes › stale_cookie

フィールド型既定値Auto説明
staleness_usuint(32)

chunks › re_config › parameters › error_cause_indication › causes › unresolvable_address

フィールド型既定値Auto説明
addressbytes — PDU の残りすべて

chunks › re_config › parameters › error_cause_indication › causes › unrecognized_chunk_type

フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて

chunks › re_config › parameters › error_cause_indication › causes › unrecognized_parameters

フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて

chunks › re_config › parameters › error_cause_indication › causes › no_user_data

フィールド型既定値Auto説明
tsnuint(32)

chunks › re_config › parameters › error_cause_indication › causes › restart_with_new_addresses

フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて

chunks › re_config › parameters › error_cause_indication › causes › user_initiated_abort

フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて

chunks › re_config › parameters › error_cause_indication › causes › protocol_violation

フィールド型既定値Auto説明
informationbytes — PDU の残りすべて

chunks › re_config › parameters › error_cause_indication › causes › unsupported_hmac_identifier

フィールド型既定値Auto説明
hmac_identifieruint(16)
chunks › re_config › parameters › set_primary_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › re_config › parameters › set_primary_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › re_config › parameters › set_primary_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › re_config › parameters › set_primary_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › re_config › parameters › success_indication
フィールド型既定値Auto説明
correlation_iduint(32)
chunks › re_config › parameters › adaptation_layer_indication
フィールド型既定値Auto説明
indicationuint(32)

chunks › pad

フィールド型既定値Auto説明
flagsuint(8)0
paddingbytes — PDU の残りすべて

chunks › forward_tsn

フィールド型既定値Auto説明
flagsuint(8)0
new_cumulative_tsnuint(32)
streamslist<struct> — PDU の残りすべて
chunks › forward_tsn › streams

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
streamuint(16)
stream_sequenceuint(16)

chunks › asconf

フィールド型既定値Auto説明
flagsuint(8)0
serial_numberuint(32)
parameterstlv — PDU の残りすべて
chunks › asconf › parameters
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress
1 (0x0001)heartbeat_infoinfo
7 (0x0007)state_cookiecookie
8 (0x0008)unrecognized_parameterparameter
9 (0x0009)cookie_preservativeincrement_ms
11 (0x000b)host_name_addresshost_name
12 (0x000c)supported_address_typestypes
13 (0x000d)outgoing_ssn_reset_requestrequest_sequence, response_sequence, last_tsn, streams
14 (0x000e)incoming_ssn_reset_requestrequest_sequence, streams
15 (0x000f)ssn_tsn_reset_requestrequest_sequence
16 (0x0010)reconfiguration_responseresponse_sequence, result, tsns
17 (0x0011)add_outgoing_streams_requestrequest_sequence, number_of_new_streams, reserved
18 (0x0012)add_incoming_streams_requestrequest_sequence, number_of_new_streams, reserved
32768 (0x8000)ecn_capable
32770 (0x8002)randomrandom
32771 (0x8003)chunk_listchunk_types
32772 (0x8004)requested_hmac_algorithmhmac_identifiers
32773 (0x8005)paddingpadding
32776 (0x8008)supported_extensionschunk_types
49152 (0xc000)forward_tsn_supported
49153 (0xc001)add_ip_addresscorrelation_id, address
49154 (0xc002)delete_ip_addresscorrelation_id, address
49155 (0xc003)error_cause_indicationcorrelation_id, causes
49156 (0xc004)set_primary_addresscorrelation_id, address
49157 (0xc005)success_indicationcorrelation_id
49158 (0xc006)adaptation_layer_indicationindication
chunks › asconf › parameters › ipv4_address
フィールド型既定値Auto説明
addressipv4
chunks › asconf › parameters › ipv6_address
フィールド型既定値Auto説明
addressipv6
chunks › asconf › parameters › heartbeat_info
フィールド型既定値Auto説明
infobytes — PDU の残りすべて
フィールド型既定値Auto説明
cookiebytes — PDU の残りすべて
chunks › asconf › parameters › unrecognized_parameter
フィールド型既定値Auto説明
parameterbytes — PDU の残りすべて
フィールド型既定値Auto説明
increment_msuint(32)
chunks › asconf › parameters › host_name_address
フィールド型既定値Auto説明
host_namebytes — PDU の残りすべて
chunks › asconf › parameters › supported_address_types
フィールド型既定値Auto説明
typeslist<enum(16)> — PDU の残りすべて

chunks › asconf › parameters › supported_address_types › types

値名前
5 (0x0005)ipv4
6 (0x0006)ipv6
11 (0x000b)host_name
chunks › asconf › parameters › outgoing_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
response_sequenceuint(32)
last_tsnuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › asconf › parameters › incoming_ssn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
streamslist<uint(16)> — PDU の残りすべて
chunks › asconf › parameters › ssn_tsn_reset_request
フィールド型既定値Auto説明
request_sequenceuint(32)
chunks › asconf › parameters › reconfiguration_response
フィールド型既定値Auto説明
response_sequenceuint(32)
resultenum(32)
tsnsbytes — PDU の残りすべて

chunks › asconf › parameters › reconfiguration_response › result

値名前
0 (0x00000000)success_nothing_to_do
1 (0x00000001)success_performed
2 (0x00000002)denied
3 (0x00000003)error_wrong_ssn
4 (0x00000004)error_request_already_in_progress
5 (0x00000005)error_bad_sequence_number
6 (0x00000006)in_progress
chunks › asconf › parameters › add_outgoing_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › asconf › parameters › add_incoming_streams_request
フィールド型既定値Auto説明
request_sequenceuint(32)
number_of_new_streamsuint(16)
reserveduint(16)0
chunks › asconf › parameters › random
フィールド型既定値Auto説明
randombytes — PDU の残りすべて
chunks › asconf › parameters › chunk_list
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › asconf › parameters › requested_hmac_algorithm
フィールド型既定値Auto説明
hmac_identifierslist<uint(16)> — PDU の残りすべて
chunks › asconf › parameters › padding
フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて
chunks › asconf › parameters › supported_extensions
フィールド型既定値Auto説明
chunk_typeslist<uint(8)> — PDU の残りすべて
chunks › asconf › parameters › add_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › asconf › parameters › add_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › asconf › parameters › add_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › asconf › parameters › add_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › asconf › parameters › delete_ip_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › asconf › parameters › delete_ip_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › asconf › parameters › delete_ip_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › asconf › parameters › delete_ip_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › asconf › parameters › error_cause_indication
フィールド型既定値Auto説明
correlation_iduint(32)
causestlv — PDU の残りすべて

chunks › asconf › parameters › error_cause_indication › causes

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)invalid_stream_identifierstream_identifier, reserved
2 (0x0002)missing_mandatory_parameternumber_of_missing_parameters, missing_parameters
3 (0x0003)stale_cookiestaleness_us
4 (0x0004)out_of_resource
5 (0x0005)unresolvable_addressaddress
6 (0x0006)unrecognized_chunk_typechunk
7 (0x0007)invalid_mandatory_parameter
8 (0x0008)unrecognized_parametersparameters
9 (0x0009)no_user_datatsn
10 (0x000a)cookie_received_while_shutting_down
11 (0x000b)restart_with_new_addressesaddresses
12 (0x000c)user_initiated_abortreason
13 (0x000d)protocol_violationinformation
160 (0x00a0)request_to_delete_last_address
161 (0x00a1)operation_refused
162 (0x00a2)request_to_delete_source_address
163 (0x00a3)illegal_asconf_ack
164 (0x00a4)request_refused
261 (0x0105)unsupported_hmac_identifierhmac_identifier

chunks › asconf › parameters › error_cause_indication › causes › invalid_stream_identifier

フィールド型既定値Auto説明
stream_identifieruint(16)
reserveduint(16)0

chunks › asconf › parameters › error_cause_indication › causes › missing_mandatory_parameter

フィールド型既定値Auto説明
number_of_missing_parametersuint(32)missing_parameters の要素数
missing_parameterslist<uint(16)> — number_of_missing_parameters 個の要素

chunks › asconf › parameters › error_cause_indication › causes › stale_cookie

フィールド型既定値Auto説明
staleness_usuint(32)

chunks › asconf › parameters › error_cause_indication › causes › unresolvable_address

フィールド型既定値Auto説明
addressbytes — PDU の残りすべて

chunks › asconf › parameters › error_cause_indication › causes › unrecognized_chunk_type

フィールド型既定値Auto説明
chunkbytes — PDU の残りすべて

chunks › asconf › parameters › error_cause_indication › causes › unrecognized_parameters

フィールド型既定値Auto説明
parametersbytes — PDU の残りすべて

chunks › asconf › parameters › error_cause_indication › causes › no_user_data

フィールド型既定値Auto説明
tsnuint(32)

chunks › asconf › parameters › error_cause_indication › causes › restart_with_new_addresses

フィールド型既定値Auto説明
addressesbytes — PDU の残りすべて

chunks › asconf › parameters › error_cause_indication › causes › user_initiated_abort

フィールド型既定値Auto説明
reasonbytes — PDU の残りすべて

chunks › asconf › parameters › error_cause_indication › causes › protocol_violation

フィールド型既定値Auto説明
informationbytes — PDU の残りすべて

chunks › asconf › parameters › error_cause_indication › causes › unsupported_hmac_identifier

フィールド型既定値Auto説明
hmac_identifieruint(16)
chunks › asconf › parameters › set_primary_address
フィールド型既定値Auto説明
correlation_iduint(32)
addresstlv — PDU の残りすべて

chunks › asconf › parameters › set_primary_address › address

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない); 最後の項目は詰めない
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ipv4_addressaddress
6 (0x0006)ipv6_addressaddress

chunks › asconf › parameters › set_primary_address › address › ipv4_address

フィールド型既定値Auto説明
addressipv4

chunks › asconf › parameters › set_primary_address › address › ipv6_address

フィールド型既定値Auto説明
addressipv6
chunks › asconf › parameters › success_indication
フィールド型既定値Auto説明
correlation_iduint(32)
chunks › asconf › parameters › adaptation_layer_indication
フィールド型既定値Auto説明
indicationuint(32)

制約

レベル規則
警告ヘッダとペイロードが 12 オクテット以上

サンプルテンプレート

  • sctp-abort — templates/protocols/l4/sctp-abort.wpg.yaml
  • sctp-data — templates/protocols/l4/sctp-data.wpg.yaml
  • sctp-heartbeat — templates/protocols/l4/sctp-heartbeat.wpg.yaml
  • sctp-init-ack — templates/protocols/l4/sctp-init-ack.wpg.yaml
  • sctp-init — templates/protocols/l4/sctp-init.wpg.yaml
  • sctp-over-udp — templates/protocols/l4/sctp-over-udp.wpg.yaml
  • sctp-sack — templates/protocols/l4/sctp-sack.wpg.yaml
  • sctp-shutdown — templates/protocols/l4/sctp-shutdown.wpg.yaml

RSVP (rsvp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv4protocol46 (0x2e)
ipv6next_header46 (0x2e)
ipv6_hopoptsnext_header46 (0x2e)
ipv6_routenext_header46 (0x2e)
ipv6_srhnext_header46 (0x2e)
ipv6_fragnext_header46 (0x2e)
ipv6_dstoptsnext_header46 (0x2e)

フィールド

フィールド型既定値Auto説明
versionuint(4)1RSVP バージョン(1)。
flagsflags(4)0x0フラグ(ビット 0: リフレッシュ削減対応、RFC 2961)。
msg_typeenum(8)1 (path)メッセージ種別(1 Path、2 Resv、3 PathErr、4 ResvErr、5 PathTear、6 ResvTear、7 ResvConf、12 Bundle、13 Ack、15 Srefresh、20 Hello)。
checksumuint(16)ヘッダに対するインターネットチェックサムこのフィールドを 0 としたメッセージ全体のインターネットチェックサム(Auto)。
send_ttluint(8)64メッセージ送出時の IP TTL。
reserveduint(8)0予約(0)。
lengthuint(16)ヘッダの長さ (オクテット単位)共通ヘッダを含むメッセージ全体のオクテット長(Auto)。
objectstlv — length - 8 オクテット7 要素オブジェクト(4 オクテットのヘッダを含む 16 ビット長、Class-Num、C-Type): SESSION、RSVP_HOP、TIME_VALUES、ERROR_SPEC、SCOPE、STYLE、FLOWSPEC、FILTER_SPEC、SENDER_TEMPLATE、SENDER_TSPEC、RESV_CONFIRM、LABEL、LABEL_REQUEST、EXPLICIT_ROUTE、RECORD_ROUTE、HELLO、MESSAGE_ID、SESSION_ATTRIBUTE。長さ・セッション名の長さと詰め物は Auto。

flags

ビットマスク名前
01refresh_reduction_capable

msg_type

値名前
1 (0x01)path
2 (0x02)resv
3 (0x03)path_err
4 (0x04)resv_err
5 (0x05)path_tear
6 (0x06)resv_tear
7 (0x07)resv_conf
12 (0x0c)bundle
13 (0x0d)ack
15 (0x0f)srefresh
20 (0x14)hello

objects

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さがタイプより前にあります。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
257 (0x0101)session_ipv4destination, protocol_id, flags, destination_port
258 (0x0102)session_ipv6destination, protocol_id, flags, destination_port
263 (0x0107)session_lsp_tunnel_ipv4tunnel_endpoint, reserved, tunnel_id, extended_tunnel_id
264 (0x0108)session_lsp_tunnel_ipv6tunnel_endpoint, reserved, tunnel_id, extended_tunnel_id
769 (0x0301)rsvp_hop_ipv4address, logical_interface_handle
770 (0x0302)rsvp_hop_ipv6address, logical_interface_handle
1281 (0x0501)time_valuesrefresh_period
1537 (0x0601)error_spec_ipv4node_address, flags, error_code, error_value
1538 (0x0602)error_spec_ipv6node_address, flags, error_code, error_value
1793 (0x0701)scope_ipv4addresses
2049 (0x0801)styleflags, reserved, sharing, sender_selection
2306 (0x0902)flowspecversion, reserved, overall_length, service_number, service_reserved, service_length, parameter_id, parameter_flags, parameter_length, token_bucket_rate, token_bucket_size, peak_data_rate, minimum_policed_unit, maximum_packet_size, parameters
2561 (0x0a01)filter_spec_ipv4source_address, reserved, source_port
2567 (0x0a07)filter_spec_lsp_tunnel_ipv4sender_address, reserved, lsp_id
2568 (0x0a08)filter_spec_lsp_tunnel_ipv6sender_address, reserved, lsp_id
2817 (0x0b01)sender_template_ipv4source_address, reserved, source_port
2823 (0x0b07)sender_template_lsp_tunnel_ipv4sender_address, reserved, lsp_id
2824 (0x0b08)sender_template_lsp_tunnel_ipv6sender_address, reserved, lsp_id
3074 (0x0c02)sender_tspecversion, reserved, overall_length, service_number, service_reserved, service_length, parameter_id, parameter_flags, parameter_length, token_bucket_rate, token_bucket_size, peak_data_rate, minimum_policed_unit, maximum_packet_size, parameters
3841 (0x0f01)resv_confirm_ipv4receiver_address
4097 (0x1001)labellabel
4865 (0x1301)label_requestreserved, l3pid
5121 (0x1401)explicit_routesubobjects
5377 (0x1501)record_routesubobjects
5633 (0x1601)hello_requestsource_instance, destination_instance
5634 (0x1602)hello_acksource_instance, destination_instance
5889 (0x1701)message_idflags, epoch, message_id
6145 (0x1801)message_id_ackflags, epoch, message_id
6146 (0x1802)message_id_nackflags, epoch, message_id
52993 (0xcf01)session_attribute_raexclude_any, include_any, include_all, setup_priority, holding_priority, flags, name_length, name, padding
52999 (0xcf07)session_attributesetup_priority, holding_priority, flags, name_length, name, padding

objects › session_ipv4

フィールド型既定値Auto説明
destinationipv4192.0.2.2
protocol_iduint(8)17
flagsuint(8)0
destination_portuint(16)

objects › session_ipv6

フィールド型既定値Auto説明
destinationipv6
protocol_iduint(8)17
flagsuint(8)0
destination_portuint(16)

objects › session_lsp_tunnel_ipv4

フィールド型既定値Auto説明
tunnel_endpointipv4192.0.2.2
reserveduint(16)0
tunnel_iduint(16)1
extended_tunnel_idipv4192.0.2.1

objects › session_lsp_tunnel_ipv6

フィールド型既定値Auto説明
tunnel_endpointipv6
reserveduint(16)0
tunnel_iduint(16)1
extended_tunnel_idipv6

objects › rsvp_hop_ipv4

フィールド型既定値Auto説明
addressipv4192.0.2.1
logical_interface_handleuint(32)

objects › rsvp_hop_ipv6

フィールド型既定値Auto説明
addressipv6
logical_interface_handleuint(32)

objects › time_values

フィールド型既定値Auto説明
refresh_perioduint(32)30000

objects › error_spec_ipv4

フィールド型既定値Auto説明
node_addressipv4192.0.2.2
flagsuint(8)0
error_codeenum(8)0 (confirmation)
error_valueuint(16)
objects › error_spec_ipv4 › error_code
値名前
0 (0x00)confirmation
1 (0x01)admission_control_failure
2 (0x02)policy_control_failure
3 (0x03)no_path_information
4 (0x04)no_sender_information
5 (0x05)conflicting_reservation_style
6 (0x06)unknown_reservation_style
7 (0x07)conflicting_destination_ports
8 (0x08)conflicting_sender_ports
12 (0x0c)service_preempted
13 (0x0d)unknown_object_class
14 (0x0e)unknown_object_c_type
20 (0x14)api_error
21 (0x15)traffic_control_error
22 (0x16)traffic_control_system_error
23 (0x17)rsvp_system_error
24 (0x18)routing_problem
25 (0x19)notify

objects › error_spec_ipv6

フィールド型既定値Auto説明
node_addressipv6
flagsuint(8)0
error_codeenum(8)0 (confirmation)
error_valueuint(16)
objects › error_spec_ipv6 › error_code
値名前
0 (0x00)confirmation
1 (0x01)admission_control_failure
2 (0x02)policy_control_failure
3 (0x03)no_path_information
4 (0x04)no_sender_information
5 (0x05)conflicting_reservation_style
6 (0x06)unknown_reservation_style
7 (0x07)conflicting_destination_ports
8 (0x08)conflicting_sender_ports
12 (0x0c)service_preempted
13 (0x0d)unknown_object_class
14 (0x0e)unknown_object_c_type
20 (0x14)api_error
21 (0x15)traffic_control_error
22 (0x16)traffic_control_system_error
23 (0x17)rsvp_system_error
24 (0x18)routing_problem
25 (0x19)notify

objects › scope_ipv4

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

objects › style

フィールド型既定値Auto説明
flagsuint(8)0
reserveduint(19)0
sharingenum(2)2 (shared)
sender_selectionenum(3)2 (explicit)
objects › style › sharing
値名前
1distinct
2shared
objects › style › sender_selection
値名前
1wildcard
2explicit

objects › flowspec

フィールド型既定値Auto説明
versionuint(4)0
reserveduint(12)0
overall_lengthuint(16)7
service_numberuint(8)5
service_reserveduint(8)0
service_lengthuint(16)6
parameter_iduint(8)127
parameter_flagsuint(8)0
parameter_lengthuint(16)5
token_bucket_rateuint(32)1207182336
token_bucket_sizeuint(32)1148846080
peak_data_rateuint(32)2139095040
minimum_policed_unituint(32)0
maximum_packet_sizeuint(32)1500
parametersbytes — PDU の残りすべて

objects › filter_spec_ipv4

フィールド型既定値Auto説明
source_addressipv4192.0.2.1
reserveduint(16)0
source_portuint(16)

objects › filter_spec_lsp_tunnel_ipv4

フィールド型既定値Auto説明
sender_addressipv4192.0.2.1
reserveduint(16)0
lsp_iduint(16)1

objects › filter_spec_lsp_tunnel_ipv6

フィールド型既定値Auto説明
sender_addressipv6
reserveduint(16)0
lsp_iduint(16)1

objects › sender_template_ipv4

フィールド型既定値Auto説明
source_addressipv4192.0.2.1
reserveduint(16)0
source_portuint(16)

objects › sender_template_lsp_tunnel_ipv4

フィールド型既定値Auto説明
sender_addressipv4192.0.2.1
reserveduint(16)0
lsp_iduint(16)1

objects › sender_template_lsp_tunnel_ipv6

フィールド型既定値Auto説明
sender_addressipv6
reserveduint(16)0
lsp_iduint(16)1

objects › sender_tspec

フィールド型既定値Auto説明
versionuint(4)0
reserveduint(12)0
overall_lengthuint(16)7
service_numberuint(8)1
service_reserveduint(8)0
service_lengthuint(16)6
parameter_iduint(8)127
parameter_flagsuint(8)0
parameter_lengthuint(16)5
token_bucket_rateuint(32)1207182336
token_bucket_sizeuint(32)1148846080
peak_data_rateuint(32)2139095040
minimum_policed_unituint(32)0
maximum_packet_sizeuint(32)1500
parametersbytes — PDU の残りすべて

objects › resv_confirm_ipv4

フィールド型既定値Auto説明
receiver_addressipv4192.0.2.2

objects › label

フィールド型既定値Auto説明
labeluint(32)16

objects › label_request

フィールド型既定値Auto説明
reserveduint(16)0
l3piduint(16)2048

objects › explicit_route

フィールド型既定値Auto説明
subobjectstlv — PDU の残りすべて
objects › explicit_route › subobjects
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)ipv4_prefixaddress, prefix_length, reserved
129 (0x81)ipv4_prefix_looseaddress, prefix_length, reserved
2 (0x02)ipv6_prefixaddress, prefix_length, reserved
130 (0x82)ipv6_prefix_looseaddress, prefix_length, reserved
4 (0x04)unnumbered_interfacereserved, router_id, interface_id
132 (0x84)unnumbered_interface_loosereserved, router_id, interface_id
32 (0x20)as_numberas_number
160 (0xa0)as_number_looseas_number
objects › explicit_route › subobjects › ipv4_prefix
フィールド型既定値Auto説明
addressipv4192.0.2.2
prefix_lengthuint(8)32
reserveduint(8)0
objects › explicit_route › subobjects › ipv4_prefix_loose
フィールド型既定値Auto説明
addressipv4192.0.2.2
prefix_lengthuint(8)32
reserveduint(8)0
objects › explicit_route › subobjects › ipv6_prefix
フィールド型既定値Auto説明
addressipv6
prefix_lengthuint(8)128
reserveduint(8)0
objects › explicit_route › subobjects › ipv6_prefix_loose
フィールド型既定値Auto説明
addressipv6
prefix_lengthuint(8)128
reserveduint(8)0
objects › explicit_route › subobjects › unnumbered_interface
フィールド型既定値Auto説明
reserveduint(16)0
router_idipv4192.0.2.2
interface_iduint(32)
objects › explicit_route › subobjects › unnumbered_interface_loose
フィールド型既定値Auto説明
reserveduint(16)0
router_idipv4192.0.2.2
interface_iduint(32)
objects › explicit_route › subobjects › as_number
フィールド型既定値Auto説明
as_numberuint(16)
objects › explicit_route › subobjects › as_number_loose
フィールド型既定値Auto説明
as_numberuint(16)

objects › record_route

フィールド型既定値Auto説明
subobjectstlv — PDU の残りすべて
objects › record_route › subobjects
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)ipv4_addressaddress, prefix_length, flags
2 (0x02)ipv6_addressaddress, prefix_length, flags
3 (0x03)labelflags, c_type, label
4 (0x04)unnumbered_interfaceflags, reserved, router_id, interface_id
objects › record_route › subobjects › ipv4_address
フィールド型既定値Auto説明
addressipv4192.0.2.1
prefix_lengthuint(8)32
flagsuint(8)0
objects › record_route › subobjects › ipv6_address
フィールド型既定値Auto説明
addressipv6
prefix_lengthuint(8)128
flagsuint(8)0
objects › record_route › subobjects › label
フィールド型既定値Auto説明
flagsuint(8)1
c_typeuint(8)1
labeluint(32)
objects › record_route › subobjects › unnumbered_interface
フィールド型既定値Auto説明
flagsuint(8)0
reserveduint(8)0
router_idipv4192.0.2.1
interface_iduint(32)

objects › hello_request

フィールド型既定値Auto説明
source_instanceuint(32)
destination_instanceuint(32)

objects › hello_ack

フィールド型既定値Auto説明
source_instanceuint(32)
destination_instanceuint(32)

objects › message_id

フィールド型既定値Auto説明
flagsuint(8)0
epochuint(24)
message_iduint(32)

objects › message_id_ack

フィールド型既定値Auto説明
flagsuint(8)0
epochuint(24)
message_iduint(32)

objects › message_id_nack

フィールド型既定値Auto説明
flagsuint(8)0
epochuint(24)
message_iduint(32)

objects › session_attribute_ra

フィールド型既定値Auto説明
exclude_anyuint(32)
include_anyuint(32)
include_alluint(32)
setup_priorityuint(8)7
holding_priorityuint(8)7
flagsflags(8)0x4
name_lengthuint(8)name のオクテット長
namebytes — name_length オクテット74 75 6e 6e 65 6c 31
paddingpadding(4)
objects › session_attribute_ra › flags
ビットマスク名前
01 (0x01)local_protection_desired
12 (0x02)label_recording_desired
24 (0x04)se_style_desired
38 (0x08)bandwidth_protection_desired
416 (0x10)node_protection_desired

objects › session_attribute

フィールド型既定値Auto説明
setup_priorityuint(8)7
holding_priorityuint(8)7
flagsflags(8)0x4
name_lengthuint(8)name のオクテット長
namebytes — name_length オクテット74 75 6e 6e 65 6c 31
paddingpadding(4)
objects › session_attribute › flags
ビットマスク名前
01 (0x01)local_protection_desired
12 (0x02)label_recording_desired
24 (0x04)se_style_desired
38 (0x08)bandwidth_protection_desired
416 (0x10)node_protection_desired

制約

レベル規則
警告version が 1
エラーヘッダが 8 オクテット以上

サンプルテンプレート

  • rsvp-hello — templates/protocols/mpls/rsvp-hello.wpg.yaml
  • rsvp-path-err — templates/protocols/mpls/rsvp-path-err.wpg.yaml
  • rsvp-path-tear — templates/protocols/mpls/rsvp-path-tear.wpg.yaml
  • rsvp-te-path — templates/protocols/mpls/rsvp-te-path.wpg.yaml
  • rsvp-te-resv — templates/protocols/mpls/rsvp-te-resv.wpg.yaml

BGP (bgp)

下位レイヤからの到達

下位レイヤ判別フィールド値
tcpdst_port / src_port179 (0x00b3)

フィールド

フィールド型既定値Auto説明
markerbytes(16)ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff16 オクテットのマーカ (すべて 1)。
lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)ヘッダを含む BGP メッセージ長 (オクテット、自動)。
typeenum(8)4 (keepalive)次レイヤのプロトコル番号 (「次レイヤ」参照)BGP メッセージタイプ (OPEN / UPDATE / NOTIFICATION / KEEPALIVE / ROUTE-REFRESH。次レイヤから自動)。

type

値名前
1 (0x01)open
2 (0x02)update
3 (0x03)notification
4 (0x04)keepalive
5 (0x05)route_refresh

次レイヤ

次レイヤは type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1 (0x01)bgp_open
2 (0x02)bgp_update
3 (0x03)bgp_notification
5 (0x05)bgp_route_refresh

制約

レベル規則
エラーヘッダとペイロードが 19 オクテット以上
警告ヘッダとペイロードが 4096 オクテット以下

サンプルテンプレート

  • bgp-keepalive — templates/protocols/routing/bgp-keepalive.wpg.yaml
  • bgp-notification — templates/protocols/routing/bgp-notification.wpg.yaml
  • bgp-open — templates/protocols/routing/bgp-open.wpg.yaml
  • bgp-route-refresh — templates/protocols/routing/bgp-route-refresh.wpg.yaml
  • bgp-update-evpn — templates/protocols/routing/bgp-update-evpn.wpg.yaml
  • bgp-update-mp-ipv6 — templates/protocols/routing/bgp-update-mp-ipv6.wpg.yaml
  • bgp-update-vpnv4 — templates/protocols/routing/bgp-update-vpnv4.wpg.yaml
  • bgp-update — templates/protocols/routing/bgp-update.wpg.yaml

BGP OPEN (bgp_open)

  • レイヤ: アプリケーション・制御
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
bgptype1 (0x01)

フィールド

フィールド型既定値Auto説明
versionuint(8)4BGP バージョン (4)。
my_asuint(16)65001送信側の AS 番号 (4 オクテット AS では 23456 = AS_TRANS)。
hold_timeuint(16)180提案するホールドタイム (秒。0 または 3 以上)。
bgp_identifieripv4192.0.2.1送信側の BGP 識別子 (ルータ ID)。
opt_params_lengthuint(8)ヘッダの長さ (オクテット単位) (-10)オプションパラメータ長 (オクテット、自動)。
opt_paramstlv — opt_params_length オクテット1 要素オプションパラメータ (タイプ 2 = Capabilities)。

opt_params

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)capabilitiescapabilities

opt_params › capabilities

フィールド型既定値Auto説明
capabilitiestlv — PDU の残りすべて
opt_params › capabilities › capabilities
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)multiprotocolafi, reserved, safi
2 (0x02)route_refresh
64 (0x40)graceful_restartrestart_flags, restart_time, address_families
65 (0x41)four_octet_asasn
69 (0x45)add_pathaddress_families
70 (0x46)enhanced_route_refresh
128 (0x80)route_refresh_cisco
opt_params › capabilities › capabilities › multiprotocol
フィールド型既定値Auto説明
afiuint(16)
reserveduint(8)
safiuint(8)
opt_params › capabilities › capabilities › graceful_restart
フィールド型既定値Auto説明
restart_flagsuint(4)
restart_timeuint(12)
address_familiesbytes — PDU の残りすべて
opt_params › capabilities › capabilities › four_octet_as
フィールド型既定値Auto説明
asnuint(32)
opt_params › capabilities › capabilities › add_path
フィールド型既定値Auto説明
address_familiesbytes — PDU の残りすべて

制約

レベル規則
警告version が 4

サンプルテンプレート

  • bgp-open — templates/protocols/routing/bgp-open.wpg.yaml

BGP UPDATE (bgp_update)

  • レイヤ: アプリケーション・制御
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
bgptype2 (0x02)

フィールド

フィールド型既定値Auto説明
withdrawn_routes_lengthuint(16)withdrawn_routes のオクテット長撤回経路の長さ (オクテット、自動)。
withdrawn_routeslist<struct> — withdrawn_routes_length オクテット[]撤回する IPv4 経路 (ビット単位のプレフィックス長, プレフィックス)。
total_path_attribute_lengthuint(16)path_attributes のオクテット長パス属性の長さ (オクテット、自動)。
path_attributestlv — total_path_attribute_length オクテット3 要素パス属性 (フラグ + タイプコード。Extended Length フラグ付きなら長さは 16 ビットで、255 オクテットを超えると自動で付く)。
nlrilist<struct> — PDU の残りすべて1 要素広告する IPv4 経路 (ビット単位のプレフィックス長, プレフィックス)。他のファミリは MP_REACH_NLRI に入れる。

withdrawn_routes

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
prefixbytes — (length + 7) / 8 オクテット

path_attributes

  • タイプ 16 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • タイプのビット 0x1000 が立つと長さは 16 ビットになります。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
16385 (0x4001)originorigin
16386 (0x4002)as_pathsegments
16387 (0x4003)next_hopnext_hop
32772 (0x8004)multi_exit_discmed
16389 (0x4005)local_preflocal_pref
16390 (0x4006)atomic_aggregate
49159 (0xc007)aggregatorasn, address
49160 (0xc008)communitiesvalues
32782 (0x800e)mp_reach_ipv4_unicastafi, safi, next_hop_length, next_hop, reserved, nlri; 値が 00 01 01 で始まるとき
32782 (0x800e)mp_reach_ipv6_unicastafi, safi, next_hop_length, next_hop, reserved, nlri; 値が 00 02 01 で始まるとき
32782 (0x800e)mp_reach_vpnv4afi, safi, next_hop_length, next_hop, reserved, nlri; 値が 00 01 80 で始まるとき
32782 (0x800e)mp_reach_vpnv6afi, safi, next_hop_length, next_hop, reserved, nlri; 値が 00 02 80 で始まるとき
32782 (0x800e)mp_reach_evpnafi, safi, next_hop_length, next_hop, reserved, nlri; 値が 00 19 46 で始まるとき
32782 (0x800e)mp_reach_nlriafi, safi, next_hop_length, next_hop, reserved, nlri
32783 (0x800f)mp_unreach_ipv4_unicastafi, safi, withdrawn; 値が 00 01 01 で始まるとき
32783 (0x800f)mp_unreach_ipv6_unicastafi, safi, withdrawn; 値が 00 02 01 で始まるとき
32783 (0x800f)mp_unreach_vpnv4afi, safi, withdrawn; 値が 00 01 80 で始まるとき
32783 (0x800f)mp_unreach_vpnv6afi, safi, withdrawn; 値が 00 02 80 で始まるとき
32783 (0x800f)mp_unreach_evpnafi, safi, withdrawn; 値が 00 19 46 で始まるとき
32783 (0x800f)mp_unreach_nlriafi, safi, withdrawn
49168 (0xc010)extended_communitiesvalues
49184 (0xc020)large_communitiesvalues
49174 (0xc016)pmsi_tunnelflags, tunnel_type, mpls_label, tunnel_id

path_attributes › origin

フィールド型既定値Auto説明
originuint(8)

path_attributes › as_path

フィールド型既定値Auto説明
segmentslist<struct> — PDU の残りすべて
path_attributes › as_path › segments

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
segment_typeenum(8)
segment_lengthuint(8)
asnslist<uint(32)> — segment_length * 4 オクテット
path_attributes › as_path › segments › segment_type
値名前
1 (0x01)as_set
2 (0x02)as_sequence

path_attributes › next_hop

フィールド型既定値Auto説明
next_hopipv4

path_attributes › multi_exit_disc

フィールド型既定値Auto説明
meduint(32)

path_attributes › local_pref

フィールド型既定値Auto説明
local_prefuint(32)

path_attributes › aggregator

フィールド型既定値Auto説明
asnuint(32)
addressipv4

path_attributes › communities

フィールド型既定値Auto説明
valueslist<uint(32)> — PDU の残りすべて

path_attributes › mp_reach_ipv4_unicast

フィールド型既定値Auto説明
afiuint(16)1
safiuint(8)1
next_hop_lengthuint(8)next_hop のオクテット長
next_hoplist<ipv4> — next_hop_length オクテット
reserveduint(8)
nlrilist<struct> — PDU の残りすべて
path_attributes › mp_reach_ipv4_unicast › nlri

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
prefixbytes — (length + 7) / 8 オクテット

path_attributes › mp_reach_ipv6_unicast

フィールド型既定値Auto説明
afiuint(16)2
safiuint(8)1
next_hop_lengthuint(8)next_hop のオクテット長
next_hoplist<ipv6> — next_hop_length オクテット
reserveduint(8)
nlrilist<struct> — PDU の残りすべて
path_attributes › mp_reach_ipv6_unicast › nlri

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
prefixbytes — (length + 7) / 8 オクテット

path_attributes › mp_reach_vpnv4

フィールド型既定値Auto説明
afiuint(16)1
safiuint(8)128
next_hop_lengthuint(8)next_hop のオクテット長
next_hoplist<struct> — next_hop_length オクテット
reserveduint(8)
nlrilist<struct> — PDU の残りすべて
path_attributes › mp_reach_vpnv4 › next_hop

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
rdbytes(8)
addressipv4
path_attributes › mp_reach_vpnv4 › nlri

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
labeluint(20)
expuint(3)
bosuint(1)
rdbytes(8)
prefixbytes — (length - 81) / 8 オクテット

path_attributes › mp_reach_vpnv6

フィールド型既定値Auto説明
afiuint(16)2
safiuint(8)128
next_hop_lengthuint(8)next_hop のオクテット長
next_hoplist<struct> — next_hop_length オクテット
reserveduint(8)
nlrilist<struct> — PDU の残りすべて
path_attributes › mp_reach_vpnv6 › next_hop

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
rdbytes(8)
addressipv6
path_attributes › mp_reach_vpnv6 › nlri

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
labeluint(20)
expuint(3)
bosuint(1)
rdbytes(8)
prefixbytes — (length - 81) / 8 オクテット

path_attributes › mp_reach_evpn

フィールド型既定値Auto説明
afiuint(16)25
safiuint(8)70
next_hop_lengthuint(8)next_hop のオクテット長
next_hopbytes — next_hop_length オクテット
reserveduint(8)
nlritlv — PDU の残りすべて
path_attributes › mp_reach_evpn › nlri
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)ethernet_adrd, esi, ethernet_tag, mpls_label
2 (0x02)mac_iprd, esi, ethernet_tag, mac_length, mac, ip_length, ip_address, labels
3 (0x03)inclusive_multicastrd, ethernet_tag, ip_length, originating_ip
4 (0x04)ethernet_segmentrd, esi, ip_length, originating_ip
5 (0x05)ip_prefixrd, esi, ethernet_tag, ip_prefix_length, ip_prefix, gateway, mpls_label; 値が 34 オクテットのとき
5 (0x05)ipv6_prefixrd, esi, ethernet_tag, ip_prefix_length, ip_prefix, gateway, mpls_label; 値が 58 オクテットのとき
path_attributes › mp_reach_evpn › nlri › ethernet_ad
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ethernet_taguint(32)
mpls_labeluint(24)
path_attributes › mp_reach_evpn › nlri › mac_ip
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ethernet_taguint(32)
mac_lengthuint(8)
macmac
ip_lengthuint(8)
ip_addressbytes — ip_length / 8 オクテット
labelslist<uint(24)> — PDU の残りすべて
path_attributes › mp_reach_evpn › nlri › inclusive_multicast
フィールド型既定値Auto説明
rdbytes(8)
ethernet_taguint(32)
ip_lengthuint(8)
originating_ipbytes — ip_length / 8 オクテット
path_attributes › mp_reach_evpn › nlri › ethernet_segment
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ip_lengthuint(8)
originating_ipbytes — ip_length / 8 オクテット
path_attributes › mp_reach_evpn › nlri › ip_prefix
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ethernet_taguint(32)
ip_prefix_lengthuint(8)
ip_prefixipv4
gatewayipv4
mpls_labeluint(24)
path_attributes › mp_reach_evpn › nlri › ipv6_prefix
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ethernet_taguint(32)
ip_prefix_lengthuint(8)
ip_prefixipv6
gatewayipv6
mpls_labeluint(24)

path_attributes › mp_reach_nlri

フィールド型既定値Auto説明
afiuint(16)
safiuint(8)
next_hop_lengthuint(8)next_hop のオクテット長
next_hopbytes — next_hop_length オクテット
reserveduint(8)
nlribytes — PDU の残りすべて

path_attributes › mp_unreach_ipv4_unicast

フィールド型既定値Auto説明
afiuint(16)1
safiuint(8)1
withdrawnlist<struct> — PDU の残りすべて
path_attributes › mp_unreach_ipv4_unicast › withdrawn

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
prefixbytes — (length + 7) / 8 オクテット

path_attributes › mp_unreach_ipv6_unicast

フィールド型既定値Auto説明
afiuint(16)2
safiuint(8)1
withdrawnlist<struct> — PDU の残りすべて
path_attributes › mp_unreach_ipv6_unicast › withdrawn

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
prefixbytes — (length + 7) / 8 オクテット

path_attributes › mp_unreach_vpnv4

フィールド型既定値Auto説明
afiuint(16)1
safiuint(8)128
withdrawnlist<struct> — PDU の残りすべて
path_attributes › mp_unreach_vpnv4 › withdrawn

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
labeluint(20)
expuint(3)
bosuint(1)
rdbytes(8)
prefixbytes — (length - 81) / 8 オクテット

path_attributes › mp_unreach_vpnv6

フィールド型既定値Auto説明
afiuint(16)2
safiuint(8)128
withdrawnlist<struct> — PDU の残りすべて
path_attributes › mp_unreach_vpnv6 › withdrawn

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
labeluint(20)
expuint(3)
bosuint(1)
rdbytes(8)
prefixbytes — (length - 81) / 8 オクテット

path_attributes › mp_unreach_evpn

フィールド型既定値Auto説明
afiuint(16)25
safiuint(8)70
withdrawntlv — PDU の残りすべて
path_attributes › mp_unreach_evpn › withdrawn
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)ethernet_adrd, esi, ethernet_tag, mpls_label
2 (0x02)mac_iprd, esi, ethernet_tag, mac_length, mac, ip_length, ip_address, labels
3 (0x03)inclusive_multicastrd, ethernet_tag, ip_length, originating_ip
4 (0x04)ethernet_segmentrd, esi, ip_length, originating_ip
5 (0x05)ip_prefixrd, esi, ethernet_tag, ip_prefix_length, ip_prefix, gateway, mpls_label; 値が 34 オクテットのとき
5 (0x05)ipv6_prefixrd, esi, ethernet_tag, ip_prefix_length, ip_prefix, gateway, mpls_label; 値が 58 オクテットのとき
path_attributes › mp_unreach_evpn › withdrawn › ethernet_ad
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ethernet_taguint(32)
mpls_labeluint(24)
path_attributes › mp_unreach_evpn › withdrawn › mac_ip
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ethernet_taguint(32)
mac_lengthuint(8)
macmac
ip_lengthuint(8)
ip_addressbytes — ip_length / 8 オクテット
labelslist<uint(24)> — PDU の残りすべて
path_attributes › mp_unreach_evpn › withdrawn › inclusive_multicast
フィールド型既定値Auto説明
rdbytes(8)
ethernet_taguint(32)
ip_lengthuint(8)
originating_ipbytes — ip_length / 8 オクテット
path_attributes › mp_unreach_evpn › withdrawn › ethernet_segment
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ip_lengthuint(8)
originating_ipbytes — ip_length / 8 オクテット
path_attributes › mp_unreach_evpn › withdrawn › ip_prefix
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ethernet_taguint(32)
ip_prefix_lengthuint(8)
ip_prefixipv4
gatewayipv4
mpls_labeluint(24)
path_attributes › mp_unreach_evpn › withdrawn › ipv6_prefix
フィールド型既定値Auto説明
rdbytes(8)
esibytes(10)
ethernet_taguint(32)
ip_prefix_lengthuint(8)
ip_prefixipv6
gatewayipv6
mpls_labeluint(24)

path_attributes › mp_unreach_nlri

フィールド型既定値Auto説明
afiuint(16)
safiuint(8)
withdrawnbytes — PDU の残りすべて

path_attributes › extended_communities

フィールド型既定値Auto説明
valueslist<uint(64)> — PDU の残りすべて

path_attributes › large_communities

フィールド型既定値Auto説明
valueslist<struct> — PDU の残りすべて
path_attributes › large_communities › values

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
global_adminuint(32)
local_data1uint(32)
local_data2uint(32)

path_attributes › pmsi_tunnel

フィールド型既定値Auto説明
flagsuint(8)
tunnel_typeenum(8)
mpls_labeluint(24)
tunnel_idbytes — PDU の残りすべて
path_attributes › pmsi_tunnel › tunnel_type
値名前
0 (0x00)none
1 (0x01)rsvp_te_p2mp
2 (0x02)mldp_p2mp
3 (0x03)pim_ssm
4 (0x04)pim_sm
5 (0x05)bidir_pim
6 (0x06)ingress_replication
7 (0x07)mldp_mp2mp

nlri

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)
prefixbytes — (length + 7) / 8 オクテット

サンプルテンプレート

BGP NOTIFICATION (bgp_notification)

  • レイヤ: アプリケーション・制御
  • ヘッダ: 可変長

下位レイヤからの到達

下位レイヤ判別フィールド値
bgptype3 (0x03)

フィールド

フィールド型既定値Auto説明
error_codeenum(8)6 (cease)NOTIFICATION のエラーコード。
error_subcodeuint(8)2NOTIFICATION のエラーサブコード。
databytes — PDU の残りすべて""NOTIFICATION の診断データ。

error_code

値名前
1 (0x01)message_header_error
2 (0x02)open_message_error
3 (0x03)update_message_error
4 (0x04)hold_timer_expired
5 (0x05)fsm_error
6 (0x06)cease
7 (0x07)route_refresh_message_error

サンプルテンプレート

BGP ROUTE-REFRESH (bgp_route_refresh)

  • レイヤ: アプリケーション・制御
  • ヘッダ: 4 オクテット (固定長)

下位レイヤからの到達

下位レイヤ判別フィールド値
bgptype5 (0x05)

フィールド

フィールド型既定値Auto説明
afiuint(16)1アドレスファミリ識別子 (1 = IPv4、2 = IPv6)。
subtypeenum(8)0 (normal)ROUTE-REFRESH サブタイプ (0 = 通常、1 = BoRR、2 = EoRR)。
safiuint(8)1サブアドレスファミリ識別子 (1 = ユニキャスト、2 = マルチキャスト)。

subtype

値名前
0 (0x00)normal
1 (0x01)borr
2 (0x02)eorr

サンプルテンプレート

RIP (rip)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port520 (0x0208)

フィールド

フィールド型既定値Auto説明
commandenum(8)2 (response)RIP コマンド (1 = 要求、2 = 応答)。
versionuint(8)2RIP バージョン (1 または 2。RIPng は 1)。
zerouint(16)0
entrieslist<struct> — PDU の残りすべて1 要素経路エントリ (AFI、ルートタグ、アドレス、マスク、ネクストホップ、メトリック)。

command

値名前
1 (0x01)request
2 (0x02)response

entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
afiuint(16)
route_taguint(16)
addressipv4
subnet_maskipv4
next_hopipv4
metricuint(32)

制約

レベル規則
警告version が 1..2 の範囲

サンプルテンプレート

RIPng (ripng)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port521 (0x0209)

フィールド

フィールド型既定値Auto説明
commandenum(8)2 (response)RIP コマンド (1 = 要求、2 = 応答)。
versionuint(8)1RIP バージョン (1 または 2。RIPng は 1)。
reserveduint(16)0
entrieslist<struct> — PDU の残りすべて1 要素経路テーブルエントリ (プレフィックス、ルートタグ、プレフィックス長、メトリック。0xff = ネクストホップ)。

command

値名前
1 (0x01)request
2 (0x02)response

entries

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
prefixipv6
route_taguint(16)
prefix_lengthuint(8)
metricuint(8)

サンプルテンプレート

  • ripng-response — templates/protocols/routing/ripng-response.wpg.yaml

HSRPv1 (hsrp)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port1985 (0x07c1)

フィールド

フィールド型既定値Auto説明
versionuint(8)0HSRP バージョン (HSRPv1 は 0)。
op_codeenum(8)0 (hello)HSRP オペレーション (0 = Hello、1 = Coup、2 = Resign、3 = Advertise)。
stateenum(8)16 (active)送信者の状態 (1 = Learn、2 = Listen、4 = Speak、8 = Standby、16 = Active)。
hello_timeuint(8)3Hello 送信間隔 (秒)。
hold_timeuint(8)10Hello の有効時間 (秒)。
priorityuint(8)100グループ内のルータ優先度。
groupuint(8)0スタンバイグループ番号。
reserveduint(8)0
auth_databytes(8)63 69 73 63 6f 00 00 00平文認証パスワード (8 オクテット、既定値 “cisco”)。
virtual_ipipv4192.0.2.254グループの仮想 IPv4 アドレス。

op_code

値名前
0 (0x00)hello
1 (0x01)coup
2 (0x02)resign
3 (0x03)advertise

state

値名前
0 (0x00)initial
1 (0x01)learn
2 (0x02)listen
4 (0x04)speak
8 (0x08)standby
16 (0x10)active

次レイヤ

次レイヤは version で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1 (0x01)hsrpv2このレイヤを読み直す

サンプルテンプレート

  • hsrpv1 — templates/protocols/fhrp/hsrpv1.wpg.yaml

HSRPv2 (hsrpv2)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port1985 (0x07c1)
udpdst_port / src_port2029 (0x07ed)
hsrpversion1 (0x01) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
tlvstlv — PDU の残りすべて1 要素HSRPv2 TLV (Group State、Interface State、テキスト / MD5 認証。8 ビットのタイプと長さ)。

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)group_stateversion, op_code, state, ip_version, group, identifier, priority, hello_time, hold_time, virtual_ip
2 (0x02)interface_stateactive_groups, passive_groups
3 (0x03)text_authauth_data
4 (0x04)md5_auth

tlvs › group_state

フィールド型既定値Auto説明
versionuint(8)2
op_codeuint(8)0
stateuint(8)6
ip_versionuint(8)4
groupuint(16)0
identifiermac02:00:00:00:00:01
priorityuint(32)100
hello_timeuint(32)3000
hold_timeuint(32)10000
virtual_ipbytes(16)c0 00 02 fe 00 00 00 00 00 00 00 00 00 00 00 00

tlvs › interface_state

フィールド型既定値Auto説明
active_groupsuint(16)1
passive_groupsuint(16)0

tlvs › text_auth

フィールド型既定値Auto説明
auth_databytes(8)63 69 73 63 6f 00 00 00

サンプルテンプレート

  • hsrpv2 — templates/protocols/fhrp/hsrpv2.wpg.yaml

GLBP (glbp)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port3222 (0x0c96)

フィールド

フィールド型既定値Auto説明
versionuint(8)1GLBP バージョン (1)。
unknown1uint(8)0
groupuint(16)1GLBP グループ番号。
unknown2uint(16)0
owner_idmac02:00:00:00:00:01送信ルータの MAC アドレス。
tlvstlv — PDU の残りすべて1 要素GLBP TLV (Hello、Request/Response、認証。長さはヘッダを含む)。

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)hellounknown1, vg_state, unknown2, priority, unknown3, hello_interval, hold_interval, redirect, timeout, unknown4, address_type, address_length, virtual_ip
2 (0x02)request_response
3 (0x03)auth

tlvs › hello

フィールド型既定値Auto説明
unknown1uint(8)0
vg_stateuint(8)32
unknown2uint(8)0
priorityuint(8)100
unknown3uint(16)0
hello_intervaluint(32)3000
hold_intervaluint(32)10000
redirectuint(16)600
timeoutuint(16)14400
unknown4uint(16)0
address_typeuint(8)1
address_lengthuint(8)4
virtual_ipipv4192.0.2.254

サンプルテンプレート

  • glbp — templates/protocols/fhrp/glbp.wpg.yaml

DHCPv4 (dhcpv4)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port67 (0x0043)
udpdst_port / src_port68 (0x0044)

フィールド

フィールド型既定値Auto説明
openum(8)1 (boot_request)BOOTP メッセージ種別 (1 = BOOTREQUEST、2 = BOOTREPLY)。
htypeuint(8)1ハードウェアアドレス種別 (1 = Ethernet)。
hlenuint(8)6ハードウェアアドレス長 (オクテット、Ethernet は 6)。
hopsuint(8)0リレーホップ数 (リレーエージェントごとに加算)。
xiduint(32)305419896クライアントが選ぶトランザクション ID。
secsuint(16)0クライアントが取得を開始してからの経過秒数。
flagsflags(16)0x0BOOTP フラグ (ビット 15 = ブロードキャスト応答を要求)。
ciaddripv40.0.0.0クライアント IP アドレス (割り当て済みの場合)。
yiaddripv40.0.0.0サーバが割り当てるクライアント (“your”) IP アドレス。
siaddripv40.0.0.0次に使うサーバ (ブートサーバ) の IP アドレス。
giaddripv40.0.0.0リレーエージェント (ゲートウェイ) の IP アドレス。リレー時は非 0。
chaddrmac02:00:00:00:00:01クライアントのハードウェア (MAC) アドレス。後ろに 10 オクテットのパディング。
chaddr_paddingbytes(10)00 00 00 00 00 00 00 00 00 00
snamebytes(64)00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00サーバホスト名 (任意、64 オクテット、NUL 埋め)。
filebytes(128)00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00ブートファイル名 (128 オクテット、NUL 埋め)。
magic_cookieuint(32)1669485411DHCP マジッククッキー (0x63825363)。
optionstlv — PDU の残りすべて2 要素DHCP オプション (8 ビットコード / 長さ。Pad、End、Message Type、Relay Agent Information など)。

op

値名前
1 (0x01)boot_request
2 (0x02)boot_reply

flags

ビットマスク名前
1532768 (0x8000)broadcast

options

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)pad(タイプのみ。長さと値なし)
1 (0x01)subnet_maskmask
3 (0x03)routeraddresses
6 (0x06)dns_serversaddresses
12 (0x0c)host_name
15 (0x0f)domain_name
50 (0x32)requested_ipaddress
51 (0x33)lease_timeseconds
53 (0x35)message_typetype
54 (0x36)server_idaddress
55 (0x37)parameter_request_listcodes
58 (0x3a)renewal_timeseconds
59 (0x3b)rebinding_timeseconds
61 (0x3d)client_id
82 (0x52)relay_agent_infosuboptions
255 (0xff)end(タイプのみ。長さと値なし)

options › subnet_mask

フィールド型既定値Auto説明
maskipv4

options › router

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

options › dns_servers

フィールド型既定値Auto説明
addresseslist<ipv4> — PDU の残りすべて

options › requested_ip

フィールド型既定値Auto説明
addressipv4

options › lease_time

フィールド型既定値Auto説明
secondsuint(32)

options › message_type

フィールド型既定値Auto説明
typeenum(8)
options › message_type › type
値名前
1 (0x01)discover
2 (0x02)offer
3 (0x03)request
4 (0x04)decline
5 (0x05)ack
6 (0x06)nak
7 (0x07)release
8 (0x08)inform

options › server_id

フィールド型既定値Auto説明
addressipv4

options › parameter_request_list

フィールド型既定値Auto説明
codeslist<uint(8)> — PDU の残りすべて

options › renewal_time

フィールド型既定値Auto説明
secondsuint(32)

options › rebinding_time

フィールド型既定値Auto説明
secondsuint(32)

options › relay_agent_info

フィールド型既定値Auto説明
suboptionstlv — PDU の残りすべて
options › relay_agent_info › suboptions
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)circuit_id
2 (0x02)remote_id
5 (0x05)link_selectionaddress
11 (0x0b)server_id_overrideaddress
フィールド型既定値Auto説明
addressipv4
options › relay_agent_info › suboptions › server_id_override
フィールド型既定値Auto説明
addressipv4

制約

レベル規則
警告magic_cookie が 1669485411

サンプルテンプレート

DHCPv6 (dhcpv6)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port546 (0x0222)
udpdst_port / src_port547 (0x0223)

フィールド

フィールド型既定値Auto説明
msg_typeenum(8)1 (solicit)DHCPv6 メッセージ種別 (Solicit、Advertise、Request、Reply、Relay-Forward など)。
transaction_iduint(24)466024 ビットのトランザクション ID。
optionstlv — PDU の残りすべて3 要素DHCPv6 オプション (16 ビットコード / 長さ。Client ID、IA_NA、Relay Message など)。

msg_type

値名前
1 (0x01)solicit
2 (0x02)advertise
3 (0x03)request
4 (0x04)confirm
5 (0x05)renew
6 (0x06)rebind
7 (0x07)reply
8 (0x08)release
9 (0x09)decline
10 (0x0a)reconfigure
11 (0x0b)information_request
12 (0x0c)relay_forw
13 (0x0d)relay_repl

options

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)client_id
2 (0x0002)server_id
3 (0x0003)ia_naiaid, t1, t2, options
4 (0x0004)ia_taiaid, options
6 (0x0006)orocodes
7 (0x0007)preferencevalue
8 (0x0008)elapsed_timetime
9 (0x0009)relay_message
13 (0x000d)status_codecode, message
14 (0x000e)rapid_commit
18 (0x0012)interface_id
23 (0x0017)dns_serversaddresses
24 (0x0018)domain_list
25 (0x0019)ia_pdiaid, t1, t2, options
37 (0x0025)remote_identerprise, id

options › ia_na

フィールド型既定値Auto説明
iaiduint(32)
t1uint(32)
t2uint(32)
optionstlv — PDU の残りすべて
options › ia_na › options
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix
options › ia_na › options › ia_addr
フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
options › ia_na › options › status_code
フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて
options › ia_na › options › ia_prefix
フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6

options › ia_ta

フィールド型既定値Auto説明
iaiduint(32)
optionstlv — PDU の残りすべて
options › ia_ta › options
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix
options › ia_ta › options › ia_addr
フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
options › ia_ta › options › status_code
フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて
options › ia_ta › options › ia_prefix
フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6

options › oro

フィールド型既定値Auto説明
codeslist<uint(16)> — PDU の残りすべて

options › preference

フィールド型既定値Auto説明
valueuint(8)

options › elapsed_time

フィールド型既定値Auto説明
timeuint(16)

options › status_code

フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて

options › dns_servers

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

options › ia_pd

フィールド型既定値Auto説明
iaiduint(32)
t1uint(32)
t2uint(32)
optionstlv — PDU の残りすべて
options › ia_pd › options
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix
options › ia_pd › options › ia_addr
フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
options › ia_pd › options › status_code
フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて
options › ia_pd › options › ia_prefix
フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6

options › remote_id

フィールド型既定値Auto説明
enterpriseuint(32)
idbytes — PDU の残りすべて

次レイヤ

次レイヤは msg_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
12 (0x0c)dhcpv6_relayこのレイヤを読み直す
13 (0x0d)dhcpv6_relayこのレイヤを読み直す

サンプルテンプレート

DHCPv6 Relay (dhcpv6_relay)

下位レイヤからの到達

下位レイヤ判別フィールド値
dhcpv6msg_type12 (0x0c) (このレイヤを読み直す)
dhcpv6msg_type13 (0x0d) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
msg_typeenum(8)12 (relay_forw)DHCPv6 メッセージ種別 (Solicit、Advertise、Request、Reply、Relay-Forward など)。
hop_countuint(8)0このメッセージを中継したリレーエージェントの数。
link_addressipv6::クライアントのリンクを識別するアドレス (リレー)。
peer_addressipv6fe80::1メッセージの送信元クライアントまたはリレーのアドレス。
optionstlv — PDU の残りすべて1 要素DHCPv6 オプション (16 ビットコード / 長さ。Client ID、IA_NA、Relay Message など)。

msg_type

値名前
12 (0x0c)relay_forw
13 (0x0d)relay_repl

options

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)client_id
2 (0x0002)server_id
3 (0x0003)ia_naiaid, t1, t2, options
4 (0x0004)ia_taiaid, options
6 (0x0006)orocodes
7 (0x0007)preferencevalue
8 (0x0008)elapsed_timetime
9 (0x0009)relay_messagemsg_type, transaction_id, options
13 (0x000d)status_codecode, message
14 (0x000e)rapid_commit
18 (0x0012)interface_id
23 (0x0017)dns_serversaddresses
24 (0x0018)domain_list
25 (0x0019)ia_pdiaid, t1, t2, options
37 (0x0025)remote_identerprise, id

options › ia_na

フィールド型既定値Auto説明
iaiduint(32)
t1uint(32)
t2uint(32)
optionstlv — PDU の残りすべて
options › ia_na › options
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix
options › ia_na › options › ia_addr
フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
options › ia_na › options › status_code
フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて
options › ia_na › options › ia_prefix
フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6

options › ia_ta

フィールド型既定値Auto説明
iaiduint(32)
optionstlv — PDU の残りすべて
options › ia_ta › options
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix
options › ia_ta › options › ia_addr
フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
options › ia_ta › options › status_code
フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて
options › ia_ta › options › ia_prefix
フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6

options › oro

フィールド型既定値Auto説明
codeslist<uint(16)> — PDU の残りすべて

options › preference

フィールド型既定値Auto説明
valueuint(8)

options › elapsed_time

フィールド型既定値Auto説明
timeuint(16)

options › relay_message

フィールド型既定値Auto説明
msg_typeenum(8)
transaction_iduint(24)
optionstlv — PDU の残りすべて
options › relay_message › msg_type
値名前
1 (0x01)solicit
2 (0x02)advertise
3 (0x03)request
4 (0x04)confirm
5 (0x05)renew
6 (0x06)rebind
7 (0x07)reply
8 (0x08)release
9 (0x09)decline
10 (0x0a)reconfigure
11 (0x0b)information_request
12 (0x0c)relay_forw
13 (0x0d)relay_repl
options › relay_message › options
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)client_id
2 (0x0002)server_id
3 (0x0003)ia_naiaid, t1, t2, options
4 (0x0004)ia_taiaid, options
6 (0x0006)orocodes
7 (0x0007)preferencevalue
8 (0x0008)elapsed_timetime
9 (0x0009)relay_message
13 (0x000d)status_codecode, message
14 (0x000e)rapid_commit
18 (0x0012)interface_id
23 (0x0017)dns_serversaddresses
24 (0x0018)domain_list
25 (0x0019)ia_pdiaid, t1, t2, options
37 (0x0025)remote_identerprise, id
options › relay_message › options › ia_na
フィールド型既定値Auto説明
iaiduint(32)
t1uint(32)
t2uint(32)
optionstlv — PDU の残りすべて

options › relay_message › options › ia_na › options

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix

options › relay_message › options › ia_na › options › ia_addr

フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)

options › relay_message › options › ia_na › options › status_code

フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて

options › relay_message › options › ia_na › options › ia_prefix

フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6
options › relay_message › options › ia_ta
フィールド型既定値Auto説明
iaiduint(32)
optionstlv — PDU の残りすべて

options › relay_message › options › ia_ta › options

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix

options › relay_message › options › ia_ta › options › ia_addr

フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)

options › relay_message › options › ia_ta › options › status_code

フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて

options › relay_message › options › ia_ta › options › ia_prefix

フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6
options › relay_message › options › oro
フィールド型既定値Auto説明
codeslist<uint(16)> — PDU の残りすべて
options › relay_message › options › preference
フィールド型既定値Auto説明
valueuint(8)
options › relay_message › options › elapsed_time
フィールド型既定値Auto説明
timeuint(16)
options › relay_message › options › status_code
フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて
options › relay_message › options › dns_servers
フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて
options › relay_message › options › ia_pd
フィールド型既定値Auto説明
iaiduint(32)
t1uint(32)
t2uint(32)
optionstlv — PDU の残りすべて

options › relay_message › options › ia_pd › options

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix

options › relay_message › options › ia_pd › options › ia_addr

フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)

options › relay_message › options › ia_pd › options › status_code

フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて

options › relay_message › options › ia_pd › options › ia_prefix

フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6
options › relay_message › options › remote_id
フィールド型既定値Auto説明
enterpriseuint(32)
idbytes — PDU の残りすべて

options › status_code

フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて

options › dns_servers

フィールド型既定値Auto説明
addresseslist<ipv6> — PDU の残りすべて

options › ia_pd

フィールド型既定値Auto説明
iaiduint(32)
t1uint(32)
t2uint(32)
optionstlv — PDU の残りすべて
options › ia_pd › options
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
5 (0x0005)ia_addraddress, preferred_lifetime, valid_lifetime
13 (0x000d)status_codecode, message
26 (0x001a)ia_prefixpreferred_lifetime, valid_lifetime, prefix_length, prefix
options › ia_pd › options › ia_addr
フィールド型既定値Auto説明
addressipv6
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
options › ia_pd › options › status_code
フィールド型既定値Auto説明
codeuint(16)
messagebytes — PDU の残りすべて
options › ia_pd › options › ia_prefix
フィールド型既定値Auto説明
preferred_lifetimeuint(32)
valid_lifetimeuint(32)
prefix_lengthuint(8)
prefixipv6

options › remote_id

フィールド型既定値Auto説明
enterpriseuint(32)
idbytes — PDU の残りすべて

制約

レベル規則
警告msg_type が 12..13 の範囲

サンプルテンプレート

DNS (dns)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port53 (0x0035)

フィールド

フィールド型既定値Auto説明
iduint(16)4660クエリ識別子 (応答にコピーされる)。
qrenum(1)0 (query)クエリ (0) または応答 (1)。
opcodeenum(4)0 (query)クエリ種別 (0 = 標準クエリ、4 = NOTIFY、5 = UPDATE)。
aauint(1)0権威応答フラグ。
tcuint(1)0切り詰め (トランケーション) フラグ。
rduint(1)1再帰要求フラグ。
rauint(1)0再帰可能フラグ。
zuint(1)0予約ビット (0 でなければならない)。
aduint(1)0認証済みデータフラグ (DNSSEC)。
cduint(1)0検証無効フラグ (DNSSEC)。
rcodeenum(4)0 (no_error)応答コード (0 = NOERROR、3 = NXDOMAIN など)。
qdcountuint(16)1質問セクションのエントリ数。
ancountuint(16)0回答セクションのリソースレコード数。
nscountuint(16)0権威セクションのリソースレコード数。
arcountuint(16)0追加セクションのリソースレコード数。
sectionsbytes — PDU の残りすべて07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 00 01 00 01質問 / 回答 / 権威 / 追加セクション (長さ付きラベル形式の名前)。不透明なオクテット列。

qr

値名前
0query
1response

opcode

値名前
0query
1iquery
2status
4notify
5update

rcode

値名前
0no_error
1format_error
2server_failure
3nx_domain
4not_implemented
5refused

制約

レベル規則
警告z が 0
警告ヘッダとペイロードが 512 オクテット以下

サンプルテンプレート

  • dns-query — templates/protocols/app/dns-query.wpg.yaml
  • dns-response — templates/protocols/app/dns-response.wpg.yaml

NTP (ntp)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port123 (0x007b)

フィールド

フィールド型既定値Auto説明
lienum(2)0 (no_warning)うるう秒指示子 (3 = 時刻未同期)。
versionuint(3)4NTP バージョン番号 (4)。
modeenum(3)3 (client)アソシエーションモード (3 = クライアント、4 = サーバ、5 = ブロードキャスト)。
stratumuint(8)0階層 (0 = 未指定、1 = 一次参照、2-15 = 二次)。
pollint(8)6最大ポーリング間隔 (log2 秒、符号付き)。
precisionint(8)-20クロック精度 (log2 秒、符号付き)。
root_delayuint(32)0参照クロックまでの往復遅延 (16.16 固定小数点秒)。
root_dispersionuint(32)0参照クロックまでの分散 (16.16 固定小数点秒)。
reference_idbytes(4)00 00 00 00参照 ID (階層 1 は ASCII コード、それ以外は IPv4 アドレスまたはハッシュ)。
reference_tsuint(64)0システムクロックを最後に設定した時刻 (64 ビット NTP タイムスタンプ)。
origin_tsuint(64)0サーバが返すクライアント送信時刻 (64 ビット NTP タイムスタンプ)。
receive_tsuint(64)0要求がサーバに到着した時刻 (64 ビット NTP タイムスタンプ)。
transmit_tsuint(64)0パケットが送信元を出た時刻 (64 ビット NTP タイムスタンプ)。
extensionsbytes — PDU の残りすべて""拡張フィールドと MAC。不透明なオクテット列。

li

値名前
0no_warning
1last_minute_61
2last_minute_59
3unsynchronized

mode

値名前
0reserved
1symmetric_active
2symmetric_passive
3client
4server
5broadcast
6control
7private

制約

レベル規則
警告version が 1..4 の範囲

サンプルテンプレート

  • ntp-client — templates/protocols/app/ntp-client.wpg.yaml

SNMP (snmp)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port161 (0x00a1)
udpdst_port / src_port162 (0x00a2)

フィールド

フィールド型既定値Auto説明
msg_taguint(8)48BER タグオクテット (0x30 SEQUENCE、0x02 INTEGER、0x04 OCTET STRING)。
msg_lengthuint(8)ヘッダとペイロードの長さ (オクテット単位) (-2)SNMP メッセージ SEQUENCE の BER 長 (自動。短形式、128 未満)。
version_taguint(8)2BER タグオクテット (0x30 SEQUENCE、0x02 INTEGER、0x04 OCTET STRING)。
version_lengthuint(8)1バージョン INTEGER の BER 長 (1)。
versionenum(8)1 (v2c)SNMP バージョン (0 = v1、1 = v2c)。
community_taguint(8)4BER タグオクテット (0x30 SEQUENCE、0x02 INTEGER、0x04 OCTET STRING)。
community_lengthuint(8)6コミュニティ文字列の BER 長 (オクテット)。
communitybytes — community_length オクテット70 75 62 6c 69 63コミュニティ文字列 (例: “public”)。

version

値名前
0 (0x00)v1
1 (0x01)v2c

次レイヤ

次レイヤは version で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
(その他の値)snmp_pdu

制約

レベル規則
警告msg_tag が 48
警告ヘッダとペイロードが 129 オクテット以下

サンプルテンプレート

SNMP PDU (snmp_pdu)

下位レイヤからの到達

下位レイヤ判別フィールド値
snmpversion(その他の値)

フィールド

フィールド型既定値Auto説明
pdu_typeenum(8)160 (get_request)PDU タグ (0xa0 GetRequest、0xa2 Response、0xa4 v1 Trap、0xa7 SNMPv2-Trap など)。
pdu_lengthuint(8)ヘッダとペイロードの長さ (オクテット単位) (-2)PDU 内容の BER 長 (自動。短形式、128 未満)。
bodytlv — PDU の残りすべて4 要素BER TLV で表した PDU 内容: request-id、error-status、error-index と variable-bindings SEQUENCE。

pdu_type

値名前
160 (0xa0)get_request
161 (0xa1)get_next_request
162 (0xa2)response
163 (0xa3)set_request
165 (0xa5)get_bulk_request
166 (0xa6)inform_request
167 (0xa7)snmpv2_trap
168 (0xa8)report

body

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)integer
4 (0x04)octet_string
5 (0x05)null
6 (0x06)object_identifier
64 (0x40)ip_addressaddress
65 (0x41)counter32
66 (0x42)gauge32
67 (0x43)timeticks
68 (0x44)opaque
70 (0x46)counter64
128 (0x80)no_such_object
129 (0x81)no_such_instance
130 (0x82)end_of_mib_view
48 (0x30)sequenceitems

body › ip_address

フィールド型既定値Auto説明
addressipv4

body › sequence

フィールド型既定値Auto説明
itemstlv — PDU の残りすべて
body › sequence › items
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)integer
4 (0x04)octet_string
5 (0x05)null
6 (0x06)object_identifier
64 (0x40)ip_addressaddress
65 (0x41)counter32
66 (0x42)gauge32
67 (0x43)timeticks
68 (0x44)opaque
70 (0x46)counter64
128 (0x80)no_such_object
129 (0x81)no_such_instance
130 (0x82)end_of_mib_view
48 (0x30)sequenceitems
body › sequence › items › ip_address
フィールド型既定値Auto説明
addressipv4
body › sequence › items › sequence
フィールド型既定値Auto説明
itemstlv — PDU の残りすべて

body › sequence › items › sequence › items

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)integer
4 (0x04)octet_string
5 (0x05)null
6 (0x06)object_identifier
64 (0x40)ip_addressaddress
65 (0x41)counter32
66 (0x42)gauge32
67 (0x43)timeticks
68 (0x44)opaque
70 (0x46)counter64
128 (0x80)no_such_object
129 (0x81)no_such_instance
130 (0x82)end_of_mib_view

body › sequence › items › sequence › items › ip_address

フィールド型既定値Auto説明
addressipv4

次レイヤ

次レイヤは pdu_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
164 (0xa4)snmp_trapこのレイヤを読み直す

制約

レベル規則
警告ヘッダとペイロードが 129 オクテット以下

サンプルテンプレート

SNMPv1 Trap (snmp_trap)

下位レイヤからの到達

下位レイヤ判別フィールド値
snmp_pdupdu_type164 (0xa4) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
pdu_typeenum(8)164 (trap)PDU タグ (0xa0 GetRequest、0xa2 Response、0xa4 v1 Trap、0xa7 SNMPv2-Trap など)。
pdu_lengthuint(8)ヘッダとペイロードの長さ (オクテット単位) (-2)PDU 内容の BER 長 (自動。短形式、128 未満)。
bodytlv — PDU の残りすべて6 要素BER TLV で表した Trap 内容: enterprise、agent-addr、generic-trap、specific-trap、time-stamp と variable-bindings。

pdu_type

値名前
164 (0xa4)trap

body

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)integer
4 (0x04)octet_string
5 (0x05)null
6 (0x06)object_identifier
64 (0x40)ip_addressaddress
65 (0x41)counter32
66 (0x42)gauge32
67 (0x43)timeticks
68 (0x44)opaque
70 (0x46)counter64
128 (0x80)no_such_object
129 (0x81)no_such_instance
130 (0x82)end_of_mib_view
48 (0x30)sequenceitems

body › ip_address

フィールド型既定値Auto説明
addressipv4

body › sequence

フィールド型既定値Auto説明
itemstlv — PDU の残りすべて
body › sequence › items
  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)integer
4 (0x04)octet_string
5 (0x05)null
6 (0x06)object_identifier
64 (0x40)ip_addressaddress
65 (0x41)counter32
66 (0x42)gauge32
67 (0x43)timeticks
68 (0x44)opaque
70 (0x46)counter64
128 (0x80)no_such_object
129 (0x81)no_such_instance
130 (0x82)end_of_mib_view
48 (0x30)sequenceitems
body › sequence › items › ip_address
フィールド型既定値Auto説明
addressipv4
body › sequence › items › sequence
フィールド型既定値Auto説明
itemstlv — PDU の残りすべて

body › sequence › items › sequence › items

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
2 (0x02)integer
4 (0x04)octet_string
5 (0x05)null
6 (0x06)object_identifier
64 (0x40)ip_addressaddress
65 (0x41)counter32
66 (0x42)gauge32
67 (0x43)timeticks
68 (0x44)opaque
70 (0x46)counter64
128 (0x80)no_such_object
129 (0x81)no_such_instance
130 (0x82)end_of_mib_view

body › sequence › items › sequence › items › ip_address

フィールド型既定値Auto説明
addressipv4

制約

レベル規則
警告pdu_type が 164
警告ヘッダとペイロードが 129 オクテット以下

サンプルテンプレート

  • snmp-trap-v1 — templates/protocols/app/snmp-trap-v1.wpg.yaml

Syslog (syslog)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port514 (0x0202)

フィールド

フィールド型既定値Auto説明
messagebytes — PDU の残りすべて3c 33 34 3e 31 20 32 30 32 36 2d 30 31 2d 30 31 54 30 30 3a 30 30 3a 30 30 5a 20 68 6f 73 74 20 61 70 70 20 2d 20 2d 20 2d 20 68 65 6c 6c 6f<PRI> (ファシリティ * 8 + 重大度) で始まる Syslog メッセージ本文。

サンプルテンプレート

  • syslog — templates/protocols/app/syslog.wpg.yaml

RADIUS (radius)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port1812 (0x0714)
udpdst_port / src_port1813 (0x0715)

フィールド

フィールド型既定値Auto説明
codeenum(8)1 (access_request)RADIUS パケット種別 (Access-Request、Access-Accept、Accounting-Request など)。
identifieruint(8)0要求と応答を対応付ける識別子。
lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)RADIUS パケット全体の長さ (オクテット、自動)。
authenticatorbytes(16)00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0016 オクテットの Request / Response Authenticator (手動)。
attributestlv — length - 20 オクテット2 要素RADIUS 属性 (8 ビット型、ヘッダを含む 8 ビット長)。

code

値名前
1 (0x01)access_request
2 (0x02)access_accept
3 (0x03)access_reject
4 (0x04)accounting_request
5 (0x05)accounting_response
11 (0x0b)access_challenge
12 (0x0c)status_server
40 (0x28)disconnect_request
41 (0x29)disconnect_ack
42 (0x2a)disconnect_nak
43 (0x2b)coa_request
44 (0x2c)coa_ack
45 (0x2d)coa_nak

attributes

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)user_name
2 (0x02)user_password
3 (0x03)chap_password
4 (0x04)nas_ip_addressaddress
5 (0x05)nas_portvalue
6 (0x06)service_typevalue
7 (0x07)framed_protocolvalue
8 (0x08)framed_ip_addressaddress
18 (0x12)reply_message
24 (0x18)state
25 (0x19)class
26 (0x1a)vendor_specificvendor_id, value
27 (0x1b)session_timeoutvalue
30 (0x1e)called_station_id
31 (0x1f)calling_station_id
32 (0x20)nas_identifier
40 (0x28)acct_status_typevalue
44 (0x2c)acct_session_id
61 (0x3d)nas_port_typevalue
79 (0x4f)eap_message
80 (0x50)message_authenticator

attributes › nas_ip_address

フィールド型既定値Auto説明
addressipv4

attributes › nas_port

フィールド型既定値Auto説明
valueuint(32)

attributes › service_type

フィールド型既定値Auto説明
valueuint(32)

attributes › framed_protocol

フィールド型既定値Auto説明
valueuint(32)

attributes › framed_ip_address

フィールド型既定値Auto説明
addressipv4

attributes › vendor_specific

フィールド型既定値Auto説明
vendor_iduint(32)
valuebytes — PDU の残りすべて

attributes › session_timeout

フィールド型既定値Auto説明
valueuint(32)

attributes › acct_status_type

フィールド型既定値Auto説明
valueuint(32)

attributes › nas_port_type

フィールド型既定値Auto説明
valueuint(32)

制約

レベル規則
警告length が 20..4096 の範囲

サンプルテンプレート

TFTP (tftp)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port69 (0x0045)

フィールド

フィールド型既定値Auto説明
opcodeenum(16)1 (rrq)TFTP オペコード (1 = RRQ、2 = WRQ、3 = DATA、4 = ACK、5 = ERROR、6 = OACK)。
filenamecstring"boot.bin"ファイル名 (NUL 終端)。
modecstring"octet"転送モード: netascii、octet、mail (NUL 終端)。
optionslist<struct> — PDU の残りすべて[]オプション名 / 値の文字列ペア (RFC 2347): blksize、timeout、tsize、windowsize など。

opcode

値名前
1 (0x0001)rrq
2 (0x0002)wrq
3 (0x0003)data
4 (0x0004)ack
5 (0x0005)error
6 (0x0006)oack

options

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
namecstring"blksize"
valuecstring"1428"

次レイヤ

次レイヤは opcode で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
3 (0x0003)tftp_dataこのレイヤを読み直す
4 (0x0004)tftp_ackこのレイヤを読み直す
5 (0x0005)tftp_errorこのレイヤを読み直す
6 (0x0006)tftp_oackこのレイヤを読み直す

サンプルテンプレート

  • tftp-rrq — templates/protocols/app/tftp-rrq.wpg.yaml

TFTP DATA (tftp_data)

下位レイヤからの到達

下位レイヤ判別フィールド値
tftpopcode3 (0x0003) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
opcodeenum(16)3 (data)TFTP オペコード (1 = RRQ、2 = WRQ、3 = DATA、4 = ACK、5 = ERROR、6 = OACK)。
blockuint(16)1ブロック番号 (1 から開始)。
databytes — PDU の残りすべて""データオクテット (ブロックあたり 512。短いブロックで転送終了)。

opcode

値名前
1 (0x0001)rrq
2 (0x0002)wrq
3 (0x0003)data
4 (0x0004)ack
5 (0x0005)error
6 (0x0006)oack

制約

レベル規則
警告opcode が 3

サンプルテンプレート

  • tftp-data — templates/protocols/app/tftp-data.wpg.yaml

TFTP ACK (tftp_ack)

下位レイヤからの到達

下位レイヤ判別フィールド値
tftpopcode4 (0x0004) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
opcodeenum(16)4 (ack)TFTP オペコード (1 = RRQ、2 = WRQ、3 = DATA、4 = ACK、5 = ERROR、6 = OACK)。
blockuint(16)1ブロック番号 (1 から開始)。

opcode

値名前
1 (0x0001)rrq
2 (0x0002)wrq
3 (0x0003)data
4 (0x0004)ack
5 (0x0005)error
6 (0x0006)oack

制約

レベル規則
警告opcode が 4

サンプルテンプレート

  • tftp-ack — templates/protocols/app/tftp-ack.wpg.yaml

TFTP ERROR (tftp_error)

下位レイヤからの到達

下位レイヤ判別フィールド値
tftpopcode5 (0x0005) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
opcodeenum(16)5 (error)TFTP オペコード (1 = RRQ、2 = WRQ、3 = DATA、4 = ACK、5 = ERROR、6 = OACK)。
error_codeenum(16)1 (file_not_found)TFTP エラーコード (1 = ファイルなし、2 = アクセス違反 など)。
messagecstring"File not found"エラーメッセージ (NUL 終端)。

opcode

値名前
1 (0x0001)rrq
2 (0x0002)wrq
3 (0x0003)data
4 (0x0004)ack
5 (0x0005)error
6 (0x0006)oack

error_code

値名前
0 (0x0000)not_defined
1 (0x0001)file_not_found
2 (0x0002)access_violation
3 (0x0003)disk_full
4 (0x0004)illegal_operation
5 (0x0005)unknown_tid
6 (0x0006)file_exists
7 (0x0007)no_such_user
8 (0x0008)option_negotiation

制約

レベル規則
警告opcode が 5

サンプルテンプレート

  • tftp-error — templates/protocols/app/tftp-error.wpg.yaml

TFTP OACK (tftp_oack)

下位レイヤからの到達

下位レイヤ判別フィールド値
tftpopcode6 (0x0006) (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
opcodeenum(16)6 (oack)TFTP オペコード (1 = RRQ、2 = WRQ、3 = DATA、4 = ACK、5 = ERROR、6 = OACK)。
optionslist<struct> — PDU の残りすべて1 要素オプション名 / 値の文字列ペア (RFC 2347): blksize、timeout、tsize、windowsize など。

opcode

値名前
1 (0x0001)rrq
2 (0x0002)wrq
3 (0x0003)data
4 (0x0004)ack
5 (0x0005)error
6 (0x0006)oack

options

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
namecstring"blksize"
valuecstring"1428"

制約

レベル規則
警告opcode が 6

サンプルテンプレート

  • tftp-oack — templates/protocols/app/tftp-oack.wpg.yaml

LDP (ldp)

下位レイヤからの到達

下位レイヤ判別フィールド値
tcpdst_port / src_port646 (0x0286)
udpdst_port / src_port646 (0x0286)

フィールド

フィールド型既定値Auto説明
versionuint(16)1LDP バージョン(1)。
pdu_lengthuint(16)ヘッダの長さ (オクテット単位) (-4)バージョンと PDU 長を除く PDU の長さ(Auto)。
lsr_idipv4192.0.2.1LSR ID: LDP 識別子の先頭 4 オクテット。
label_spaceuint(16)0ラベル空間 ID: LDP 識別子の末尾 2 オクテット(0 = プラットフォーム共通)。
messagestlv — pdu_length - 6 オクテット1 要素メッセージ(U ビットを含む 16 ビット型、値の 16 ビット長、メッセージ ID、TLV): Notification、Hello、Initialization、KeepAlive、Address / Address Withdraw、Label Mapping / Request / Withdraw / Release / Abort Request。TLV: FEC、Address List、Hop Count、Path Vector、Generic Label、Status、Common Hello / Session Parameters、トランスポートアドレス、Configuration Sequence Number。長さは Auto。

messages

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)notificationmessage_id, tlvs
256 (0x0100)hellomessage_id, tlvs
512 (0x0200)initializationmessage_id, tlvs
513 (0x0201)keepalivemessage_id, tlvs
768 (0x0300)addressmessage_id, tlvs
769 (0x0301)address_withdrawmessage_id, tlvs
1024 (0x0400)label_mappingmessage_id, tlvs
1025 (0x0401)label_requestmessage_id, tlvs
1026 (0x0402)label_withdrawmessage_id, tlvs
1027 (0x0403)label_releasemessage_id, tlvs
1028 (0x0404)label_abort_requestmessage_id, tlvs

messages › notification

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて1 要素
messages › notification › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › notification › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › notification › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › notification › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › notification › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › notification › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › notification › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › notification › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › notification › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › notification › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › notification › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › notification › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › notification › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › notification › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › notification › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › notification › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › notification › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › notification › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › hello

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて1 要素
messages › hello › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › hello › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › hello › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › hello › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › hello › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › hello › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › hello › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › hello › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › hello › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › hello › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › hello › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › hello › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › hello › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › hello › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › hello › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › hello › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › hello › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › hello › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › initialization

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて1 要素
messages › initialization › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › initialization › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › initialization › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › initialization › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › initialization › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › initialization › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › initialization › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › initialization › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › initialization › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › initialization › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › initialization › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › initialization › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › initialization › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › initialization › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › initialization › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › initialization › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › initialization › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › initialization › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › keepalive

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて[]
messages › keepalive › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › keepalive › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › keepalive › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › keepalive › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › keepalive › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › keepalive › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › keepalive › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › keepalive › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › keepalive › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › keepalive › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › keepalive › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › keepalive › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › keepalive › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › keepalive › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › keepalive › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › keepalive › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › keepalive › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › keepalive › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › address

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて[]
messages › address › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › address › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › address › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › address › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › address › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › address › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › address › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › address › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › address › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › address › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › address › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › address › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › address › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › address › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › address › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › address › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › address › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › address › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › address_withdraw

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて[]
messages › address_withdraw › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › address_withdraw › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › address_withdraw › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › address_withdraw › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › address_withdraw › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › address_withdraw › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › address_withdraw › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › address_withdraw › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › address_withdraw › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › address_withdraw › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › address_withdraw › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › address_withdraw › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › address_withdraw › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › address_withdraw › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › address_withdraw › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › address_withdraw › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › address_withdraw › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › address_withdraw › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › label_mapping

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて[]
messages › label_mapping › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › label_mapping › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › label_mapping › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › label_mapping › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › label_mapping › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › label_mapping › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › label_mapping › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › label_mapping › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › label_mapping › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › label_mapping › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › label_mapping › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › label_mapping › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › label_mapping › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › label_mapping › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › label_mapping › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › label_mapping › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › label_mapping › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › label_mapping › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › label_request

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて[]
messages › label_request › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › label_request › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › label_request › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › label_request › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › label_request › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › label_request › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › label_request › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › label_request › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › label_request › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › label_request › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › label_request › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › label_request › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › label_request › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › label_request › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › label_request › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › label_request › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › label_request › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › label_request › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › label_withdraw

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて[]
messages › label_withdraw › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › label_withdraw › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › label_withdraw › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › label_withdraw › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › label_withdraw › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › label_withdraw › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › label_withdraw › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › label_withdraw › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › label_withdraw › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › label_withdraw › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › label_withdraw › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › label_withdraw › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › label_withdraw › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › label_withdraw › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › label_withdraw › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › label_withdraw › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › label_withdraw › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › label_withdraw › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › label_release

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて[]
messages › label_release › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › label_release › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › label_release › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › label_release › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › label_release › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › label_release › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › label_release › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › label_release › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › label_release › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › label_release › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › label_release › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › label_release › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › label_release › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › label_release › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › label_release › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › label_release › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › label_release › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › label_release › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

messages › label_abort_request

フィールド型既定値Auto説明
message_iduint(32)1
tlvstlv — PDU の残りすべて[]
messages › label_abort_request › tlvs
  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
256 (0x0100)fec_wildcardelement_type; 値が 01 で始まるとき
256 (0x0100)fecelements
257 (0x0101)address_listaddress_family, addresses; 値が 00 01 で始まるとき
257 (0x0101)address_list_ipv6address_family, addresses; 値が 00 02 で始まるとき
259 (0x0103)hop_counthop_count
260 (0x0104)path_vectorlsr_ids
512 (0x0200)generic_labelreserved, label
768 (0x0300)statuse, f, status_code, message_id, message_type
1024 (0x0400)common_hello_parametershold_time, t, r, g, reserved
1025 (0x0401)ipv4_transport_addressaddress
1026 (0x0402)configuration_sequence_numbersequence_number
1027 (0x0403)ipv6_transport_addressaddress
1280 (0x0500)common_session_parametersprotocol_version, keepalive_time, a, d, reserved, pv_lim, max_pdu_length, receiver_lsr_id, receiver_label_space
1536 (0x0600)label_request_message_idmessage_id
messages › label_abort_request › tlvs › fec_wildcard
フィールド型既定値Auto説明
element_typeuint(8)1
messages › label_abort_request › tlvs › fec
フィールド型既定値Auto説明
elementslist<struct> — PDU の残りすべて

messages › label_abort_request › tlvs › fec › elements

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
element_typeuint(8)2
address_familyenum(16)1 (ipv4)
prefix_lengthuint(8)
prefixbytes — (prefix_length + 7) / 8 オクテット

messages › label_abort_request › tlvs › fec › elements › address_family

値名前
1 (0x0001)ipv4
2 (0x0002)ipv6
messages › label_abort_request › tlvs › address_list
フィールド型既定値Auto説明
address_familyuint(16)1
addresseslist<ipv4> — PDU の残りすべて
messages › label_abort_request › tlvs › address_list_ipv6
フィールド型既定値Auto説明
address_familyuint(16)2
addresseslist<ipv6> — PDU の残りすべて
messages › label_abort_request › tlvs › hop_count
フィールド型既定値Auto説明
hop_countuint(8)1
messages › label_abort_request › tlvs › path_vector
フィールド型既定値Auto説明
lsr_idslist<ipv4> — PDU の残りすべて
messages › label_abort_request › tlvs › generic_label
フィールド型既定値Auto説明
reserveduint(12)0
labeluint(20)16
messages › label_abort_request › tlvs › status
フィールド型既定値Auto説明
euint(1)0
fuint(1)0
status_codeenum(30)0 (success)
message_iduint(32)
message_typeuint(16)

messages › label_abort_request › tlvs › status › status_code

値名前
0 (0x00000000)success
1 (0x00000001)bad_ldp_identifier
2 (0x00000002)bad_protocol_version
3 (0x00000003)bad_pdu_length
4 (0x00000004)unknown_message_type
5 (0x00000005)bad_message_length
6 (0x00000006)unknown_tlv
7 (0x00000007)bad_tlv_length
8 (0x00000008)malformed_tlv_value
9 (0x00000009)hold_timer_expired
10 (0x0000000a)shutdown
11 (0x0000000b)loop_detected
12 (0x0000000c)unknown_fec
13 (0x0000000d)no_route
14 (0x0000000e)no_label_resources
15 (0x0000000f)label_resources_available
16 (0x00000010)session_rejected_no_hello
17 (0x00000011)session_rejected_advertisement_mode
18 (0x00000012)session_rejected_max_pdu_length
19 (0x00000013)session_rejected_label_range
20 (0x00000014)keepalive_timer_expired
21 (0x00000015)label_request_aborted
22 (0x00000016)missing_message_parameters
23 (0x00000017)unsupported_address_family
24 (0x00000018)session_rejected_bad_keepalive_time
25 (0x00000019)internal_error
messages › label_abort_request › tlvs › common_hello_parameters
フィールド型既定値Auto説明
hold_timeuint(16)15
tuint(1)0
ruint(1)0
guint(1)0
reserveduint(13)0
messages › label_abort_request › tlvs › ipv4_transport_address
フィールド型既定値Auto説明
addressipv4
messages › label_abort_request › tlvs › configuration_sequence_number
フィールド型既定値Auto説明
sequence_numberuint(32)1
messages › label_abort_request › tlvs › ipv6_transport_address
フィールド型既定値Auto説明
addressipv6
messages › label_abort_request › tlvs › common_session_parameters
フィールド型既定値Auto説明
protocol_versionuint(16)1
keepalive_timeuint(16)180
auint(1)0
duint(1)0
reserveduint(6)0
pv_limuint(8)0
max_pdu_lengthuint(16)0
receiver_lsr_idipv4192.0.2.2
receiver_label_spaceuint(16)0
messages › label_abort_request › tlvs › label_request_message_id
フィールド型既定値Auto説明
message_iduint(32)

制約

レベル規則
警告version が 1
エラーヘッダが 10 オクテット以上
警告ヘッダが 4096 オクテット以下

サンプルテンプレート

BFD (bfd)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port3784 (0x0ec8)
udpdst_port / src_port4784 (0x12b0)
udpdst_port / src_port6784 (0x1a80)

フィールド

フィールド型既定値Auto説明
versionuint(3)1BFD バージョン(1)。
diagenum(5)0 (no_diagnostic)診断コード: ローカルセッションが最後に状態を変えた理由。
stateenum(2)1 (down)セッション状態: 0 AdminDown、1 Down、2 Init、3 Up。
puint(1)0P ビット: Poll(パラメータ変更。相手は F で応答)。
fuint(1)0F ビット: Final(Poll への応答)。
cuint(1)0C ビット: コントロールプレーン非依存。
auint(1)authentication の要素数A ビット: 認証あり(Auto: 認証セクションがあれば 1)。
duint(1)0D ビット: デマンドモード。
muint(1)0M ビット: マルチポイント(0)。
detect_multuint(8)3検出時間の乗数。
lengthuint(8)ヘッダの長さ (オクテット単位)認証セクションを含む制御パケットのオクテット長(Auto)。
my_discriminatoruint(32)1My Discriminator: 送信側でセッションを一意に表す 0 以外の値。
your_discriminatoruint(32)0Your Discriminator: 相手の Discriminator(不明な間は 0)。
desired_min_tx_intervaluint(32)1000000希望する最小送信間隔(マイクロ秒)。
required_min_rx_intervaluint(32)1000000要求する最小受信間隔(マイクロ秒)。
required_min_echo_rx_intervaluint(32)0要求する最小エコー受信間隔(マイクロ秒、0 = エコーなし)。
authenticationtlv — length - 24 オクテット認証セクション(8 ビット型、ヘッダを含む 8 ビット長): 簡易パスワード、Keyed MD5 / SHA1 とその Meticulous 版。ダイジェスト / ハッシュは手動。

diag

値名前
0no_diagnostic
1control_detection_time_expired
2echo_function_failed
3neighbor_signaled_session_down
4forwarding_plane_reset
5path_down
6concatenated_path_down
7administratively_down
8reverse_concatenated_path_down
9mis_connectivity_defect

state

値名前
0admin_down
1down
2init
3up

authentication

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)simple_passwordkey_id, password
2 (0x02)keyed_md5key_id, reserved, sequence_number, digest
3 (0x03)meticulous_keyed_md5key_id, reserved, sequence_number, digest
4 (0x04)keyed_sha1key_id, reserved, sequence_number, hash
5 (0x05)meticulous_keyed_sha1key_id, reserved, sequence_number, hash

authentication › simple_password

フィールド型既定値Auto説明
key_iduint(8)1
passwordbytes — PDU の残りすべて

authentication › keyed_md5

フィールド型既定値Auto説明
key_iduint(8)1
reserveduint(8)0
sequence_numberuint(32)
digestbytes(16)

authentication › meticulous_keyed_md5

フィールド型既定値Auto説明
key_iduint(8)1
reserveduint(8)0
sequence_numberuint(32)
digestbytes(16)

authentication › keyed_sha1

フィールド型既定値Auto説明
key_iduint(8)1
reserveduint(8)0
sequence_numberuint(32)
hashbytes(20)

authentication › meticulous_keyed_sha1

フィールド型既定値Auto説明
key_iduint(8)1
reserveduint(8)0
sequence_numberuint(32)
hashbytes(20)

制約

レベル規則
警告version が 1
警告detect_mult が 0 以外
警告my_discriminator が 0 以外
エラーヘッダが 24 オクテット以上

サンプルテンプレート

GTPv2-C (gtpv2)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port2123 (0x084b)
gtpv2p1 (残り 8 オクテット以上)

フィールド

フィールド型既定値Auto説明
versionuint(3)2GTP バージョン(2)。
puint(1)0P フラグ: ピギーバックされたメッセージが続く(次の GTPv2-C レイヤ)。
tuint(1)teid の要素数T フラグ: TEID フィールドあり(Auto: TEID を指定すると 1)。
mpuint(1)0MP フラグ: メッセージ優先度あり。
spareuint(2)0
message_typeenum(8)32 (create_session_request)メッセージ種別(Echo、Create / Modify / Delete Session、Create / Update / Delete Bearer など)。
message_lengthuint(16)ヘッダの長さ (オクテット単位) (-4)先頭 4 オクテットを除くメッセージ長(Auto)。
teidlist<uint(32)> — t 個の要素1 要素受信側の Tunnel Endpoint Identifier(Echo メッセージにはない。最初の要求では 0)。
sequence_numberuint(24)1応答と要求を対応付けるシーケンス番号(24 ビット)。
message_priorityuint(4)0メッセージ優先度(0 が最高)。MP が 1 のときに使用。
spare2uint(4)0
iestlv — グループ先頭から message_length + 4 オクテットまで6 要素情報要素(8 ビット型、データの 16 ビット長、スペア / インスタンスの 1 オクテット): IMSI、Cause、Recovery、APN、AMBR、EBI、IP Address、MEI、MSISDN、PAA、Bearer QoS、RAT Type、Serving Network、F-TEID、Bearer Context(グループ化)、PDN Type など。長さは Auto。

message_type

値名前
1 (0x01)echo_request
2 (0x02)echo_response
3 (0x03)version_not_supported
32 (0x20)create_session_request
33 (0x21)create_session_response
34 (0x22)modify_bearer_request
35 (0x23)modify_bearer_response
36 (0x24)delete_session_request
37 (0x25)delete_session_response
95 (0x5f)create_bearer_request
96 (0x60)create_bearer_response
97 (0x61)update_bearer_request
98 (0x62)update_bearer_response
99 (0x63)delete_bearer_request
100 (0x64)delete_bearer_response
170 (0xaa)release_access_bearers_request
171 (0xab)release_access_bearers_response
176 (0xb0)downlink_data_notification
177 (0xb1)downlink_data_notification_ack

ies

  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 長さの直後にある値の先頭 1 オクテットは長さに数えません。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)imsispare, instance, digits
2 (0x02)causespare, instance, cause, spare2, pce, bce, cs, offending_ie
3 (0x03)recoveryspare, instance, restart_counter
71 (0x47)apnspare, instance, apn
72 (0x48)ambrspare, instance, uplink, downlink
73 (0x49)ebispare, instance, spare2, ebi
74 (0x4a)ip_addressspare, instance, address; 値が 5 オクテットのとき
74 (0x4a)ip_address_ipv6spare, instance, address; 値が 17 オクテットのとき
75 (0x4b)meispare, instance, digits
76 (0x4c)msisdnspare, instance, digits
77 (0x4d)indicationspare, instance, flags
78 (0x4e)pcospare, instance, data
79 (0x4f)paaspare, instance, spare2, pdn_type, ipv4; 値が 6 オクテットのとき
79 (0x4f)paa_ipv6spare, instance, spare2, pdn_type, ipv6_prefix_length, ipv6; 値が 19 オクテットのとき
79 (0x4f)paa_ipv4v6spare, instance, spare2, pdn_type, ipv6_prefix_length, ipv6, ipv4; 値が 23 オクテットのとき
80 (0x50)bearer_qosspare, instance, spare2, pci, pl, spare3, pvi, qci, mbr_uplink, mbr_downlink, gbr_uplink, gbr_downlink
82 (0x52)rat_typespare, instance, rat_type
83 (0x53)serving_networkspare, instance, mcc_digit2, mcc_digit1, mnc_digit3, mcc_digit3, mnc_digit2, mnc_digit1
84 (0x54)bearer_tftspare, instance, tft
86 (0x56)ulispare, instance, data
87 (0x57)fteidspare, instance, v4, v6, interface_type, teid, ipv4; 値が 10 オクテットのとき
87 (0x57)fteid_ipv6spare, instance, v4, v6, interface_type, teid, ipv6; 値が 22 オクテットのとき
87 (0x57)fteid_ipv4v6spare, instance, v4, v6, interface_type, teid, ipv4, ipv6; 値が 26 オクテットのとき
94 (0x5e)charging_idspare, instance, charging_id
95 (0x5f)charging_characteristicsspare, instance, value
99 (0x63)pdn_typespare, instance, spare2, pdn_type
114 (0x72)ue_time_zonespare, instance, time_zone, spare2, daylight_saving_time
127 (0x7f)apn_restrictionspare, instance, restriction
128 (0x80)selection_modespare, instance, spare2, selection_mode
255 (0xff)private_extensionspare, instance, enterprise_id, value
93 (0x5d)bearer_contextspare, instance, ies

ies › imsi

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
digitsbytes — PDU の残りすべて

ies › cause

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
causeenum(8)16 (request_accepted)
spare2uint(5)0
pceuint(1)0
bceuint(1)0
csuint(1)0
offending_iebytes — PDU の残りすべて
ies › cause › cause
値名前
2 (0x02)local_detach
3 (0x03)complete_detach
4 (0x04)rat_changed_from_3gpp_to_non_3gpp
8 (0x08)isr_deactivation
16 (0x10)request_accepted
17 (0x11)request_accepted_partially
18 (0x12)new_pdn_type_due_to_network_preference
19 (0x13)new_pdn_type_due_to_single_address_bearer_only
64 (0x40)context_not_found
65 (0x41)invalid_message_format
66 (0x42)version_not_supported_by_next_peer
67 (0x43)invalid_length
68 (0x44)service_not_supported
69 (0x45)mandatory_ie_incorrect
70 (0x46)mandatory_ie_missing
72 (0x48)system_failure
73 (0x49)no_resources_available
78 (0x4e)missing_or_unknown_apn
83 (0x53)preferred_pdn_type_not_supported
84 (0x54)all_dynamic_addresses_are_occupied
89 (0x59)service_denied
92 (0x5c)user_authentication_failed
93 (0x5d)apn_access_denied_no_subscription
94 (0x5e)request_rejected
100 (0x64)remote_peer_not_responding
110 (0x6e)temporarily_rejected_due_to_handover_in_progress

ies › recovery

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
restart_counteruint(8)0

ies › apn

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
apnbytes — PDU の残りすべて

ies › ambr

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
uplinkuint(32)1000
downlinkuint(32)1000

ies › ebi

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(4)0
ebiuint(4)5

ies › ip_address

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
addressipv4

ies › ip_address_ipv6

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
addressipv6

ies › mei

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
digitsbytes — PDU の残りすべて

ies › msisdn

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
digitsbytes — PDU の残りすべて

ies › indication

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
flagsbytes — PDU の残りすべて

ies › pco

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
databytes — PDU の残りすべて

ies › paa

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(5)0
pdn_typeuint(3)1
ipv4ipv4

ies › paa_ipv6

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(5)0
pdn_typeuint(3)2
ipv6_prefix_lengthuint(8)64
ipv6ipv6::

ies › paa_ipv4v6

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(5)0
pdn_typeuint(3)3
ipv6_prefix_lengthuint(8)64
ipv6ipv6::
ipv4ipv4

ies › bearer_qos

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(1)0
pciuint(1)0
pluint(4)15
spare3uint(1)0
pviuint(1)0
qciuint(8)9
mbr_uplinkuint(40)0
mbr_downlinkuint(40)0
gbr_uplinkuint(40)0
gbr_downlinkuint(40)0

ies › rat_type

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
rat_typeenum(8)6 (eutran)
ies › rat_type › rat_type
値名前
1 (0x01)utran
2 (0x02)geran
3 (0x03)wlan
4 (0x04)gan
5 (0x05)hspa_evolution
6 (0x06)eutran
7 (0x07)virtual
8 (0x08)eutran_nb_iot
9 (0x09)lte_m
10 (0x0a)nr

ies › serving_network

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
mcc_digit2uint(4)0
mcc_digit1uint(4)0
mnc_digit3uint(4)15
mcc_digit3uint(4)1
mnc_digit2uint(4)1
mnc_digit1uint(4)0

ies › bearer_tft

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
tftbytes — PDU の残りすべて

ies › uli

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
databytes — PDU の残りすべて

ies › fteid

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
v4uint(1)1
v6uint(1)0
interface_typeenum(6)10 (s11_mme_gtp_c)
teiduint(32)1
ipv4ipv4192.0.2.1
ies › fteid › interface_type
値名前
0s1_u_enodeb_gtp_u
1s1_u_sgw_gtp_u
2s12_rnc_gtp_u
3s12_sgw_gtp_u
4s5_s8_sgw_gtp_u
5s5_s8_pgw_gtp_u
6s5_s8_sgw_gtp_c
7s5_s8_pgw_gtp_c
10s11_mme_gtp_c
11s11_s4_sgw_gtp_c
16s2b_epdg_gtp_c
17s2b_u_epdg_gtp_u
18s2b_pgw_gtp_c
19s2b_u_pgw_gtp_u

ies › fteid_ipv6

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
v4uint(1)0
v6uint(1)1
interface_typeenum(6)10 (s11_mme_gtp_c)
teiduint(32)1
ipv6ipv62001:db8::1
ies › fteid_ipv6 › interface_type
値名前
0s1_u_enodeb_gtp_u
1s1_u_sgw_gtp_u
2s12_rnc_gtp_u
3s12_sgw_gtp_u
4s5_s8_sgw_gtp_u
5s5_s8_pgw_gtp_u
6s5_s8_sgw_gtp_c
7s5_s8_pgw_gtp_c
10s11_mme_gtp_c
11s11_s4_sgw_gtp_c
16s2b_epdg_gtp_c
17s2b_u_epdg_gtp_u
18s2b_pgw_gtp_c
19s2b_u_pgw_gtp_u

ies › fteid_ipv4v6

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
v4uint(1)1
v6uint(1)1
interface_typeenum(6)10 (s11_mme_gtp_c)
teiduint(32)1
ipv4ipv4192.0.2.1
ipv6ipv62001:db8::1
ies › fteid_ipv4v6 › interface_type
値名前
0s1_u_enodeb_gtp_u
1s1_u_sgw_gtp_u
2s12_rnc_gtp_u
3s12_sgw_gtp_u
4s5_s8_sgw_gtp_u
5s5_s8_pgw_gtp_u
6s5_s8_sgw_gtp_c
7s5_s8_pgw_gtp_c
10s11_mme_gtp_c
11s11_s4_sgw_gtp_c
16s2b_epdg_gtp_c
17s2b_u_epdg_gtp_u
18s2b_pgw_gtp_c
19s2b_u_pgw_gtp_u

ies › charging_id

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
charging_iduint(32)1

ies › charging_characteristics

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
valueuint(16)2048

ies › pdn_type

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(5)0
pdn_typeenum(3)1 (ipv4)
ies › pdn_type › pdn_type
値名前
1ipv4
2ipv6
3ipv4v6
4non_ip
5ethernet

ies › ue_time_zone

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
time_zoneuint(8)0
spare2uint(6)0
daylight_saving_timeuint(2)0

ies › apn_restriction

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
restrictionuint(8)0

ies › selection_mode

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(6)0
selection_modeuint(2)0

ies › private_extension

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
enterprise_iduint(16)0
valuebytes — PDU の残りすべて

ies › bearer_context

フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
iestlv — PDU の残りすべて1 要素
ies › bearer_context › ies
  • タイプ 8 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 長さの直後にある値の先頭 1 オクテットは長さに数えません。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x01)imsispare, instance, digits
2 (0x02)causespare, instance, cause, spare2, pce, bce, cs, offending_ie
3 (0x03)recoveryspare, instance, restart_counter
71 (0x47)apnspare, instance, apn
72 (0x48)ambrspare, instance, uplink, downlink
73 (0x49)ebispare, instance, spare2, ebi
74 (0x4a)ip_addressspare, instance, address; 値が 5 オクテットのとき
74 (0x4a)ip_address_ipv6spare, instance, address; 値が 17 オクテットのとき
75 (0x4b)meispare, instance, digits
76 (0x4c)msisdnspare, instance, digits
77 (0x4d)indicationspare, instance, flags
78 (0x4e)pcospare, instance, data
79 (0x4f)paaspare, instance, spare2, pdn_type, ipv4; 値が 6 オクテットのとき
79 (0x4f)paa_ipv6spare, instance, spare2, pdn_type, ipv6_prefix_length, ipv6; 値が 19 オクテットのとき
79 (0x4f)paa_ipv4v6spare, instance, spare2, pdn_type, ipv6_prefix_length, ipv6, ipv4; 値が 23 オクテットのとき
80 (0x50)bearer_qosspare, instance, spare2, pci, pl, spare3, pvi, qci, mbr_uplink, mbr_downlink, gbr_uplink, gbr_downlink
82 (0x52)rat_typespare, instance, rat_type
83 (0x53)serving_networkspare, instance, mcc_digit2, mcc_digit1, mnc_digit3, mcc_digit3, mnc_digit2, mnc_digit1
84 (0x54)bearer_tftspare, instance, tft
86 (0x56)ulispare, instance, data
87 (0x57)fteidspare, instance, v4, v6, interface_type, teid, ipv4; 値が 10 オクテットのとき
87 (0x57)fteid_ipv6spare, instance, v4, v6, interface_type, teid, ipv6; 値が 22 オクテットのとき
87 (0x57)fteid_ipv4v6spare, instance, v4, v6, interface_type, teid, ipv4, ipv6; 値が 26 オクテットのとき
94 (0x5e)charging_idspare, instance, charging_id
95 (0x5f)charging_characteristicsspare, instance, value
99 (0x63)pdn_typespare, instance, spare2, pdn_type
114 (0x72)ue_time_zonespare, instance, time_zone, spare2, daylight_saving_time
127 (0x7f)apn_restrictionspare, instance, restriction
128 (0x80)selection_modespare, instance, spare2, selection_mode
255 (0xff)private_extensionspare, instance, enterprise_id, value
ies › bearer_context › ies › imsi
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
digitsbytes — PDU の残りすべて
ies › bearer_context › ies › cause
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
causeenum(8)16 (request_accepted)
spare2uint(5)0
pceuint(1)0
bceuint(1)0
csuint(1)0
offending_iebytes — PDU の残りすべて

ies › bearer_context › ies › cause › cause

値名前
2 (0x02)local_detach
3 (0x03)complete_detach
4 (0x04)rat_changed_from_3gpp_to_non_3gpp
8 (0x08)isr_deactivation
16 (0x10)request_accepted
17 (0x11)request_accepted_partially
18 (0x12)new_pdn_type_due_to_network_preference
19 (0x13)new_pdn_type_due_to_single_address_bearer_only
64 (0x40)context_not_found
65 (0x41)invalid_message_format
66 (0x42)version_not_supported_by_next_peer
67 (0x43)invalid_length
68 (0x44)service_not_supported
69 (0x45)mandatory_ie_incorrect
70 (0x46)mandatory_ie_missing
72 (0x48)system_failure
73 (0x49)no_resources_available
78 (0x4e)missing_or_unknown_apn
83 (0x53)preferred_pdn_type_not_supported
84 (0x54)all_dynamic_addresses_are_occupied
89 (0x59)service_denied
92 (0x5c)user_authentication_failed
93 (0x5d)apn_access_denied_no_subscription
94 (0x5e)request_rejected
100 (0x64)remote_peer_not_responding
110 (0x6e)temporarily_rejected_due_to_handover_in_progress
ies › bearer_context › ies › recovery
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
restart_counteruint(8)0
ies › bearer_context › ies › apn
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
apnbytes — PDU の残りすべて
ies › bearer_context › ies › ambr
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
uplinkuint(32)1000
downlinkuint(32)1000
ies › bearer_context › ies › ebi
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(4)0
ebiuint(4)5
ies › bearer_context › ies › ip_address
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
addressipv4
ies › bearer_context › ies › ip_address_ipv6
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
addressipv6
ies › bearer_context › ies › mei
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
digitsbytes — PDU の残りすべて
ies › bearer_context › ies › msisdn
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
digitsbytes — PDU の残りすべて
ies › bearer_context › ies › indication
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
flagsbytes — PDU の残りすべて
ies › bearer_context › ies › pco
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
databytes — PDU の残りすべて
ies › bearer_context › ies › paa
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(5)0
pdn_typeuint(3)1
ipv4ipv4
ies › bearer_context › ies › paa_ipv6
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(5)0
pdn_typeuint(3)2
ipv6_prefix_lengthuint(8)64
ipv6ipv6::
ies › bearer_context › ies › paa_ipv4v6
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(5)0
pdn_typeuint(3)3
ipv6_prefix_lengthuint(8)64
ipv6ipv6::
ipv4ipv4
ies › bearer_context › ies › bearer_qos
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(1)0
pciuint(1)0
pluint(4)15
spare3uint(1)0
pviuint(1)0
qciuint(8)9
mbr_uplinkuint(40)0
mbr_downlinkuint(40)0
gbr_uplinkuint(40)0
gbr_downlinkuint(40)0
ies › bearer_context › ies › rat_type
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
rat_typeenum(8)6 (eutran)

ies › bearer_context › ies › rat_type › rat_type

値名前
1 (0x01)utran
2 (0x02)geran
3 (0x03)wlan
4 (0x04)gan
5 (0x05)hspa_evolution
6 (0x06)eutran
7 (0x07)virtual
8 (0x08)eutran_nb_iot
9 (0x09)lte_m
10 (0x0a)nr
ies › bearer_context › ies › serving_network
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
mcc_digit2uint(4)0
mcc_digit1uint(4)0
mnc_digit3uint(4)15
mcc_digit3uint(4)1
mnc_digit2uint(4)1
mnc_digit1uint(4)0
ies › bearer_context › ies › bearer_tft
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
tftbytes — PDU の残りすべて
ies › bearer_context › ies › uli
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
databytes — PDU の残りすべて
ies › bearer_context › ies › fteid
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
v4uint(1)1
v6uint(1)0
interface_typeenum(6)10 (s11_mme_gtp_c)
teiduint(32)1
ipv4ipv4192.0.2.1

ies › bearer_context › ies › fteid › interface_type

値名前
0s1_u_enodeb_gtp_u
1s1_u_sgw_gtp_u
2s12_rnc_gtp_u
3s12_sgw_gtp_u
4s5_s8_sgw_gtp_u
5s5_s8_pgw_gtp_u
6s5_s8_sgw_gtp_c
7s5_s8_pgw_gtp_c
10s11_mme_gtp_c
11s11_s4_sgw_gtp_c
16s2b_epdg_gtp_c
17s2b_u_epdg_gtp_u
18s2b_pgw_gtp_c
19s2b_u_pgw_gtp_u
ies › bearer_context › ies › fteid_ipv6
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
v4uint(1)0
v6uint(1)1
interface_typeenum(6)10 (s11_mme_gtp_c)
teiduint(32)1
ipv6ipv62001:db8::1

ies › bearer_context › ies › fteid_ipv6 › interface_type

値名前
0s1_u_enodeb_gtp_u
1s1_u_sgw_gtp_u
2s12_rnc_gtp_u
3s12_sgw_gtp_u
4s5_s8_sgw_gtp_u
5s5_s8_pgw_gtp_u
6s5_s8_sgw_gtp_c
7s5_s8_pgw_gtp_c
10s11_mme_gtp_c
11s11_s4_sgw_gtp_c
16s2b_epdg_gtp_c
17s2b_u_epdg_gtp_u
18s2b_pgw_gtp_c
19s2b_u_pgw_gtp_u
ies › bearer_context › ies › fteid_ipv4v6
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
v4uint(1)1
v6uint(1)1
interface_typeenum(6)10 (s11_mme_gtp_c)
teiduint(32)1
ipv4ipv4192.0.2.1
ipv6ipv62001:db8::1

ies › bearer_context › ies › fteid_ipv4v6 › interface_type

値名前
0s1_u_enodeb_gtp_u
1s1_u_sgw_gtp_u
2s12_rnc_gtp_u
3s12_sgw_gtp_u
4s5_s8_sgw_gtp_u
5s5_s8_pgw_gtp_u
6s5_s8_sgw_gtp_c
7s5_s8_pgw_gtp_c
10s11_mme_gtp_c
11s11_s4_sgw_gtp_c
16s2b_epdg_gtp_c
17s2b_u_epdg_gtp_u
18s2b_pgw_gtp_c
19s2b_u_pgw_gtp_u
ies › bearer_context › ies › charging_id
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
charging_iduint(32)1
ies › bearer_context › ies › charging_characteristics
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
valueuint(16)2048
ies › bearer_context › ies › pdn_type
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(5)0
pdn_typeenum(3)1 (ipv4)

ies › bearer_context › ies › pdn_type › pdn_type

値名前
1ipv4
2ipv6
3ipv4v6
4non_ip
5ethernet
ies › bearer_context › ies › ue_time_zone
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
time_zoneuint(8)0
spare2uint(6)0
daylight_saving_timeuint(2)0
ies › bearer_context › ies › apn_restriction
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
restrictionuint(8)0
ies › bearer_context › ies › selection_mode
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
spare2uint(6)0
selection_modeuint(2)0
ies › bearer_context › ies › private_extension
フィールド型既定値Auto説明
spareuint(4)0
instanceuint(4)0
enterprise_iduint(16)0
valuebytes — PDU の残りすべて

次レイヤ

次レイヤは p で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
1gtpv2残り 8 オクテット以上

制約

レベル規則
警告version が 2
エラーヘッダが 8 オクテット以上

サンプルテンプレート

Diameter (diameter)

下位レイヤからの到達

下位レイヤ判別フィールド値
tcpdst_port / src_port3868 (0x0f1c)

フィールド

フィールド型既定値Auto説明
versionuint(8)1Diameter バージョン(1)。
message_lengthuint(24)ヘッダの長さ (オクテット単位)ヘッダと AVP の詰め物を含むメッセージ長(Auto)。
ruint(1)1R フラグ: 要求(0 = 応答)。
puint(1)0P フラグ: プロキシ可能。
euint(1)0E フラグ: 応答がプロトコルエラーを含む。
tuint(1)0T フラグ: 再送の可能性があるメッセージ。
reserveduint(4)0
command_codeenum(24)257 (capabilities_exchange)コマンドコード(Capabilities-Exchange、Device-Watchdog、Credit-Control など)。
application_iduint(32)0Application-ID(0 = Diameter 共通メッセージ)。
hop_by_hopuint(32)11 つのコネクション上で応答と要求を対応付ける Hop-by-Hop 識別子。
end_to_enduint(32)1重複した要求を検出する End-to-End 識別子。
avpstlv — グループ先頭から message_length オクテットまで5 要素AVP(32 ビットコード、V / M / P フラグ、詰め物を含まない 24 ビット長、省略可能な Vendor-ID、4 オクテット境界まで詰めたデータ): 基本プロトコルと Credit-Control の AVP、1 段のグループ化 AVP。長さ・詰め物・V フラグは Auto。

command_code

値名前
257 (0x000101)capabilities_exchange
258 (0x000102)re_auth
271 (0x00010f)accounting
272 (0x000110)credit_control
274 (0x000112)abort_session
275 (0x000113)session_termination
280 (0x000118)device_watchdog
282 (0x00011a)disconnect_peer
316 (0x00013c)update_location
317 (0x00013d)cancel_location
318 (0x00013e)authentication_information
319 (0x00013f)insert_subscriber_data
320 (0x000140)delete_subscriber_data
321 (0x000141)purge_ue
323 (0x000143)notify

avps

  • タイプ 32 ビット、長さ 24 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 値の先頭 1 オクテットはタイプと長さの間にあります。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x00000001)user_namev, m, p, reserved, vendor_id, value
25 (0x00000019)classv, m, p, reserved, vendor_id, value
27 (0x0000001b)session_timeoutv, m, p, reserved, vendor_id, value
33 (0x00000021)proxy_statev, m, p, reserved, vendor_id, value
44 (0x0000002c)accounting_session_idv, m, p, reserved, vendor_id, value
50 (0x00000032)acct_multi_session_idv, m, p, reserved, vendor_id, value
55 (0x00000037)event_timestampv, m, p, reserved, vendor_id, value
85 (0x00000055)acct_interim_intervalv, m, p, reserved, vendor_id, value
258 (0x00000102)auth_application_idv, m, p, reserved, vendor_id, value
259 (0x00000103)acct_application_idv, m, p, reserved, vendor_id, value
262 (0x00000106)redirect_max_cache_timev, m, p, reserved, vendor_id, value
263 (0x00000107)session_idv, m, p, reserved, vendor_id, value
264 (0x00000108)origin_hostv, m, p, reserved, vendor_id, value
265 (0x00000109)supported_vendor_idv, m, p, reserved, vendor_id, value
266 (0x0000010a)vendor_idv, m, p, reserved, vendor_id, value
267 (0x0000010b)firmware_revisionv, m, p, reserved, vendor_id, value
268 (0x0000010c)result_codev, m, p, reserved, vendor_id, value
269 (0x0000010d)product_namev, m, p, reserved, vendor_id, value
270 (0x0000010e)session_bindingv, m, p, reserved, vendor_id, value
272 (0x00000110)multi_round_time_outv, m, p, reserved, vendor_id, value
273 (0x00000111)disconnect_causev, m, p, reserved, vendor_id, value
274 (0x00000112)auth_request_typev, m, p, reserved, vendor_id, value
276 (0x00000114)auth_grace_periodv, m, p, reserved, vendor_id, value
277 (0x00000115)auth_session_statev, m, p, reserved, vendor_id, value
278 (0x00000116)origin_state_idv, m, p, reserved, vendor_id, value
280 (0x00000118)proxy_hostv, m, p, reserved, vendor_id, value
281 (0x00000119)error_messagev, m, p, reserved, vendor_id, value
282 (0x0000011a)route_recordv, m, p, reserved, vendor_id, value
283 (0x0000011b)destination_realmv, m, p, reserved, vendor_id, value
285 (0x0000011d)re_auth_request_typev, m, p, reserved, vendor_id, value
287 (0x0000011f)accounting_sub_session_idv, m, p, reserved, vendor_id, value
291 (0x00000123)authorization_lifetimev, m, p, reserved, vendor_id, value
292 (0x00000124)redirect_hostv, m, p, reserved, vendor_id, value
293 (0x00000125)destination_hostv, m, p, reserved, vendor_id, value
294 (0x00000126)error_reporting_hostv, m, p, reserved, vendor_id, value
295 (0x00000127)termination_causev, m, p, reserved, vendor_id, value
296 (0x00000128)origin_realmv, m, p, reserved, vendor_id, value
298 (0x0000012a)experimental_result_codev, m, p, reserved, vendor_id, value
299 (0x0000012b)inband_security_idv, m, p, reserved, vendor_id, value
415 (0x0000019f)cc_request_numberv, m, p, reserved, vendor_id, value
416 (0x000001a0)cc_request_typev, m, p, reserved, vendor_id, value
444 (0x000001bc)subscription_id_datav, m, p, reserved, vendor_id, value
450 (0x000001c2)subscription_id_typev, m, p, reserved, vendor_id, value
455 (0x000001c7)multiple_services_indicatorv, m, p, reserved, vendor_id, value
461 (0x000001cd)service_context_idv, m, p, reserved, vendor_id, value
480 (0x000001e0)accounting_record_typev, m, p, reserved, vendor_id, value
485 (0x000001e5)accounting_record_numberv, m, p, reserved, vendor_id, value
257 (0x00000101)host_ip_addressv, m, p, reserved, vendor_id, address_family, address; 値が 7 オクテットのとき
257 (0x00000101)host_ip_address_ipv6v, m, p, reserved, vendor_id, address_family, address; 値が 19 オクテットのとき
260 (0x00000104)vendor_specific_application_idv, m, p, reserved, vendor_id, avps
279 (0x00000117)failed_avpv, m, p, reserved, vendor_id, avps
284 (0x0000011c)proxy_infov, m, p, reserved, vendor_id, avps
297 (0x00000129)experimental_resultv, m, p, reserved, vendor_id, avps
443 (0x000001bb)subscription_idv, m, p, reserved, vendor_id, avps

avps › user_name

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › class

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › session_timeout

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › proxy_state

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › accounting_session_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › acct_multi_session_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › event_timestamp

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › acct_interim_interval

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › auth_application_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › acct_application_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › redirect_max_cache_time

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › session_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › origin_host

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › supported_vendor_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › vendor_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › firmware_revision

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › result_code

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)2001 (success)
avps › result_code › value
値名前
1001 (0x000003e9)multi_round_auth
2001 (0x000007d1)success
2002 (0x000007d2)limited_success
3001 (0x00000bb9)command_unsupported
3002 (0x00000bba)unable_to_deliver
3003 (0x00000bbb)realm_not_served
3004 (0x00000bbc)too_busy
3005 (0x00000bbd)loop_detected
3006 (0x00000bbe)redirect_indication
3007 (0x00000bbf)application_unsupported
3008 (0x00000bc0)invalid_hdr_bits
3009 (0x00000bc1)invalid_avp_bits
3010 (0x00000bc2)unknown_peer
4001 (0x00000fa1)authentication_rejected
4002 (0x00000fa2)out_of_space
4003 (0x00000fa3)election_lost
5001 (0x00001389)avp_unsupported
5002 (0x0000138a)unknown_session_id
5003 (0x0000138b)authorization_rejected
5004 (0x0000138c)invalid_avp_value
5005 (0x0000138d)missing_avp
5006 (0x0000138e)resources_exceeded
5007 (0x0000138f)contradicting_avps
5008 (0x00001390)avp_not_allowed
5009 (0x00001391)avp_occurs_too_many_times
5010 (0x00001392)no_common_application
5011 (0x00001393)unsupported_version
5012 (0x00001394)unable_to_comply
5013 (0x00001395)invalid_bit_in_header
5014 (0x00001396)invalid_avp_length
5015 (0x00001397)invalid_message_length
5016 (0x00001398)invalid_avp_bit_combo
5017 (0x00001399)no_common_security

avps › product_name

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › session_binding

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › multi_round_time_out

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › disconnect_cause

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (rebooting)
avps › disconnect_cause › value
値名前
0 (0x00000000)rebooting
1 (0x00000001)busy
2 (0x00000002)do_not_want_to_talk_to_you

avps › auth_request_type

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)3 (authorize_authenticate)
avps › auth_request_type › value
値名前
1 (0x00000001)authenticate_only
2 (0x00000002)authorize_only
3 (0x00000003)authorize_authenticate

avps › auth_grace_period

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › auth_session_state

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (no_state_maintained)
avps › auth_session_state › value
値名前
0 (0x00000000)state_maintained
1 (0x00000001)no_state_maintained

avps › origin_state_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › proxy_host

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › error_message

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › route_record

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › destination_realm

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › re_auth_request_type

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (authorize_only)
avps › re_auth_request_type › value
値名前
0 (0x00000000)authorize_only
1 (0x00000001)authorize_authenticate

avps › accounting_sub_session_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(64)

avps › authorization_lifetime

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › redirect_host

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › destination_host

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › error_reporting_host

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › termination_cause

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (logout)
avps › termination_cause › value
値名前
1 (0x00000001)logout
2 (0x00000002)service_not_provided
3 (0x00000003)bad_answer
4 (0x00000004)administrative
5 (0x00000005)link_broken
6 (0x00000006)auth_expired
7 (0x00000007)user_moved
8 (0x00000008)session_timeout

avps › origin_realm

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › experimental_result_code

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › inband_security_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › cc_request_number

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › cc_request_type

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (initial_request)
avps › cc_request_type › value
値名前
1 (0x00000001)initial_request
2 (0x00000002)update_request
3 (0x00000003)termination_request
4 (0x00000004)event_request

avps › subscription_id_data

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › subscription_id_type

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (end_user_e164)
avps › subscription_id_type › value
値名前
0 (0x00000000)end_user_e164
1 (0x00000001)end_user_imsi
2 (0x00000002)end_user_sip_uri
3 (0x00000003)end_user_nai
4 (0x00000004)end_user_private

avps › multiple_services_indicator

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (not_supported)
avps › multiple_services_indicator › value
値名前
0 (0x00000000)not_supported
1 (0x00000001)supported

avps › service_context_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて

avps › accounting_record_type

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (event_record)
avps › accounting_record_type › value
値名前
1 (0x00000001)event_record
2 (0x00000002)start_record
3 (0x00000003)interim_record
4 (0x00000004)stop_record

avps › accounting_record_number

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)

avps › host_ip_address

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)1
addressipv4192.0.2.1

avps › host_ip_address_ipv6

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)2
addressipv62001:db8::1

avps › vendor_specific_application_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
avpstlv — PDU の残りすべて2 要素
avps › vendor_specific_application_id › avps
  • タイプ 32 ビット、長さ 24 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 値の先頭 1 オクテットはタイプと長さの間にあります。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x00000001)user_namev, m, p, reserved, vendor_id, value
25 (0x00000019)classv, m, p, reserved, vendor_id, value
27 (0x0000001b)session_timeoutv, m, p, reserved, vendor_id, value
33 (0x00000021)proxy_statev, m, p, reserved, vendor_id, value
44 (0x0000002c)accounting_session_idv, m, p, reserved, vendor_id, value
50 (0x00000032)acct_multi_session_idv, m, p, reserved, vendor_id, value
55 (0x00000037)event_timestampv, m, p, reserved, vendor_id, value
85 (0x00000055)acct_interim_intervalv, m, p, reserved, vendor_id, value
258 (0x00000102)auth_application_idv, m, p, reserved, vendor_id, value
259 (0x00000103)acct_application_idv, m, p, reserved, vendor_id, value
262 (0x00000106)redirect_max_cache_timev, m, p, reserved, vendor_id, value
263 (0x00000107)session_idv, m, p, reserved, vendor_id, value
264 (0x00000108)origin_hostv, m, p, reserved, vendor_id, value
265 (0x00000109)supported_vendor_idv, m, p, reserved, vendor_id, value
266 (0x0000010a)vendor_idv, m, p, reserved, vendor_id, value
267 (0x0000010b)firmware_revisionv, m, p, reserved, vendor_id, value
268 (0x0000010c)result_codev, m, p, reserved, vendor_id, value
269 (0x0000010d)product_namev, m, p, reserved, vendor_id, value
270 (0x0000010e)session_bindingv, m, p, reserved, vendor_id, value
272 (0x00000110)multi_round_time_outv, m, p, reserved, vendor_id, value
273 (0x00000111)disconnect_causev, m, p, reserved, vendor_id, value
274 (0x00000112)auth_request_typev, m, p, reserved, vendor_id, value
276 (0x00000114)auth_grace_periodv, m, p, reserved, vendor_id, value
277 (0x00000115)auth_session_statev, m, p, reserved, vendor_id, value
278 (0x00000116)origin_state_idv, m, p, reserved, vendor_id, value
280 (0x00000118)proxy_hostv, m, p, reserved, vendor_id, value
281 (0x00000119)error_messagev, m, p, reserved, vendor_id, value
282 (0x0000011a)route_recordv, m, p, reserved, vendor_id, value
283 (0x0000011b)destination_realmv, m, p, reserved, vendor_id, value
285 (0x0000011d)re_auth_request_typev, m, p, reserved, vendor_id, value
287 (0x0000011f)accounting_sub_session_idv, m, p, reserved, vendor_id, value
291 (0x00000123)authorization_lifetimev, m, p, reserved, vendor_id, value
292 (0x00000124)redirect_hostv, m, p, reserved, vendor_id, value
293 (0x00000125)destination_hostv, m, p, reserved, vendor_id, value
294 (0x00000126)error_reporting_hostv, m, p, reserved, vendor_id, value
295 (0x00000127)termination_causev, m, p, reserved, vendor_id, value
296 (0x00000128)origin_realmv, m, p, reserved, vendor_id, value
298 (0x0000012a)experimental_result_codev, m, p, reserved, vendor_id, value
299 (0x0000012b)inband_security_idv, m, p, reserved, vendor_id, value
415 (0x0000019f)cc_request_numberv, m, p, reserved, vendor_id, value
416 (0x000001a0)cc_request_typev, m, p, reserved, vendor_id, value
444 (0x000001bc)subscription_id_datav, m, p, reserved, vendor_id, value
450 (0x000001c2)subscription_id_typev, m, p, reserved, vendor_id, value
455 (0x000001c7)multiple_services_indicatorv, m, p, reserved, vendor_id, value
461 (0x000001cd)service_context_idv, m, p, reserved, vendor_id, value
480 (0x000001e0)accounting_record_typev, m, p, reserved, vendor_id, value
485 (0x000001e5)accounting_record_numberv, m, p, reserved, vendor_id, value
257 (0x00000101)host_ip_addressv, m, p, reserved, vendor_id, address_family, address; 値が 7 オクテットのとき
257 (0x00000101)host_ip_address_ipv6v, m, p, reserved, vendor_id, address_family, address; 値が 19 オクテットのとき
avps › vendor_specific_application_id › avps › user_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › class
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › session_timeout
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › proxy_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › accounting_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › acct_multi_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › event_timestamp
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › acct_interim_interval
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › auth_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › acct_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › redirect_max_cache_time
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › origin_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › supported_vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › firmware_revision
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)2001 (success)

avps › vendor_specific_application_id › avps › result_code › value

値名前
1001 (0x000003e9)multi_round_auth
2001 (0x000007d1)success
2002 (0x000007d2)limited_success
3001 (0x00000bb9)command_unsupported
3002 (0x00000bba)unable_to_deliver
3003 (0x00000bbb)realm_not_served
3004 (0x00000bbc)too_busy
3005 (0x00000bbd)loop_detected
3006 (0x00000bbe)redirect_indication
3007 (0x00000bbf)application_unsupported
3008 (0x00000bc0)invalid_hdr_bits
3009 (0x00000bc1)invalid_avp_bits
3010 (0x00000bc2)unknown_peer
4001 (0x00000fa1)authentication_rejected
4002 (0x00000fa2)out_of_space
4003 (0x00000fa3)election_lost
5001 (0x00001389)avp_unsupported
5002 (0x0000138a)unknown_session_id
5003 (0x0000138b)authorization_rejected
5004 (0x0000138c)invalid_avp_value
5005 (0x0000138d)missing_avp
5006 (0x0000138e)resources_exceeded
5007 (0x0000138f)contradicting_avps
5008 (0x00001390)avp_not_allowed
5009 (0x00001391)avp_occurs_too_many_times
5010 (0x00001392)no_common_application
5011 (0x00001393)unsupported_version
5012 (0x00001394)unable_to_comply
5013 (0x00001395)invalid_bit_in_header
5014 (0x00001396)invalid_avp_length
5015 (0x00001397)invalid_message_length
5016 (0x00001398)invalid_avp_bit_combo
5017 (0x00001399)no_common_security
avps › vendor_specific_application_id › avps › product_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › session_binding
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › multi_round_time_out
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › disconnect_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (rebooting)

avps › vendor_specific_application_id › avps › disconnect_cause › value

値名前
0 (0x00000000)rebooting
1 (0x00000001)busy
2 (0x00000002)do_not_want_to_talk_to_you
avps › vendor_specific_application_id › avps › auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)3 (authorize_authenticate)

avps › vendor_specific_application_id › avps › auth_request_type › value

値名前
1 (0x00000001)authenticate_only
2 (0x00000002)authorize_only
3 (0x00000003)authorize_authenticate
avps › vendor_specific_application_id › avps › auth_grace_period
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › auth_session_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (no_state_maintained)

avps › vendor_specific_application_id › avps › auth_session_state › value

値名前
0 (0x00000000)state_maintained
1 (0x00000001)no_state_maintained
avps › vendor_specific_application_id › avps › origin_state_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › proxy_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › error_message
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › route_record
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › destination_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › re_auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (authorize_only)

avps › vendor_specific_application_id › avps › re_auth_request_type › value

値名前
0 (0x00000000)authorize_only
1 (0x00000001)authorize_authenticate
avps › vendor_specific_application_id › avps › accounting_sub_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(64)
avps › vendor_specific_application_id › avps › authorization_lifetime
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › redirect_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › destination_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › error_reporting_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › termination_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (logout)

avps › vendor_specific_application_id › avps › termination_cause › value

値名前
1 (0x00000001)logout
2 (0x00000002)service_not_provided
3 (0x00000003)bad_answer
4 (0x00000004)administrative
5 (0x00000005)link_broken
6 (0x00000006)auth_expired
7 (0x00000007)user_moved
8 (0x00000008)session_timeout
avps › vendor_specific_application_id › avps › origin_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › experimental_result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › inband_security_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › cc_request_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › cc_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (initial_request)

avps › vendor_specific_application_id › avps › cc_request_type › value

値名前
1 (0x00000001)initial_request
2 (0x00000002)update_request
3 (0x00000003)termination_request
4 (0x00000004)event_request
avps › vendor_specific_application_id › avps › subscription_id_data
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › subscription_id_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (end_user_e164)

avps › vendor_specific_application_id › avps › subscription_id_type › value

値名前
0 (0x00000000)end_user_e164
1 (0x00000001)end_user_imsi
2 (0x00000002)end_user_sip_uri
3 (0x00000003)end_user_nai
4 (0x00000004)end_user_private
avps › vendor_specific_application_id › avps › multiple_services_indicator
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (not_supported)

avps › vendor_specific_application_id › avps › multiple_services_indicator › value

値名前
0 (0x00000000)not_supported
1 (0x00000001)supported
avps › vendor_specific_application_id › avps › service_context_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › vendor_specific_application_id › avps › accounting_record_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (event_record)

avps › vendor_specific_application_id › avps › accounting_record_type › value

値名前
1 (0x00000001)event_record
2 (0x00000002)start_record
3 (0x00000003)interim_record
4 (0x00000004)stop_record
avps › vendor_specific_application_id › avps › accounting_record_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › vendor_specific_application_id › avps › host_ip_address
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)1
addressipv4192.0.2.1
avps › vendor_specific_application_id › avps › host_ip_address_ipv6
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)2
addressipv62001:db8::1

avps › failed_avp

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
avpstlv — PDU の残りすべて[]
avps › failed_avp › avps
  • タイプ 32 ビット、長さ 24 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 値の先頭 1 オクテットはタイプと長さの間にあります。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x00000001)user_namev, m, p, reserved, vendor_id, value
25 (0x00000019)classv, m, p, reserved, vendor_id, value
27 (0x0000001b)session_timeoutv, m, p, reserved, vendor_id, value
33 (0x00000021)proxy_statev, m, p, reserved, vendor_id, value
44 (0x0000002c)accounting_session_idv, m, p, reserved, vendor_id, value
50 (0x00000032)acct_multi_session_idv, m, p, reserved, vendor_id, value
55 (0x00000037)event_timestampv, m, p, reserved, vendor_id, value
85 (0x00000055)acct_interim_intervalv, m, p, reserved, vendor_id, value
258 (0x00000102)auth_application_idv, m, p, reserved, vendor_id, value
259 (0x00000103)acct_application_idv, m, p, reserved, vendor_id, value
262 (0x00000106)redirect_max_cache_timev, m, p, reserved, vendor_id, value
263 (0x00000107)session_idv, m, p, reserved, vendor_id, value
264 (0x00000108)origin_hostv, m, p, reserved, vendor_id, value
265 (0x00000109)supported_vendor_idv, m, p, reserved, vendor_id, value
266 (0x0000010a)vendor_idv, m, p, reserved, vendor_id, value
267 (0x0000010b)firmware_revisionv, m, p, reserved, vendor_id, value
268 (0x0000010c)result_codev, m, p, reserved, vendor_id, value
269 (0x0000010d)product_namev, m, p, reserved, vendor_id, value
270 (0x0000010e)session_bindingv, m, p, reserved, vendor_id, value
272 (0x00000110)multi_round_time_outv, m, p, reserved, vendor_id, value
273 (0x00000111)disconnect_causev, m, p, reserved, vendor_id, value
274 (0x00000112)auth_request_typev, m, p, reserved, vendor_id, value
276 (0x00000114)auth_grace_periodv, m, p, reserved, vendor_id, value
277 (0x00000115)auth_session_statev, m, p, reserved, vendor_id, value
278 (0x00000116)origin_state_idv, m, p, reserved, vendor_id, value
280 (0x00000118)proxy_hostv, m, p, reserved, vendor_id, value
281 (0x00000119)error_messagev, m, p, reserved, vendor_id, value
282 (0x0000011a)route_recordv, m, p, reserved, vendor_id, value
283 (0x0000011b)destination_realmv, m, p, reserved, vendor_id, value
285 (0x0000011d)re_auth_request_typev, m, p, reserved, vendor_id, value
287 (0x0000011f)accounting_sub_session_idv, m, p, reserved, vendor_id, value
291 (0x00000123)authorization_lifetimev, m, p, reserved, vendor_id, value
292 (0x00000124)redirect_hostv, m, p, reserved, vendor_id, value
293 (0x00000125)destination_hostv, m, p, reserved, vendor_id, value
294 (0x00000126)error_reporting_hostv, m, p, reserved, vendor_id, value
295 (0x00000127)termination_causev, m, p, reserved, vendor_id, value
296 (0x00000128)origin_realmv, m, p, reserved, vendor_id, value
298 (0x0000012a)experimental_result_codev, m, p, reserved, vendor_id, value
299 (0x0000012b)inband_security_idv, m, p, reserved, vendor_id, value
415 (0x0000019f)cc_request_numberv, m, p, reserved, vendor_id, value
416 (0x000001a0)cc_request_typev, m, p, reserved, vendor_id, value
444 (0x000001bc)subscription_id_datav, m, p, reserved, vendor_id, value
450 (0x000001c2)subscription_id_typev, m, p, reserved, vendor_id, value
455 (0x000001c7)multiple_services_indicatorv, m, p, reserved, vendor_id, value
461 (0x000001cd)service_context_idv, m, p, reserved, vendor_id, value
480 (0x000001e0)accounting_record_typev, m, p, reserved, vendor_id, value
485 (0x000001e5)accounting_record_numberv, m, p, reserved, vendor_id, value
257 (0x00000101)host_ip_addressv, m, p, reserved, vendor_id, address_family, address; 値が 7 オクテットのとき
257 (0x00000101)host_ip_address_ipv6v, m, p, reserved, vendor_id, address_family, address; 値が 19 オクテットのとき
avps › failed_avp › avps › user_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › class
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › session_timeout
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › proxy_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › accounting_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › acct_multi_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › event_timestamp
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › acct_interim_interval
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › auth_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › acct_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › redirect_max_cache_time
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › origin_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › supported_vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › firmware_revision
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)2001 (success)

avps › failed_avp › avps › result_code › value

値名前
1001 (0x000003e9)multi_round_auth
2001 (0x000007d1)success
2002 (0x000007d2)limited_success
3001 (0x00000bb9)command_unsupported
3002 (0x00000bba)unable_to_deliver
3003 (0x00000bbb)realm_not_served
3004 (0x00000bbc)too_busy
3005 (0x00000bbd)loop_detected
3006 (0x00000bbe)redirect_indication
3007 (0x00000bbf)application_unsupported
3008 (0x00000bc0)invalid_hdr_bits
3009 (0x00000bc1)invalid_avp_bits
3010 (0x00000bc2)unknown_peer
4001 (0x00000fa1)authentication_rejected
4002 (0x00000fa2)out_of_space
4003 (0x00000fa3)election_lost
5001 (0x00001389)avp_unsupported
5002 (0x0000138a)unknown_session_id
5003 (0x0000138b)authorization_rejected
5004 (0x0000138c)invalid_avp_value
5005 (0x0000138d)missing_avp
5006 (0x0000138e)resources_exceeded
5007 (0x0000138f)contradicting_avps
5008 (0x00001390)avp_not_allowed
5009 (0x00001391)avp_occurs_too_many_times
5010 (0x00001392)no_common_application
5011 (0x00001393)unsupported_version
5012 (0x00001394)unable_to_comply
5013 (0x00001395)invalid_bit_in_header
5014 (0x00001396)invalid_avp_length
5015 (0x00001397)invalid_message_length
5016 (0x00001398)invalid_avp_bit_combo
5017 (0x00001399)no_common_security
avps › failed_avp › avps › product_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › session_binding
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › multi_round_time_out
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › disconnect_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (rebooting)

avps › failed_avp › avps › disconnect_cause › value

値名前
0 (0x00000000)rebooting
1 (0x00000001)busy
2 (0x00000002)do_not_want_to_talk_to_you
avps › failed_avp › avps › auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)3 (authorize_authenticate)

avps › failed_avp › avps › auth_request_type › value

値名前
1 (0x00000001)authenticate_only
2 (0x00000002)authorize_only
3 (0x00000003)authorize_authenticate
avps › failed_avp › avps › auth_grace_period
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › auth_session_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (no_state_maintained)

avps › failed_avp › avps › auth_session_state › value

値名前
0 (0x00000000)state_maintained
1 (0x00000001)no_state_maintained
avps › failed_avp › avps › origin_state_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › proxy_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › error_message
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › route_record
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › destination_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › re_auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (authorize_only)

avps › failed_avp › avps › re_auth_request_type › value

値名前
0 (0x00000000)authorize_only
1 (0x00000001)authorize_authenticate
avps › failed_avp › avps › accounting_sub_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(64)
avps › failed_avp › avps › authorization_lifetime
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › redirect_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › destination_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › error_reporting_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › termination_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (logout)

avps › failed_avp › avps › termination_cause › value

値名前
1 (0x00000001)logout
2 (0x00000002)service_not_provided
3 (0x00000003)bad_answer
4 (0x00000004)administrative
5 (0x00000005)link_broken
6 (0x00000006)auth_expired
7 (0x00000007)user_moved
8 (0x00000008)session_timeout
avps › failed_avp › avps › origin_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › experimental_result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › inband_security_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › cc_request_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › cc_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (initial_request)

avps › failed_avp › avps › cc_request_type › value

値名前
1 (0x00000001)initial_request
2 (0x00000002)update_request
3 (0x00000003)termination_request
4 (0x00000004)event_request
avps › failed_avp › avps › subscription_id_data
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › subscription_id_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (end_user_e164)

avps › failed_avp › avps › subscription_id_type › value

値名前
0 (0x00000000)end_user_e164
1 (0x00000001)end_user_imsi
2 (0x00000002)end_user_sip_uri
3 (0x00000003)end_user_nai
4 (0x00000004)end_user_private
avps › failed_avp › avps › multiple_services_indicator
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (not_supported)

avps › failed_avp › avps › multiple_services_indicator › value

値名前
0 (0x00000000)not_supported
1 (0x00000001)supported
avps › failed_avp › avps › service_context_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › failed_avp › avps › accounting_record_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (event_record)

avps › failed_avp › avps › accounting_record_type › value

値名前
1 (0x00000001)event_record
2 (0x00000002)start_record
3 (0x00000003)interim_record
4 (0x00000004)stop_record
avps › failed_avp › avps › accounting_record_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › failed_avp › avps › host_ip_address
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)1
addressipv4192.0.2.1
avps › failed_avp › avps › host_ip_address_ipv6
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)2
addressipv62001:db8::1

avps › proxy_info

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
avpstlv — PDU の残りすべて2 要素
avps › proxy_info › avps
  • タイプ 32 ビット、長さ 24 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 値の先頭 1 オクテットはタイプと長さの間にあります。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x00000001)user_namev, m, p, reserved, vendor_id, value
25 (0x00000019)classv, m, p, reserved, vendor_id, value
27 (0x0000001b)session_timeoutv, m, p, reserved, vendor_id, value
33 (0x00000021)proxy_statev, m, p, reserved, vendor_id, value
44 (0x0000002c)accounting_session_idv, m, p, reserved, vendor_id, value
50 (0x00000032)acct_multi_session_idv, m, p, reserved, vendor_id, value
55 (0x00000037)event_timestampv, m, p, reserved, vendor_id, value
85 (0x00000055)acct_interim_intervalv, m, p, reserved, vendor_id, value
258 (0x00000102)auth_application_idv, m, p, reserved, vendor_id, value
259 (0x00000103)acct_application_idv, m, p, reserved, vendor_id, value
262 (0x00000106)redirect_max_cache_timev, m, p, reserved, vendor_id, value
263 (0x00000107)session_idv, m, p, reserved, vendor_id, value
264 (0x00000108)origin_hostv, m, p, reserved, vendor_id, value
265 (0x00000109)supported_vendor_idv, m, p, reserved, vendor_id, value
266 (0x0000010a)vendor_idv, m, p, reserved, vendor_id, value
267 (0x0000010b)firmware_revisionv, m, p, reserved, vendor_id, value
268 (0x0000010c)result_codev, m, p, reserved, vendor_id, value
269 (0x0000010d)product_namev, m, p, reserved, vendor_id, value
270 (0x0000010e)session_bindingv, m, p, reserved, vendor_id, value
272 (0x00000110)multi_round_time_outv, m, p, reserved, vendor_id, value
273 (0x00000111)disconnect_causev, m, p, reserved, vendor_id, value
274 (0x00000112)auth_request_typev, m, p, reserved, vendor_id, value
276 (0x00000114)auth_grace_periodv, m, p, reserved, vendor_id, value
277 (0x00000115)auth_session_statev, m, p, reserved, vendor_id, value
278 (0x00000116)origin_state_idv, m, p, reserved, vendor_id, value
280 (0x00000118)proxy_hostv, m, p, reserved, vendor_id, value
281 (0x00000119)error_messagev, m, p, reserved, vendor_id, value
282 (0x0000011a)route_recordv, m, p, reserved, vendor_id, value
283 (0x0000011b)destination_realmv, m, p, reserved, vendor_id, value
285 (0x0000011d)re_auth_request_typev, m, p, reserved, vendor_id, value
287 (0x0000011f)accounting_sub_session_idv, m, p, reserved, vendor_id, value
291 (0x00000123)authorization_lifetimev, m, p, reserved, vendor_id, value
292 (0x00000124)redirect_hostv, m, p, reserved, vendor_id, value
293 (0x00000125)destination_hostv, m, p, reserved, vendor_id, value
294 (0x00000126)error_reporting_hostv, m, p, reserved, vendor_id, value
295 (0x00000127)termination_causev, m, p, reserved, vendor_id, value
296 (0x00000128)origin_realmv, m, p, reserved, vendor_id, value
298 (0x0000012a)experimental_result_codev, m, p, reserved, vendor_id, value
299 (0x0000012b)inband_security_idv, m, p, reserved, vendor_id, value
415 (0x0000019f)cc_request_numberv, m, p, reserved, vendor_id, value
416 (0x000001a0)cc_request_typev, m, p, reserved, vendor_id, value
444 (0x000001bc)subscription_id_datav, m, p, reserved, vendor_id, value
450 (0x000001c2)subscription_id_typev, m, p, reserved, vendor_id, value
455 (0x000001c7)multiple_services_indicatorv, m, p, reserved, vendor_id, value
461 (0x000001cd)service_context_idv, m, p, reserved, vendor_id, value
480 (0x000001e0)accounting_record_typev, m, p, reserved, vendor_id, value
485 (0x000001e5)accounting_record_numberv, m, p, reserved, vendor_id, value
257 (0x00000101)host_ip_addressv, m, p, reserved, vendor_id, address_family, address; 値が 7 オクテットのとき
257 (0x00000101)host_ip_address_ipv6v, m, p, reserved, vendor_id, address_family, address; 値が 19 オクテットのとき
avps › proxy_info › avps › user_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › class
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › session_timeout
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › proxy_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › accounting_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › acct_multi_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › event_timestamp
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › acct_interim_interval
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › auth_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › acct_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › redirect_max_cache_time
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › origin_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › supported_vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › firmware_revision
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)2001 (success)

avps › proxy_info › avps › result_code › value

値名前
1001 (0x000003e9)multi_round_auth
2001 (0x000007d1)success
2002 (0x000007d2)limited_success
3001 (0x00000bb9)command_unsupported
3002 (0x00000bba)unable_to_deliver
3003 (0x00000bbb)realm_not_served
3004 (0x00000bbc)too_busy
3005 (0x00000bbd)loop_detected
3006 (0x00000bbe)redirect_indication
3007 (0x00000bbf)application_unsupported
3008 (0x00000bc0)invalid_hdr_bits
3009 (0x00000bc1)invalid_avp_bits
3010 (0x00000bc2)unknown_peer
4001 (0x00000fa1)authentication_rejected
4002 (0x00000fa2)out_of_space
4003 (0x00000fa3)election_lost
5001 (0x00001389)avp_unsupported
5002 (0x0000138a)unknown_session_id
5003 (0x0000138b)authorization_rejected
5004 (0x0000138c)invalid_avp_value
5005 (0x0000138d)missing_avp
5006 (0x0000138e)resources_exceeded
5007 (0x0000138f)contradicting_avps
5008 (0x00001390)avp_not_allowed
5009 (0x00001391)avp_occurs_too_many_times
5010 (0x00001392)no_common_application
5011 (0x00001393)unsupported_version
5012 (0x00001394)unable_to_comply
5013 (0x00001395)invalid_bit_in_header
5014 (0x00001396)invalid_avp_length
5015 (0x00001397)invalid_message_length
5016 (0x00001398)invalid_avp_bit_combo
5017 (0x00001399)no_common_security
avps › proxy_info › avps › product_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › session_binding
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › multi_round_time_out
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › disconnect_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (rebooting)

avps › proxy_info › avps › disconnect_cause › value

値名前
0 (0x00000000)rebooting
1 (0x00000001)busy
2 (0x00000002)do_not_want_to_talk_to_you
avps › proxy_info › avps › auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)3 (authorize_authenticate)

avps › proxy_info › avps › auth_request_type › value

値名前
1 (0x00000001)authenticate_only
2 (0x00000002)authorize_only
3 (0x00000003)authorize_authenticate
avps › proxy_info › avps › auth_grace_period
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › auth_session_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (no_state_maintained)

avps › proxy_info › avps › auth_session_state › value

値名前
0 (0x00000000)state_maintained
1 (0x00000001)no_state_maintained
avps › proxy_info › avps › origin_state_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › proxy_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › error_message
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › route_record
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › destination_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › re_auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (authorize_only)

avps › proxy_info › avps › re_auth_request_type › value

値名前
0 (0x00000000)authorize_only
1 (0x00000001)authorize_authenticate
avps › proxy_info › avps › accounting_sub_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(64)
avps › proxy_info › avps › authorization_lifetime
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › redirect_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › destination_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › error_reporting_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › termination_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (logout)

avps › proxy_info › avps › termination_cause › value

値名前
1 (0x00000001)logout
2 (0x00000002)service_not_provided
3 (0x00000003)bad_answer
4 (0x00000004)administrative
5 (0x00000005)link_broken
6 (0x00000006)auth_expired
7 (0x00000007)user_moved
8 (0x00000008)session_timeout
avps › proxy_info › avps › origin_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › experimental_result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › inband_security_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › cc_request_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › cc_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (initial_request)

avps › proxy_info › avps › cc_request_type › value

値名前
1 (0x00000001)initial_request
2 (0x00000002)update_request
3 (0x00000003)termination_request
4 (0x00000004)event_request
avps › proxy_info › avps › subscription_id_data
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › subscription_id_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (end_user_e164)

avps › proxy_info › avps › subscription_id_type › value

値名前
0 (0x00000000)end_user_e164
1 (0x00000001)end_user_imsi
2 (0x00000002)end_user_sip_uri
3 (0x00000003)end_user_nai
4 (0x00000004)end_user_private
avps › proxy_info › avps › multiple_services_indicator
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (not_supported)

avps › proxy_info › avps › multiple_services_indicator › value

値名前
0 (0x00000000)not_supported
1 (0x00000001)supported
avps › proxy_info › avps › service_context_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › proxy_info › avps › accounting_record_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (event_record)

avps › proxy_info › avps › accounting_record_type › value

値名前
1 (0x00000001)event_record
2 (0x00000002)start_record
3 (0x00000003)interim_record
4 (0x00000004)stop_record
avps › proxy_info › avps › accounting_record_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › proxy_info › avps › host_ip_address
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)1
addressipv4192.0.2.1
avps › proxy_info › avps › host_ip_address_ipv6
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)2
addressipv62001:db8::1

avps › experimental_result

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
avpstlv — PDU の残りすべて2 要素
avps › experimental_result › avps
  • タイプ 32 ビット、長さ 24 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 値の先頭 1 オクテットはタイプと長さの間にあります。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x00000001)user_namev, m, p, reserved, vendor_id, value
25 (0x00000019)classv, m, p, reserved, vendor_id, value
27 (0x0000001b)session_timeoutv, m, p, reserved, vendor_id, value
33 (0x00000021)proxy_statev, m, p, reserved, vendor_id, value
44 (0x0000002c)accounting_session_idv, m, p, reserved, vendor_id, value
50 (0x00000032)acct_multi_session_idv, m, p, reserved, vendor_id, value
55 (0x00000037)event_timestampv, m, p, reserved, vendor_id, value
85 (0x00000055)acct_interim_intervalv, m, p, reserved, vendor_id, value
258 (0x00000102)auth_application_idv, m, p, reserved, vendor_id, value
259 (0x00000103)acct_application_idv, m, p, reserved, vendor_id, value
262 (0x00000106)redirect_max_cache_timev, m, p, reserved, vendor_id, value
263 (0x00000107)session_idv, m, p, reserved, vendor_id, value
264 (0x00000108)origin_hostv, m, p, reserved, vendor_id, value
265 (0x00000109)supported_vendor_idv, m, p, reserved, vendor_id, value
266 (0x0000010a)vendor_idv, m, p, reserved, vendor_id, value
267 (0x0000010b)firmware_revisionv, m, p, reserved, vendor_id, value
268 (0x0000010c)result_codev, m, p, reserved, vendor_id, value
269 (0x0000010d)product_namev, m, p, reserved, vendor_id, value
270 (0x0000010e)session_bindingv, m, p, reserved, vendor_id, value
272 (0x00000110)multi_round_time_outv, m, p, reserved, vendor_id, value
273 (0x00000111)disconnect_causev, m, p, reserved, vendor_id, value
274 (0x00000112)auth_request_typev, m, p, reserved, vendor_id, value
276 (0x00000114)auth_grace_periodv, m, p, reserved, vendor_id, value
277 (0x00000115)auth_session_statev, m, p, reserved, vendor_id, value
278 (0x00000116)origin_state_idv, m, p, reserved, vendor_id, value
280 (0x00000118)proxy_hostv, m, p, reserved, vendor_id, value
281 (0x00000119)error_messagev, m, p, reserved, vendor_id, value
282 (0x0000011a)route_recordv, m, p, reserved, vendor_id, value
283 (0x0000011b)destination_realmv, m, p, reserved, vendor_id, value
285 (0x0000011d)re_auth_request_typev, m, p, reserved, vendor_id, value
287 (0x0000011f)accounting_sub_session_idv, m, p, reserved, vendor_id, value
291 (0x00000123)authorization_lifetimev, m, p, reserved, vendor_id, value
292 (0x00000124)redirect_hostv, m, p, reserved, vendor_id, value
293 (0x00000125)destination_hostv, m, p, reserved, vendor_id, value
294 (0x00000126)error_reporting_hostv, m, p, reserved, vendor_id, value
295 (0x00000127)termination_causev, m, p, reserved, vendor_id, value
296 (0x00000128)origin_realmv, m, p, reserved, vendor_id, value
298 (0x0000012a)experimental_result_codev, m, p, reserved, vendor_id, value
299 (0x0000012b)inband_security_idv, m, p, reserved, vendor_id, value
415 (0x0000019f)cc_request_numberv, m, p, reserved, vendor_id, value
416 (0x000001a0)cc_request_typev, m, p, reserved, vendor_id, value
444 (0x000001bc)subscription_id_datav, m, p, reserved, vendor_id, value
450 (0x000001c2)subscription_id_typev, m, p, reserved, vendor_id, value
455 (0x000001c7)multiple_services_indicatorv, m, p, reserved, vendor_id, value
461 (0x000001cd)service_context_idv, m, p, reserved, vendor_id, value
480 (0x000001e0)accounting_record_typev, m, p, reserved, vendor_id, value
485 (0x000001e5)accounting_record_numberv, m, p, reserved, vendor_id, value
257 (0x00000101)host_ip_addressv, m, p, reserved, vendor_id, address_family, address; 値が 7 オクテットのとき
257 (0x00000101)host_ip_address_ipv6v, m, p, reserved, vendor_id, address_family, address; 値が 19 オクテットのとき
avps › experimental_result › avps › user_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › class
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › session_timeout
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › proxy_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › accounting_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › acct_multi_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › event_timestamp
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › acct_interim_interval
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › auth_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › acct_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › redirect_max_cache_time
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › origin_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › supported_vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › firmware_revision
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)2001 (success)

avps › experimental_result › avps › result_code › value

値名前
1001 (0x000003e9)multi_round_auth
2001 (0x000007d1)success
2002 (0x000007d2)limited_success
3001 (0x00000bb9)command_unsupported
3002 (0x00000bba)unable_to_deliver
3003 (0x00000bbb)realm_not_served
3004 (0x00000bbc)too_busy
3005 (0x00000bbd)loop_detected
3006 (0x00000bbe)redirect_indication
3007 (0x00000bbf)application_unsupported
3008 (0x00000bc0)invalid_hdr_bits
3009 (0x00000bc1)invalid_avp_bits
3010 (0x00000bc2)unknown_peer
4001 (0x00000fa1)authentication_rejected
4002 (0x00000fa2)out_of_space
4003 (0x00000fa3)election_lost
5001 (0x00001389)avp_unsupported
5002 (0x0000138a)unknown_session_id
5003 (0x0000138b)authorization_rejected
5004 (0x0000138c)invalid_avp_value
5005 (0x0000138d)missing_avp
5006 (0x0000138e)resources_exceeded
5007 (0x0000138f)contradicting_avps
5008 (0x00001390)avp_not_allowed
5009 (0x00001391)avp_occurs_too_many_times
5010 (0x00001392)no_common_application
5011 (0x00001393)unsupported_version
5012 (0x00001394)unable_to_comply
5013 (0x00001395)invalid_bit_in_header
5014 (0x00001396)invalid_avp_length
5015 (0x00001397)invalid_message_length
5016 (0x00001398)invalid_avp_bit_combo
5017 (0x00001399)no_common_security
avps › experimental_result › avps › product_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › session_binding
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › multi_round_time_out
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › disconnect_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (rebooting)

avps › experimental_result › avps › disconnect_cause › value

値名前
0 (0x00000000)rebooting
1 (0x00000001)busy
2 (0x00000002)do_not_want_to_talk_to_you
avps › experimental_result › avps › auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)3 (authorize_authenticate)

avps › experimental_result › avps › auth_request_type › value

値名前
1 (0x00000001)authenticate_only
2 (0x00000002)authorize_only
3 (0x00000003)authorize_authenticate
avps › experimental_result › avps › auth_grace_period
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › auth_session_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (no_state_maintained)

avps › experimental_result › avps › auth_session_state › value

値名前
0 (0x00000000)state_maintained
1 (0x00000001)no_state_maintained
avps › experimental_result › avps › origin_state_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › proxy_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › error_message
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › route_record
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › destination_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › re_auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (authorize_only)

avps › experimental_result › avps › re_auth_request_type › value

値名前
0 (0x00000000)authorize_only
1 (0x00000001)authorize_authenticate
avps › experimental_result › avps › accounting_sub_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(64)
avps › experimental_result › avps › authorization_lifetime
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › redirect_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › destination_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › error_reporting_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › termination_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (logout)

avps › experimental_result › avps › termination_cause › value

値名前
1 (0x00000001)logout
2 (0x00000002)service_not_provided
3 (0x00000003)bad_answer
4 (0x00000004)administrative
5 (0x00000005)link_broken
6 (0x00000006)auth_expired
7 (0x00000007)user_moved
8 (0x00000008)session_timeout
avps › experimental_result › avps › origin_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › experimental_result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › inband_security_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › cc_request_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › cc_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (initial_request)

avps › experimental_result › avps › cc_request_type › value

値名前
1 (0x00000001)initial_request
2 (0x00000002)update_request
3 (0x00000003)termination_request
4 (0x00000004)event_request
avps › experimental_result › avps › subscription_id_data
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › subscription_id_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (end_user_e164)

avps › experimental_result › avps › subscription_id_type › value

値名前
0 (0x00000000)end_user_e164
1 (0x00000001)end_user_imsi
2 (0x00000002)end_user_sip_uri
3 (0x00000003)end_user_nai
4 (0x00000004)end_user_private
avps › experimental_result › avps › multiple_services_indicator
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (not_supported)

avps › experimental_result › avps › multiple_services_indicator › value

値名前
0 (0x00000000)not_supported
1 (0x00000001)supported
avps › experimental_result › avps › service_context_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › experimental_result › avps › accounting_record_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (event_record)

avps › experimental_result › avps › accounting_record_type › value

値名前
1 (0x00000001)event_record
2 (0x00000002)start_record
3 (0x00000003)interim_record
4 (0x00000004)stop_record
avps › experimental_result › avps › accounting_record_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › experimental_result › avps › host_ip_address
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)1
addressipv4192.0.2.1
avps › experimental_result › avps › host_ip_address_ipv6
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)2
addressipv62001:db8::1

avps › subscription_id

フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
avpstlv — PDU の残りすべて2 要素
avps › subscription_id › avps
  • タイプ 32 ビット、長さ 24 ビット。
  • 長さはタイプと長さのフィールドも含みます。
  • 値の先頭 1 オクテットはタイプと長さの間にあります。
  • 各項目は 4 オクテットの倍数までゼロで詰めます (長さには含めない)
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x00000001)user_namev, m, p, reserved, vendor_id, value
25 (0x00000019)classv, m, p, reserved, vendor_id, value
27 (0x0000001b)session_timeoutv, m, p, reserved, vendor_id, value
33 (0x00000021)proxy_statev, m, p, reserved, vendor_id, value
44 (0x0000002c)accounting_session_idv, m, p, reserved, vendor_id, value
50 (0x00000032)acct_multi_session_idv, m, p, reserved, vendor_id, value
55 (0x00000037)event_timestampv, m, p, reserved, vendor_id, value
85 (0x00000055)acct_interim_intervalv, m, p, reserved, vendor_id, value
258 (0x00000102)auth_application_idv, m, p, reserved, vendor_id, value
259 (0x00000103)acct_application_idv, m, p, reserved, vendor_id, value
262 (0x00000106)redirect_max_cache_timev, m, p, reserved, vendor_id, value
263 (0x00000107)session_idv, m, p, reserved, vendor_id, value
264 (0x00000108)origin_hostv, m, p, reserved, vendor_id, value
265 (0x00000109)supported_vendor_idv, m, p, reserved, vendor_id, value
266 (0x0000010a)vendor_idv, m, p, reserved, vendor_id, value
267 (0x0000010b)firmware_revisionv, m, p, reserved, vendor_id, value
268 (0x0000010c)result_codev, m, p, reserved, vendor_id, value
269 (0x0000010d)product_namev, m, p, reserved, vendor_id, value
270 (0x0000010e)session_bindingv, m, p, reserved, vendor_id, value
272 (0x00000110)multi_round_time_outv, m, p, reserved, vendor_id, value
273 (0x00000111)disconnect_causev, m, p, reserved, vendor_id, value
274 (0x00000112)auth_request_typev, m, p, reserved, vendor_id, value
276 (0x00000114)auth_grace_periodv, m, p, reserved, vendor_id, value
277 (0x00000115)auth_session_statev, m, p, reserved, vendor_id, value
278 (0x00000116)origin_state_idv, m, p, reserved, vendor_id, value
280 (0x00000118)proxy_hostv, m, p, reserved, vendor_id, value
281 (0x00000119)error_messagev, m, p, reserved, vendor_id, value
282 (0x0000011a)route_recordv, m, p, reserved, vendor_id, value
283 (0x0000011b)destination_realmv, m, p, reserved, vendor_id, value
285 (0x0000011d)re_auth_request_typev, m, p, reserved, vendor_id, value
287 (0x0000011f)accounting_sub_session_idv, m, p, reserved, vendor_id, value
291 (0x00000123)authorization_lifetimev, m, p, reserved, vendor_id, value
292 (0x00000124)redirect_hostv, m, p, reserved, vendor_id, value
293 (0x00000125)destination_hostv, m, p, reserved, vendor_id, value
294 (0x00000126)error_reporting_hostv, m, p, reserved, vendor_id, value
295 (0x00000127)termination_causev, m, p, reserved, vendor_id, value
296 (0x00000128)origin_realmv, m, p, reserved, vendor_id, value
298 (0x0000012a)experimental_result_codev, m, p, reserved, vendor_id, value
299 (0x0000012b)inband_security_idv, m, p, reserved, vendor_id, value
415 (0x0000019f)cc_request_numberv, m, p, reserved, vendor_id, value
416 (0x000001a0)cc_request_typev, m, p, reserved, vendor_id, value
444 (0x000001bc)subscription_id_datav, m, p, reserved, vendor_id, value
450 (0x000001c2)subscription_id_typev, m, p, reserved, vendor_id, value
455 (0x000001c7)multiple_services_indicatorv, m, p, reserved, vendor_id, value
461 (0x000001cd)service_context_idv, m, p, reserved, vendor_id, value
480 (0x000001e0)accounting_record_typev, m, p, reserved, vendor_id, value
485 (0x000001e5)accounting_record_numberv, m, p, reserved, vendor_id, value
257 (0x00000101)host_ip_addressv, m, p, reserved, vendor_id, address_family, address; 値が 7 オクテットのとき
257 (0x00000101)host_ip_address_ipv6v, m, p, reserved, vendor_id, address_family, address; 値が 19 オクテットのとき
avps › subscription_id › avps › user_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › class
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › session_timeout
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › proxy_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › accounting_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › acct_multi_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › event_timestamp
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › acct_interim_interval
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › auth_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › acct_application_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › redirect_max_cache_time
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › origin_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › supported_vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › vendor_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › firmware_revision
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)2001 (success)

avps › subscription_id › avps › result_code › value

値名前
1001 (0x000003e9)multi_round_auth
2001 (0x000007d1)success
2002 (0x000007d2)limited_success
3001 (0x00000bb9)command_unsupported
3002 (0x00000bba)unable_to_deliver
3003 (0x00000bbb)realm_not_served
3004 (0x00000bbc)too_busy
3005 (0x00000bbd)loop_detected
3006 (0x00000bbe)redirect_indication
3007 (0x00000bbf)application_unsupported
3008 (0x00000bc0)invalid_hdr_bits
3009 (0x00000bc1)invalid_avp_bits
3010 (0x00000bc2)unknown_peer
4001 (0x00000fa1)authentication_rejected
4002 (0x00000fa2)out_of_space
4003 (0x00000fa3)election_lost
5001 (0x00001389)avp_unsupported
5002 (0x0000138a)unknown_session_id
5003 (0x0000138b)authorization_rejected
5004 (0x0000138c)invalid_avp_value
5005 (0x0000138d)missing_avp
5006 (0x0000138e)resources_exceeded
5007 (0x0000138f)contradicting_avps
5008 (0x00001390)avp_not_allowed
5009 (0x00001391)avp_occurs_too_many_times
5010 (0x00001392)no_common_application
5011 (0x00001393)unsupported_version
5012 (0x00001394)unable_to_comply
5013 (0x00001395)invalid_bit_in_header
5014 (0x00001396)invalid_avp_length
5015 (0x00001397)invalid_message_length
5016 (0x00001398)invalid_avp_bit_combo
5017 (0x00001399)no_common_security
avps › subscription_id › avps › product_name
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › session_binding
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › multi_round_time_out
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › disconnect_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (rebooting)

avps › subscription_id › avps › disconnect_cause › value

値名前
0 (0x00000000)rebooting
1 (0x00000001)busy
2 (0x00000002)do_not_want_to_talk_to_you
avps › subscription_id › avps › auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)3 (authorize_authenticate)

avps › subscription_id › avps › auth_request_type › value

値名前
1 (0x00000001)authenticate_only
2 (0x00000002)authorize_only
3 (0x00000003)authorize_authenticate
avps › subscription_id › avps › auth_grace_period
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › auth_session_state
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (no_state_maintained)

avps › subscription_id › avps › auth_session_state › value

値名前
0 (0x00000000)state_maintained
1 (0x00000001)no_state_maintained
avps › subscription_id › avps › origin_state_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › proxy_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › error_message
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › route_record
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › destination_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › re_auth_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (authorize_only)

avps › subscription_id › avps › re_auth_request_type › value

値名前
0 (0x00000000)authorize_only
1 (0x00000001)authorize_authenticate
avps › subscription_id › avps › accounting_sub_session_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(64)
avps › subscription_id › avps › authorization_lifetime
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › redirect_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › destination_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › error_reporting_host
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)0
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › termination_cause
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (logout)

avps › subscription_id › avps › termination_cause › value

値名前
1 (0x00000001)logout
2 (0x00000002)service_not_provided
3 (0x00000003)bad_answer
4 (0x00000004)administrative
5 (0x00000005)link_broken
6 (0x00000006)auth_expired
7 (0x00000007)user_moved
8 (0x00000008)session_timeout
avps › subscription_id › avps › origin_realm
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › experimental_result_code
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › inband_security_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › cc_request_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › cc_request_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (initial_request)

avps › subscription_id › avps › cc_request_type › value

値名前
1 (0x00000001)initial_request
2 (0x00000002)update_request
3 (0x00000003)termination_request
4 (0x00000004)event_request
avps › subscription_id › avps › subscription_id_data
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › subscription_id_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (end_user_e164)

avps › subscription_id › avps › subscription_id_type › value

値名前
0 (0x00000000)end_user_e164
1 (0x00000001)end_user_imsi
2 (0x00000002)end_user_sip_uri
3 (0x00000003)end_user_nai
4 (0x00000004)end_user_private
avps › subscription_id › avps › multiple_services_indicator
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)0 (not_supported)

avps › subscription_id › avps › multiple_services_indicator › value

値名前
0 (0x00000000)not_supported
1 (0x00000001)supported
avps › subscription_id › avps › service_context_id
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valuebytes — PDU の残りすべて
avps › subscription_id › avps › accounting_record_type
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueenum(32)1 (event_record)

avps › subscription_id › avps › accounting_record_type › value

値名前
1 (0x00000001)event_record
2 (0x00000002)start_record
3 (0x00000003)interim_record
4 (0x00000004)stop_record
avps › subscription_id › avps › accounting_record_number
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
valueuint(32)
avps › subscription_id › avps › host_ip_address
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)1
addressipv4192.0.2.1
avps › subscription_id › avps › host_ip_address_ipv6
フィールド型既定値Auto説明
vuint(1)vendor_id の要素数
muint(1)1
puint(1)0
reserveduint(5)0
vendor_idlist<uint(32)> — v 個の要素
address_familyuint(16)2
addressipv62001:db8::1

制約

レベル規則
警告version が 1
エラーヘッダが 20 オクテット以上

サンプルテンプレート

SIP (sip)

下位レイヤからの到達

下位レイヤ判別フィールド値
tcpdst_port / src_port5060 (0x13c4)
udpdst_port / src_port5060 (0x13c4)

フィールド

フィールド型既定値Auto説明
start_linebytes — 終端 0d 0a まで (組み立て時に付加)"OPTIONS sip:bob@example.com SIP/2.0"開始行: リクエスト行(メソッド、Request-URI、SIP/2.0)またはステータス行(SIP/2.0、コード、理由)。CRLF は自動で付く。
headerslist<bytes> — 終端 0d 0a まで (組み立て時に付加)9 要素ヘッダ行(名前: 値)を 1 要素 1 行で指定。各行の CRLF と直後の空行は自動で付く。Content-Length は手動。
bodybytes — PDU の残りすべて""メッセージ本文(SDP のオファー / アンサーなど)。

サンプルテンプレート

  • sip-invite — templates/protocols/voip/sip-invite.wpg.yaml
  • sip-register — templates/protocols/voip/sip-register.wpg.yaml

RTP (rtp)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port5004 (0x138c)

フィールド

フィールド型既定値Auto説明
versionuint(2)2RTP バージョン(2)。
paddinguint(1)0P ビット: ペイロード末尾の詰め物(最後のオクテットがその数、手動)。
xuint(1)header_extension の要素数X ビット: CSRC リストの後に拡張ヘッダが続く(Auto)。
ccuint(4)csrc の要素数CSRC の数(Auto)。
markeruint(1)0マーカービット(プロファイル定義。例: 通話区間の先頭)。
payload_typeenum(7)0 (pcmu)ペイロードタイプ(0 PCMU、8 PCMA、9 G.722、18 G.729、96〜127 動的)。
sequence_numberuint(16)1シーケンス番号。RTP パケットごとに 1 増える。
timestampuint(32)0タイムスタンプ: ペイロード先頭オクテットのサンプリング時刻。
ssrcuint(32)305419896同期送信元識別子。
csrclist<uint(32)> — cc 個の要素[]寄与送信元識別子(最大 15 個)。
header_extensionlist<struct> — x 個の要素[]拡張ヘッダ: プロファイル定義の 16 ビット(0xBEDE: RFC 8285 の 1 バイト要素)、32 ビットワード単位の長さ(Auto)、拡張ワード。

payload_type

値名前
0pcmu
3gsm
4g723
8pcma
9g722
13cn
18g729
96dynamic_96
101telephone_event

header_extension

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
profileuint(16)48862
lengthuint(16)data の要素数
datalist<uint(32)> — length * 4 オクテット

制約

レベル規則
警告version が 2

サンプルテンプレート

  • rtp-pcmu — templates/protocols/voip/rtp-pcmu.wpg.yaml

RTCP (rtcp)

下位レイヤからの到達

下位レイヤ判別フィールド値
udpdst_port / src_port5005 (0x138d)
rtcppacket_type0 (0x00) – 255 (0xff) (残り 4 オクテット以上)
rtcp_srversion2 (残り 4 オクテット以上)
rtcp_rrversion2 (残り 4 オクテット以上)
rtcp_sdesversion2 (残り 4 オクテット以上)
rtcp_byeversion2 (残り 4 オクテット以上)
rtcp_appversion2 (残り 4 オクテット以上)

フィールド

フィールド型既定値Auto説明
versionuint(2)2RTCP バージョン(2)。
paddinguint(1)0P ビット: パケット末尾の詰め物(手動)。
countuint(5)0型付けしていないパケットタイプのカウント / フォーマット(5 ビット)。
packet_typeenum(8)205 (rtpfb)パケットタイプ(200 SR、201 RR、202 SDES、203 BYE、204 APP、205 RTPFB、206 PSFB、207 XR)。
lengthuint(16)ヘッダの長さ (32 ビットワード単位) (-1)32 ビットワード単位のパケット長から 1 を引いた値(Auto)。
bodybytes — グループ先頭から length * 4 + 4 オクテットまで12 34 56 78 00 00 00 00共通ヘッダ以降のパケット本体(オクテット列)。

packet_type

値名前
200 (0xc8)sr
201 (0xc9)rr
202 (0xca)sdes
203 (0xcb)bye
204 (0xcc)app
205 (0xcd)rtpfb
206 (0xce)psfb
207 (0xcf)xr

次レイヤ

次レイヤは packet_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
200 (0xc8)rtcp_srこのレイヤを読み直す
201 (0xc9)rtcp_rrこのレイヤを読み直す
202 (0xca)rtcp_sdesこのレイヤを読み直す
203 (0xcb)rtcp_byeこのレイヤを読み直す
204 (0xcc)rtcp_appこのレイヤを読み直す
0 (0x00) – 255 (0xff)rtcp残り 4 オクテット以上
0 (0x00) – 255 (0xff)rtcp_sr残り 4 オクテット以上
0 (0x00) – 255 (0xff)rtcp_rr残り 4 オクテット以上
0 (0x00) – 255 (0xff)rtcp_sdes残り 4 オクテット以上
0 (0x00) – 255 (0xff)rtcp_bye残り 4 オクテット以上
0 (0x00) – 255 (0xff)rtcp_app残り 4 オクテット以上

制約

レベル規則
警告version が 2

サンプルテンプレート

RTCP SR (rtcp_sr)

下位レイヤからの到達

下位レイヤ判別フィールド値
rtcppacket_type200 (0xc8) (このレイヤを読み直す)
rtcppacket_type0 (0x00) – 255 (0xff) (残り 4 オクテット以上)
rtcp_srversion2 (残り 4 オクテット以上)
rtcp_rrversion2 (残り 4 オクテット以上)
rtcp_sdesversion2 (残り 4 オクテット以上)
rtcp_byeversion2 (残り 4 オクテット以上)
rtcp_appversion2 (残り 4 オクテット以上)

フィールド

フィールド型既定値Auto説明
versionuint(2)2RTCP バージョン(2)。
paddinguint(1)0P ビット: パケット末尾の詰め物(手動)。
report_countuint(5)report_blocks の要素数受信レポートの数(Auto)。
packet_typeenum(8)200 (sr)パケットタイプ(200 SR、201 RR、202 SDES、203 BYE、204 APP、205 RTPFB、206 PSFB、207 XR)。
lengthuint(16)ヘッダの長さ (32 ビットワード単位) (-1)32 ビットワード単位のパケット長から 1 を引いた値(Auto)。
ssrcuint(32)305419896このパケットの送信者の SSRC。
ntp_timestamp_mswuint(32)3942645760NTP タイムスタンプ(上位ワード。次のフィールドが小数部)。
ntp_timestamp_lswuint(32)0
rtp_timestampuint(32)0NTP タイムスタンプに対応する RTP タイムスタンプ。
packet_countuint(32)0送信者のパケット数。
octet_countuint(32)0送信者のペイロードオクテット数。
report_blockslist<struct> — report_count 個の要素[]受信レポートブロック: SSRC、損失率、累積損失数、拡張最大シーケンス番号、ジッタ、LSR、DLSR。
extensionbytes — グループ先頭から length * 4 + 4 オクテットまで""パケット長までのプロファイル固有の拡張オクテット。

packet_type

値名前
200 (0xc8)sr
201 (0xc9)rr
202 (0xca)sdes
203 (0xcb)bye
204 (0xcc)app
205 (0xcd)rtpfb
206 (0xce)psfb
207 (0xcf)xr

report_blocks

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
ssrcuint(32)2271560481
fraction_lostuint(8)0
cumulative_lostuint(24)0
highest_sequenceuint(32)0
jitteruint(32)0
lsruint(32)0
dlsruint(32)0

次レイヤ

次レイヤは version で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2rtcp残り 4 オクテット以上
2rtcp_sr残り 4 オクテット以上
2rtcp_rr残り 4 オクテット以上
2rtcp_sdes残り 4 オクテット以上
2rtcp_bye残り 4 オクテット以上
2rtcp_app残り 4 オクテット以上

制約

レベル規則
警告version が 2

サンプルテンプレート

  • rtcp-sr-sdes — templates/protocols/voip/rtcp-sr-sdes.wpg.yaml

RTCP RR (rtcp_rr)

下位レイヤからの到達

下位レイヤ判別フィールド値
rtcppacket_type201 (0xc9) (このレイヤを読み直す)
rtcppacket_type0 (0x00) – 255 (0xff) (残り 4 オクテット以上)
rtcp_srversion2 (残り 4 オクテット以上)
rtcp_rrversion2 (残り 4 オクテット以上)
rtcp_sdesversion2 (残り 4 オクテット以上)
rtcp_byeversion2 (残り 4 オクテット以上)
rtcp_appversion2 (残り 4 オクテット以上)

フィールド

フィールド型既定値Auto説明
versionuint(2)2RTCP バージョン(2)。
paddinguint(1)0P ビット: パケット末尾の詰め物(手動)。
report_countuint(5)report_blocks の要素数受信レポートの数(Auto)。
packet_typeenum(8)201 (rr)パケットタイプ(200 SR、201 RR、202 SDES、203 BYE、204 APP、205 RTPFB、206 PSFB、207 XR)。
lengthuint(16)ヘッダの長さ (32 ビットワード単位) (-1)32 ビットワード単位のパケット長から 1 を引いた値(Auto)。
ssrcuint(32)305419896このパケットの送信者の SSRC。
report_blockslist<struct> — report_count 個の要素[]受信レポートブロック: SSRC、損失率、累積損失数、拡張最大シーケンス番号、ジッタ、LSR、DLSR。
extensionbytes — グループ先頭から length * 4 + 4 オクテットまで""パケット長までのプロファイル固有の拡張オクテット。

packet_type

値名前
200 (0xc8)sr
201 (0xc9)rr
202 (0xca)sdes
203 (0xcb)bye
204 (0xcc)app
205 (0xcd)rtpfb
206 (0xce)psfb
207 (0xcf)xr

report_blocks

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
ssrcuint(32)2271560481
fraction_lostuint(8)0
cumulative_lostuint(24)0
highest_sequenceuint(32)0
jitteruint(32)0
lsruint(32)0
dlsruint(32)0

次レイヤ

次レイヤは version で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2rtcp残り 4 オクテット以上
2rtcp_sr残り 4 オクテット以上
2rtcp_rr残り 4 オクテット以上
2rtcp_sdes残り 4 オクテット以上
2rtcp_bye残り 4 オクテット以上
2rtcp_app残り 4 オクテット以上

制約

レベル規則
警告version が 2

サンプルテンプレート

RTCP SDES (rtcp_sdes)

下位レイヤからの到達

下位レイヤ判別フィールド値
rtcppacket_type202 (0xca) (このレイヤを読み直す)
rtcppacket_type0 (0x00) – 255 (0xff) (残り 4 オクテット以上)
rtcp_srversion2 (残り 4 オクテット以上)
rtcp_rrversion2 (残り 4 オクテット以上)
rtcp_sdesversion2 (残り 4 オクテット以上)
rtcp_byeversion2 (残り 4 オクテット以上)
rtcp_appversion2 (残り 4 オクテット以上)

フィールド

フィールド型既定値Auto説明
versionuint(2)2RTCP バージョン(2)。
paddinguint(1)0P ビット: パケット末尾の詰め物(手動)。
source_countuint(5)chunks の要素数ソースの数: SDES のチャンクまたは BYE の識別子(Auto)。
packet_typeenum(8)202 (sdes)パケットタイプ(200 SR、201 RR、202 SDES、203 BYE、204 APP、205 RTPFB、206 PSFB、207 XR)。
lengthuint(16)ヘッダの長さ (32 ビットワード単位) (-1)32 ビットワード単位のパケット長から 1 を引いた値(Auto)。
chunkslist<struct> — source_count 個の要素1 要素SDES チャンク: SSRC / CSRC とその項目(型、長さ(Auto)、テキスト)。null オクテットで終わり、32 ビット境界まで詰める。

packet_type

値名前
200 (0xc8)sr
201 (0xc9)rr
202 (0xca)sdes
203 (0xcb)bye
204 (0xcc)app
205 (0xcd)rtpfb
206 (0xce)psfb
207 (0xcf)xr

chunks

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
ssrcuint(32)305419896
itemslist<struct> — 終端 00 まで (組み立て時に付加)
paddingpadding(4)

chunks › items

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
typeenum(8)1 (cname)
lengthuint(8)text のオクテット長
textbytes — length オクテット
chunks › items › type
値名前
1 (0x01)cname
2 (0x02)name
3 (0x03)email
4 (0x04)phone
5 (0x05)loc
6 (0x06)tool
7 (0x07)note
8 (0x08)priv

次レイヤ

次レイヤは version で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2rtcp残り 4 オクテット以上
2rtcp_sr残り 4 オクテット以上
2rtcp_rr残り 4 オクテット以上
2rtcp_sdes残り 4 オクテット以上
2rtcp_bye残り 4 オクテット以上
2rtcp_app残り 4 オクテット以上

制約

レベル規則
警告version が 2

サンプルテンプレート

  • rtcp-rr-bye — templates/protocols/voip/rtcp-rr-bye.wpg.yaml
  • rtcp-sr-sdes — templates/protocols/voip/rtcp-sr-sdes.wpg.yaml

RTCP BYE (rtcp_bye)

下位レイヤからの到達

下位レイヤ判別フィールド値
rtcppacket_type203 (0xcb) (このレイヤを読み直す)
rtcppacket_type0 (0x00) – 255 (0xff) (残り 4 オクテット以上)
rtcp_srversion2 (残り 4 オクテット以上)
rtcp_rrversion2 (残り 4 オクテット以上)
rtcp_sdesversion2 (残り 4 オクテット以上)
rtcp_byeversion2 (残り 4 オクテット以上)
rtcp_appversion2 (残り 4 オクテット以上)

フィールド

フィールド型既定値Auto説明
versionuint(2)2RTCP バージョン(2)。
paddinguint(1)0P ビット: パケット末尾の詰め物(手動)。
source_countuint(5)ssrcs の要素数ソースの数: SDES のチャンクまたは BYE の識別子(Auto)。
packet_typeenum(8)203 (bye)パケットタイプ(200 SR、201 RR、202 SDES、203 BYE、204 APP、205 RTPFB、206 PSFB、207 XR)。
lengthuint(16)ヘッダの長さ (32 ビットワード単位) (-1)32 ビットワード単位のパケット長から 1 を引いた値(Auto)。
ssrcslist<uint(32)> — source_count 個の要素1 要素セッションを離れる SSRC / CSRC 識別子。
reasonlist<struct> — グループ先頭から length * 4 + 4 オクテットまで[]省略可能な離脱理由: 長さ(Auto)、テキスト、32 ビット境界までの詰め物。

packet_type

値名前
200 (0xc8)sr
201 (0xc9)rr
202 (0xca)sdes
203 (0xcb)bye
204 (0xcc)app
205 (0xcd)rtpfb
206 (0xce)psfb
207 (0xcf)xr

reason

各要素は以下のフィールドの組です。

フィールド型既定値Auto説明
lengthuint(8)text のオクテット長
textbytes — length オクテット
paddingpadding(4)

次レイヤ

次レイヤは version で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2rtcp残り 4 オクテット以上
2rtcp_sr残り 4 オクテット以上
2rtcp_rr残り 4 オクテット以上
2rtcp_sdes残り 4 オクテット以上
2rtcp_bye残り 4 オクテット以上
2rtcp_app残り 4 オクテット以上

制約

レベル規則
警告version が 2

サンプルテンプレート

  • rtcp-rr-bye — templates/protocols/voip/rtcp-rr-bye.wpg.yaml

RTCP APP (rtcp_app)

下位レイヤからの到達

下位レイヤ判別フィールド値
rtcppacket_type204 (0xcc) (このレイヤを読み直す)
rtcppacket_type0 (0x00) – 255 (0xff) (残り 4 オクテット以上)
rtcp_srversion2 (残り 4 オクテット以上)
rtcp_rrversion2 (残り 4 オクテット以上)
rtcp_sdesversion2 (残り 4 オクテット以上)
rtcp_byeversion2 (残り 4 オクテット以上)
rtcp_appversion2 (残り 4 オクテット以上)

フィールド

フィールド型既定値Auto説明
versionuint(2)2RTCP バージョン(2)。
paddinguint(1)0P ビット: パケット末尾の詰め物(手動)。
subtypeuint(5)0アプリケーション定義のサブタイプ。
packet_typeenum(8)204 (app)パケットタイプ(200 SR、201 RR、202 SDES、203 BYE、204 APP、205 RTPFB、206 PSFB、207 XR)。
lengthuint(16)ヘッダの長さ (32 ビットワード単位) (-1)32 ビットワード単位のパケット長から 1 を引いた値(Auto)。
ssrcuint(32)305419896このパケットの送信者の SSRC。
namebytes(4)57 50 47 30名前(ASCII 4 文字)。
databytes — グループ先頭から length * 4 + 4 オクテットまで""アプリケーション依存のデータ(4 オクテットの倍数)。

packet_type

値名前
200 (0xc8)sr
201 (0xc9)rr
202 (0xca)sdes
203 (0xcb)bye
204 (0xcc)app
205 (0xcd)rtpfb
206 (0xce)psfb
207 (0xcf)xr

次レイヤ

次レイヤは version で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
2rtcp残り 4 オクテット以上
2rtcp_sr残り 4 オクテット以上
2rtcp_rr残り 4 オクテット以上
2rtcp_sdes残り 4 オクテット以上
2rtcp_bye残り 4 オクテット以上
2rtcp_app残り 4 オクテット以上

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP (ptp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port319 (0x013f)
udpdst_port / src_port320 (0x0140)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)0 (sync)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)0 (sync)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)0メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
databytes — message_length - 34 オクテット00 00 00 00 00 00 00 00 00 00共通ヘッダ以降のメッセージ(メッセージ長まで)をオクテット列で。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

次レイヤ

次レイヤは message_type で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0ptp_syncこのレイヤを読み直す
1ptp_delay_reqこのレイヤを読み直す
2ptp_pdelay_reqこのレイヤを読み直す
3ptp_pdelay_respこのレイヤを読み直す
8ptp_follow_upこのレイヤを読み直す
9ptp_delay_respこのレイヤを読み直す
10ptp_pdelay_resp_follow_upこのレイヤを読み直す
11ptp_announceこのレイヤを読み直す
12ptp_signalingこのレイヤを読み直す
13ptp_managementこのレイヤを読み直す

サンプルテンプレート

  • ptp-generic — templates/protocols/timing/ptp-generic.wpg.yaml

PTP Sync (ptp_sync)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port319 (0x013f)
ptpmessage_type0 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)0 (sync)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)0 (sync)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)0メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
origin_timestamp_secondsuint(48)0タイムスタンプ: 秒(48 ビット)。
origin_timestamp_nanosecondsuint(32)0タイムスタンプ: ナノ秒(32 ビット)。
tlvstlv — message_length - 44 オクテット[]TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Delay_Req (ptp_delay_req)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port319 (0x013f)
ptpmessage_type1 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)1 (delay_req)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)1 (delay_req)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)127メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
origin_timestamp_secondsuint(48)0タイムスタンプ: 秒(48 ビット)。
origin_timestamp_nanosecondsuint(32)0タイムスタンプ: ナノ秒(32 ビット)。
tlvstlv — message_length - 44 オクテット[]TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Pdelay_Req (ptp_pdelay_req)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port319 (0x013f)
ptpmessage_type2 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)2 (pdelay_req)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)5 (other)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)127メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
origin_timestamp_secondsuint(48)0タイムスタンプ: 秒(48 ビット)。
origin_timestamp_nanosecondsuint(32)0タイムスタンプ: ナノ秒(32 ビット)。
reservedbytes(10)00 00 00 00 00 00 00 00 00 00
tlvstlv — message_length - 54 オクテット[]TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Pdelay_Resp (ptp_pdelay_resp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port319 (0x013f)
ptpmessage_type3 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)3 (pdelay_resp)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)5 (other)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)127メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
request_receipt_timestamp_secondsuint(48)0タイムスタンプ: 秒(48 ビット)。
request_receipt_timestamp_nanosecondsuint(32)0タイムスタンプ: ナノ秒(32 ビット)。
requesting_port_clock_identityuint(64)144116287553929218ポート ID: クロック ID(全ビット 1 = すべてのクロック)。
requesting_port_port_numberuint(16)1ポート ID: ポート番号(0xffff = すべてのポート)。
tlvstlv — message_length - 54 オクテット[]TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Follow_Up (ptp_follow_up)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port320 (0x0140)
ptpmessage_type8 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)8 (follow_up)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)2 (follow_up)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)0メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
precise_origin_timestamp_secondsuint(48)0タイムスタンプ: 秒(48 ビット)。
precise_origin_timestamp_nanosecondsuint(32)0タイムスタンプ: ナノ秒(32 ビット)。
tlvstlv — message_length - 44 オクテット[]TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Delay_Resp (ptp_delay_resp)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port320 (0x0140)
ptpmessage_type9 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)9 (delay_resp)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)3 (delay_resp)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)0メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
receive_timestamp_secondsuint(48)0タイムスタンプ: 秒(48 ビット)。
receive_timestamp_nanosecondsuint(32)0タイムスタンプ: ナノ秒(32 ビット)。
requesting_port_clock_identityuint(64)144116287553929218ポート ID: クロック ID(全ビット 1 = すべてのクロック)。
requesting_port_port_numberuint(16)1ポート ID: ポート番号(0xffff = すべてのポート)。
tlvstlv — message_length - 54 オクテット[]TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Pdelay_Resp_Follow_Up (ptp_pdelay_resp_follow_up)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port320 (0x0140)
ptpmessage_type10 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)10 (pdelay_resp_follow_up)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)5 (other)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)127メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
response_origin_timestamp_secondsuint(48)0タイムスタンプ: 秒(48 ビット)。
response_origin_timestamp_nanosecondsuint(32)0タイムスタンプ: ナノ秒(32 ビット)。
requesting_port_clock_identityuint(64)144116287553929218ポート ID: クロック ID(全ビット 1 = すべてのクロック)。
requesting_port_port_numberuint(16)1ポート ID: ポート番号(0xffff = すべてのポート)。
tlvstlv — message_length - 54 オクテット[]TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Announce (ptp_announce)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port320 (0x0140)
ptpmessage_type11 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)11 (announce)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)5 (other)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)1メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
origin_timestamp_secondsuint(48)0タイムスタンプ: 秒(48 ビット)。
origin_timestamp_nanosecondsuint(32)0タイムスタンプ: ナノ秒(32 ビット)。
current_utc_offsetint(16)37現在の UTC オフセット(秒、TAI - UTC)。
reserveduint(8)0
grandmaster_priority1uint(8)128グランドマスタの優先度(BMCA、小さいほど優先)。
grandmaster_clock_classuint(8)248グランドマスタのクロッククラス(6 = 一次基準に同期、248 = 既定、255 = スレーブ専用)。
grandmaster_clock_accuracyenum(8)254 (unknown)グランドマスタのクロック精度(0x20 = 25 ns 以内 … 0xfe = 不明)。
grandmaster_offset_scaled_log_varianceuint(16)65535グランドマスタの offsetScaledLogVariance。
grandmaster_priority2uint(8)128グランドマスタの優先度(BMCA、小さいほど優先)。
grandmaster_identityuint(64)144116287553929217グランドマスタのクロック ID。
steps_removeduint(16)0グランドマスタと送信元の間のバウンダリクロック数。
time_sourceenum(8)160 (internal_oscillator)グランドマスタの時刻源: 原子時計、GPS、地上波、PTP、NTP、手動設定、その他、内部発振器。
tlvstlv — message_length - 64 オクテット[]TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

grandmaster_clock_accuracy

値名前
32 (0x20)within_25ns
33 (0x21)within_100ns
34 (0x22)within_250ns
35 (0x23)within_1us
36 (0x24)within_2_5us
37 (0x25)within_10us
38 (0x26)within_25us
39 (0x27)within_100us
40 (0x28)within_250us
41 (0x29)within_1ms
42 (0x2a)within_2_5ms
43 (0x2b)within_10ms
44 (0x2c)within_25ms
45 (0x2d)within_100ms
46 (0x2e)within_250ms
47 (0x2f)within_1s
48 (0x30)within_10s
49 (0x31)over_10s
254 (0xfe)unknown

time_source

値名前
16 (0x10)atomic_clock
32 (0x20)gps
48 (0x30)terrestrial_radio
64 (0x40)ptp
80 (0x50)ntp
96 (0x60)hand_set
144 (0x90)other
160 (0xa0)internal_oscillator

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Signaling (ptp_signaling)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port320 (0x0140)
ptpmessage_type12 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)12 (signaling)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)5 (other)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)127メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
target_port_clock_identityuint(64)18446744073709551615ポート ID: クロック ID(全ビット 1 = すべてのクロック)。
target_port_port_numberuint(16)65535ポート ID: ポート番号(0xffff = すべてのポート)。
tlvstlv — message_length - 44 オクテット1 要素TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

PTP Management (ptp_management)

下位レイヤからの到達

下位レイヤ判別フィールド値
ethernet2ethertype35063 (0x88f7)
dot1qethertype35063 (0x88f7)
dot1adethertype35063 (0x88f7)
udpdst_port / src_port320 (0x0140)
ptpmessage_type13 (このレイヤを読み直す)

フィールド

フィールド型既定値Auto説明
major_sdo_iduint(4)0majorSdoId(IEEE 1588-2008 の transportSpecific)。既定プロファイルは 0、IEEE 802.1AS(gPTP)は 1。
message_typeenum(4)13 (management)メッセージタイプ: 0 Sync、1 Delay_Req、2 Pdelay_Req、3 Pdelay_Resp、8 Follow_Up、9 Delay_Resp、10 Pdelay_Resp_Follow_Up、11 Announce、12 Signaling、13 Management。
minor_versionuint(4)0minorVersionPTP(IEEE 1588-2008 では 0、IEEE 1588-2019 では 1)。
versionuint(4)2versionPTP(2)。
message_lengthuint(16)ヘッダとペイロードの長さ (オクテット単位)TLV を含むメッセージ全体のオクテット長(自動)。
domain_numberuint(8)0ドメイン番号。
minor_sdo_iduint(8)0minorSdoId(IEEE 1588-2008 では予約、0)。
flagsflags(16)0x0フラグ: 1 オクテット目に alternateMaster、twoStep、unicast、プロファイル固有ビット、セキュリティビット、2 オクテット目に leap61、leap59、currentUtcOffsetValid、ptpTimescale、timeTraceable、frequencyTraceable、synchronizationUncertain。
correction_fieldint(64)0補正値(ナノ秒 × 2^16、符号付き)。
message_type_specificuint(32)0メッセージタイプ固有フィールド(IEEE 1588-2008 では予約、0)。
clock_identityuint(64)144116287553929217送信元ポートのクロック ID(EUI-64。MAC アドレスの中央に ff:fe を挟んだ値など)。
port_numberuint(16)1送信元ポートのポート番号。
sequence_iduint(16)0シーケンス ID。Follow_Up / Delay_Resp / Pdelay_Resp は応答先メッセージの値をコピーする。
control_fieldenum(8)4 (management)制御フィールド(IEEE 1588 バージョン 1 互換): 0 Sync、1 Delay_Req、2 Follow_Up、3 Delay_Resp、4 Management、5 その他。
log_message_intervalint(8)127メッセージ間隔(秒)の log2(符号付き。該当しない場合は 0x7f)。
target_port_clock_identityuint(64)18446744073709551615ポート ID: クロック ID(全ビット 1 = すべてのクロック)。
target_port_port_numberuint(16)65535ポート ID: ポート番号(0xffff = すべてのポート)。
starting_boundary_hopsuint(8)1Management メッセージの開始時バウンダリホップ数。
boundary_hopsuint(8)1残りのバウンダリホップ数。
reserveduint(4)0
actionenum(4)0 (get)Management の動作: GET、SET、RESPONSE、COMMAND、ACKNOWLEDGE。
reserved2uint(8)0
tlvstlv — message_length - 48 オクテット1 要素TLV(16 ビット型、値の 16 ビット長、自動): Management、Management Error Status、Organization Extension、ユニキャストネゴシエーション(Request / Grant / Cancel / Acknowledge Cancel)、Path Trace、Alternate Time Offset Indicator。メッセージ長で終わる。

message_type

値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

flags

ビットマスク名前
1532768 (0x8000)security
1416384 (0x4000)profile_specific_2
138192 (0x2000)profile_specific_1
101024 (0x0400)unicast
9512 (0x0200)two_step
8256 (0x0100)alternate_master
664 (0x0040)synchronization_uncertain
532 (0x0020)frequency_traceable
416 (0x0010)time_traceable
38 (0x0008)ptp_timescale
24 (0x0004)current_utc_offset_valid
12 (0x0002)leap59
01 (0x0001)leap61

control_field

値名前
0 (0x00)sync
1 (0x01)delay_req
2 (0x02)follow_up
3 (0x03)delay_resp
4 (0x04)management
5 (0x05)other

action

値名前
0get
1set
2response
3command
4acknowledge

tlvs

  • タイプ 16 ビット、長さ 16 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
1 (0x0001)managementmanagement_id, data_field
2 (0x0002)management_error_statusmanagement_error_id, management_id, reserved, display_data
3 (0x0003)organization_extensionorganization_id, organization_sub_type, data_field
4 (0x0004)request_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field
5 (0x0005)grant_unicast_transmissionmessage_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited
6 (0x0006)cancel_unicast_transmissionmessage_type, reserved, reserved2
7 (0x0007)acknowledge_cancel_unicast_transmissionmessage_type, reserved, reserved2
8 (0x0008)path_tracepath_sequence
9 (0x0009)alternate_time_offset_indicatorkey_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad

tlvs › management

フィールド型既定値Auto説明
management_idenum(16)8192 (default_data_set)
data_fieldbytes — PDU の残りすべて
tlvs › management › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › management_error_status

フィールド型既定値Auto説明
management_error_idenum(16)
management_idenum(16)
reserveduint(32)0
display_databytes — PDU の残りすべて
tlvs › management_error_status › management_error_id
値名前
1 (0x0001)response_too_big
2 (0x0002)no_such_id
3 (0x0003)wrong_length
4 (0x0004)wrong_value
5 (0x0005)not_setable
6 (0x0006)not_supported
65534 (0xfffe)general_error
tlvs › management_error_status › management_id
値名前
0 (0x0000)null_management
1 (0x0001)clock_description
2 (0x0002)user_description
8192 (0x2000)default_data_set
8193 (0x2001)current_data_set
8194 (0x2002)parent_data_set
8195 (0x2003)time_properties_data_set
8196 (0x2004)port_data_set
8197 (0x2005)priority1
8198 (0x2006)priority2
8199 (0x2007)domain
8200 (0x2008)slave_only
8201 (0x2009)log_announce_interval
8205 (0x200d)log_sync_interval
8213 (0x2015)utc_properties

tlvs › organization_extension

フィールド型既定値Auto説明
organization_iduint(24)
organization_sub_typeuint(24)
data_fieldbytes — PDU の残りすべて

tlvs › request_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
tlvs › request_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › grant_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
log_inter_message_periodint(8)1
duration_fielduint(32)300
reserved2uint(8)0
reserved3uint(7)0
renewal_inviteduint(1)0
tlvs › grant_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › acknowledge_cancel_unicast_transmission

フィールド型既定値Auto説明
message_typeenum(4)11 (announce)
reserveduint(4)0
reserved2uint(8)0
tlvs › acknowledge_cancel_unicast_transmission › message_type
値名前
0sync
1delay_req
2pdelay_req
3pdelay_resp
8follow_up
9delay_resp
10pdelay_resp_follow_up
11announce
12signaling
13management

tlvs › path_trace

フィールド型既定値Auto説明
path_sequencelist<uint(64)> — PDU の残りすべて

tlvs › alternate_time_offset_indicator

フィールド型既定値Auto説明
key_fielduint(8)0
current_offsetint(32)0
jump_secondsint(32)0
time_of_next_jumpuint(48)0
display_name_lengthuint(8)display_name のオクテット長
display_namebytes — display_name_length オクテット
padbytes — PDU の残りすべて

制約

レベル規則
警告version が 2

サンプルテンプレート

Payload (payload)

下位レイヤからの到達

カタログ内にこのプロトコルへ至る下位レイヤはありません。先頭レイヤとして使うか、明示的に積んでください。

パラメータ

フィールド型既定値Auto説明
modeenum(8)0 (fixed)ペイロードの生成方法: fixed (data をそのまま)、pattern (data を length まで繰り返し)、random (seed から length バイト)、counter (data にパケットごとのカウンタを埋め込み)。
databytes — PDU の残りすべて""ペイロードのオクテット列。fixed では length が 0 以外のとき切り詰め / ゼロ拡張、pattern では繰り返し単位 (空なら 00 01 02 …)。
lengthuint(32)0ペイロード長 (バイト)。0 なら data の長さのまま (fixed / counter)。
seeduint(64)0random モードの擬似乱数のシード。
counter_offsetuint(32)0counter モードで埋め込むカウンタのオクテットオフセット。
counter_widthenum(8)4 (u32)埋め込むカウンタの幅: 4 または 8 バイト (ビッグエンディアン)。
counter_valueuint(64)0ストリーム展開がパケットごとに書き込むカウンタ値 (counter モード)。

mode

値名前
0 (0x00)fixed
1 (0x01)pattern
2 (0x02)random
3 (0x03)counter

counter_width

値名前
4 (0x04)u32
8 (0x08)u64

サンプルテンプレート

Raw payload (raw)

下位レイヤからの到達

カタログ内にこのプロトコルへ至る下位レイヤはありません。先頭レイヤとして使うか、明示的に積んでください。

フィールド

フィールド型既定値Auto説明
databytes — PDU の残りすべて""フレーム末尾までの生のオクテット列。

サンプルテンプレート

  • clnp-er — templates/protocols/l3/clnp-er.wpg.yaml
  • clnp-erq — templates/protocols/l3/clnp-erq.wpg.yaml
  • raw-payload — templates/protocols/payload/raw.wpg.yaml

P1 プロトコル補足

Status: draft

プロトコルリファレンス はプロトコル定義 IR から自動生成した、プロトコルごとの「フィールド一覧」です。本章はそれを補う手書きのページで、P1 / P2 プロトコル群 (M6、M7) について次をまとめます。各ページの末尾には、扱っているプロトコルの生成ページへのリンクがあります。

  • どの下位レイヤ・番号から到達するか (デコード時の demux)
  • Auto で計算されるフィールドと、手動 (Manual) で設定が必要なフィールド
  • エンジンの表現力の都合で残っている近似・制約
  • 同梱サンプルテンプレート (templates/protocols/)

フィールドごとの説明 (ja/en) は GUI のフィールドエディタと GET /api/protocols に含まれます。制約の一次情報は crates/wpg-protocols/src/ の各モジュール doc で、本章と食い違う場合はそちらが正です。

ページプロトコル
L2 制御プロトコルLLDP / CDP / STP / LACP・Marker / EAPOL / PPPoE / PPP (LCP, IPCP)
カプセル化・トンネルVXLAN / GRE / NVGRE / MPLS / MPLS-in-UDP / L2TPv2・v3 / GTP-U / Geneve / IP-in-IP
ルーティングプロトコルOSPFv2・v3 / BGP-4 / RIPv1・v2 / RIPng / EIGRP
冗長化 (FHRP)VRRPv2・v3 / HSRPv1・v2 / GLBP
マルチキャスト制御IGMPv1・v2・v3 / MLDv1・v2 / PIM-SM v2
アプリケーションプロトコルDHCPv4・v6 / DNS / NTP / SNMP / Syslog / RADIUS / TFTP
OSI カプセル化 (P2)802.2 LLC 0xfe / PPP 0x0023 上の OSI PDU、NSAP 型
CLNP / ES-IS (P2)オプション・セグメンテーション付きの CLNP DT / ER / エコー、ES-IS ESH / ISH / リダイレクト
IS-IS (P2)LAN / P2P Hello、LSP、CSNP / PSNP、主要 TLV とサブ TLV
SCTP (P2)CRC32c 付き共通ヘッダ、バンドルされたチャンク (DATA、INIT、SACK、HEARTBEAT、ABORT、ASCONF、RE-CONFIG など)、パラメータとエラー原因
OSPF Opaque / SR、BGP MP / EVPN (P2)SR の SID 付き OSPFv2 TE / Router Information / Extended Prefix / Extended Link LSA、IPv6・VPN-IPv4 / VPN-IPv6・EVPN の BGP NLRI
LDP / RSVP-TE / BFD (P2)LDP の PDU・メッセージ・TLV (FEC、ラベル、Hello / セッションパラメータ)、RSVP-TE の Path / Resv などとオブジェクト (ERO / RRO、SESSION_ATTRIBUTE、IntServ)、BFD 制御パケットと認証 (Micro-BFD 含む)
SRv6 SRH / SR-MPLS (P2)SRv6 Segment Routing Header (セグメントリスト、Pad / HMAC TLV、最終宛先での上位層チェックサム、IPv4 / IPv6 / Ethernet のカプセル化)、SR-MPLS のラベルスタック (予約ラベル名、SRGB + インデックス、エントロピーラベル)
PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)Ethernet / UDP 上の PTP メッセージと TLV、SyncE ESMC、Ethernet CFM / Y.1731 (CCM、LB、LT、AIS / LCK、LM / DM / SLM など) と ERPS R-APS、802.3ah OAMPDU
MACsec / GTPv2-C / Diameter / SIP / RTP (P2)MACsec の SecTAG (セキュアデータと ICV は不透明)、GTPv2-C のメッセージと IE (グループ化 IE の Bearer Context)、Diameter のメッセージと AVP (ベンダ固有、グループ化)、SIP の開始行・ヘッダ行・本文、RTP ヘッダと RTCP 複合パケット (SR / RR / SDES / BYE / APP)

共通の考え方

  • ヘッダ + 本体の分割: OSPF・BGP・IGMP・PIM・ICMPv6 (MLD) のように「共通ヘッダの type で本体の形が変わる」プロトコルは、共通ヘッダと本体を別レイヤとして積みます (例: ospfv2 → ospfv2_hello)。共通ヘッダの type は次のレイヤから Auto で決まるので、通常は本体レイヤを選ぶだけで済みます。
  • 再デコード (re-parse): 同じ番号・ポートで複数の形がある場合 (VRRPv2/v3、HSRPv1/v2、DHCPv6 リレー、SNMP Trap、TFTP の各 opcode) は、まず代表の定義でデコードし、版数・種別の値を見て別定義に読み直します。ビルド時は目的の定義を直接選んでください。
  • 先頭ニブルによる判別: MPLS の最下段ラベル、GTP-U、PIM Register の内側パケットは、先頭 4 ビット (4 → IPv4、6 → IPv6) で判別します。
  • 送信元ポートへのフォールバック: UDP / TCP は宛先ポートで判別し、未知なら送信元ポートで判別します。応答方向 (DNS 応答、BGP の受け側など) もデコードできます。
  • 不透明 (opaque) 領域: 型付けできない部分はバイト列のまま保持します。ビルド時は Hex で値を与え、デコード時もバイト列として表示されます。

サンプルを試す

$ wpg template lint templates/protocols/routing/*.wpg.yaml
$ wpg render templates/protocols/routing/ospfv2-hello.wpg.yaml -o /tmp/ospf.pcapng
$ tshark -r /tmp/ospf.pcapng -V

すべてのサンプルは crates/wpg-template/tests/samples.rs で lint と render が検査されます。P1 の golden バイトテストは crates/wpg-protocols/tests/p1_*.rs にあり、WPG_TSHARK=1 を付けて実行すると tshark でのデコード (プロトコルが認識され malformed にならないこと) も確認します。

L2 制御プロトコル

Status: draft

LLDP / CDP / STP / LACP・Marker / EAPOL / PPPoE / PPP の補足です。定義は crates/wpg-protocols/src/l2control.rs、サンプルは templates/protocols/l2/ にあります。

到達経路とサンプル

idプロトコル下位レイヤサンプル
lldpLLDP (IEEE 802.1AB)ethernet2 EtherType 0x88cclldp.wpg.yaml
cdpCDPdot3 → llc → snap (OUI 0x00000c、PID 0x2000)cdp.wpg.yaml
stpSTP / RSTP / MSTP BPDUdot3 → llc (DSAP/SSAP 0x42)stp.wpg.yaml
lacpLACPDU (Slow Protocols subtype 1)ethernet2 EtherType 0x8809lacp.wpg.yaml
markerMarker / Marker Response (subtype 2)ethernet2 EtherType 0x8809marker.wpg.yaml
eapolEAPOL (IEEE 802.1X)ethernet2 EtherType 0x888eeapol.wpg.yaml
pppoe_discoveryPPPoE Discovery (PADI 〜 PADT)ethernet2 EtherType 0x8863pppoe-discovery.wpg.yaml
pppoe_sessionPPPoE Sessionethernet2 EtherType 0x8864pppoe-ppp-lcp.wpg.yaml
ppp / ppp_lcp / ppp_ipcpPPP (LCP / IPCP)pppoe_sessionpppoe-ppp-lcp.wpg.yaml、pppoe-ppp-ipcp.wpg.yaml

Auto になるフィールド

  • cdp.checksum: RFC 1071 のインターネットチェックサム。
  • eapol.length、pppoe_discovery.length、ppp_lcp.length / ppp_ipcp.length: 後続部分の長さ。
  • ppp.protocol: 次のレイヤ (LCP / IPCP / IPv4 / IPv6 …) から決まります。
  • CDP / PPPoE / LCP / IPCP の TLV・オプションの長さ欄。

制約と近似

  • LLDP の TLV 長は Auto になりません。 LLDP の TLV ヘッダは 7 ビット type + 9 ビット length で、エンジンの TLV 型はオクテット単位の幅しか扱えません。そのため tlvs は { type: uint(7), length: uint(9), value } のリストとして表現され、length は手動です。値を変えたら length も合わせてください。末尾の End TLV (type 0) も明示的に置きます。
  • CDP のチェックサムは標準のインターネットチェックサムを計算します。Cisco 実装は PDU 長が奇数のとき末尾オクテットを符号拡張する癖があるため、奇数長の PDU では実機と値が一致しません。 TLV を偶数長に揃えるか、チェックサムを手動で設定してください。
  • STP は IEEE 802.1D の Configuration BPDU (35 オクテット) を正確に型付けします。RSTP / MSTP の拡張部 (Version 1 Length、Version 3 Length、MSTI 構成レコード) は不透明な trailer です。RST BPDU を作るには protocol_version と bpdu_type を設定し、trailer に Version 1 Length (00) を、MST BPDU では以降の MST 部も Hex で与えます。
  • ブリッジ ID / ルート ID は 2 オクテットの priority (system-id 拡張込み) と 6 オクテットの MAC に分割されています。タイマは 1/256 秒単位です (max_age 20 秒 = 0x1400)。
  • EAPOL の本体 (type 0 なら EAP パケット) は不透明な body です。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ethernet2 · dot3 · llc · snap · lldp · cdp · stp · lacp · marker · eapol · pppoe_discovery · pppoe_session · ppp · ppp_lcp · ppp_ipcp

カプセル化・トンネル

Status: draft

VXLAN / GRE / NVGRE / MPLS / MPLS-in-UDP / L2TPv2・v3 / GTP-U / Geneve / IP-in-IP の補足です。定義は crates/wpg-protocols/src/encap.rs、サンプルは templates/protocols/encap/ にあります。

到達経路とサンプル

idプロトコル下位レイヤ上位レイヤサンプル
vxlanVXLANUDP 4789ethernet2vxlan.wpg.yaml
geneveGeneveUDP 6081protocol_type で選択geneve.wpg.yaml
greGRE (基本 4 オクテット)IPv4 protocol / IPv6 next header 47protocol_type (IPv4 / IPv6 / 0x6558 Ethernet / MPLS)gre-ipv4.wpg.yaml
nvgreNVGREビルド専用 (IP protocol 47 のデコードは gre)ethernet2nvgre.wpg.yaml
mplsMPLS ラベル 1 段EtherType 0x8847 / 0x8848、GRE、UDP 6635 (MPLS-in-UDP)s = 0 なら次の mpls、s = 1 なら先頭ニブルで IPv4 / IPv6mpls-ipv4.wpg.yaml、mpls-in-udp.wpg.yaml
l2tpv2L2TPv2UDP 1701本体は不透明l2tpv2.wpg.yaml
l2tpv3L2TPv3 over IPIPv4 protocol 115本体は不透明l2tpv3.wpg.yaml
gtpuGTP-U (必須 8 オクテット)UDP 2152先頭ニブルで IPv4 / IPv6gtpu-ipv4.wpg.yaml
—IP-in-IP / 6in4IPv4 protocol 4 → ipv4、41 → ipv6—ipip.wpg.yaml、6in4.wpg.yaml

IP-in-IP 用の専用プロトコルはありません。ipv4 の上に ipv4 (または ipv6) を積むだけで、外側の protocol は Auto で 4 (41) になります。

Auto になるフィールド

  • gre.protocol_type、geneve.protocol_type: 次のレイヤから決まります。
  • gtpu.length: GTP-U ヘッダ以降の長さ。
  • mpls.s (bottom-of-stack): 次のレイヤが mpls なら 0、それ以外なら 1。ラベルを重ねるには mpls レイヤを必要な段数だけ積みます。
  • 外側の UDP 宛先ポート・EtherType・IP protocol は、上に積んだレイヤから Auto で決まります。

制約と近似

  • GRE のチェックサム / キー / シーケンス番号は対応するフラグが立ったときだけ存在しますが、エンジンには「存在条件付きフィールド」がありません。gre は基本の 4 オクテット (flags + protocol type) のみで、フラグを立てても追加フィールドは生成されません。キー付き GRE の代表例である NVGRE には専用の nvgre (Key ビット既定オン、vsid + flow_id) を使ってください。nvgre はビルド専用で、受信したパケットを解析すると gre としてデコードされ、キーの 4 オクテットは内側フレームの先頭として誤って読まれます。それ以外のオプションが必要な場合は、gre の直後に raw レイヤで値を置き、フラグを手動で立てます。
  • MPLS 疑似ワイヤ: 最下段ラベルの下はペイロードの先頭ニブルで判別します (4 → IPv4、6 → IPv6)。コントロールワードや Ethernet 疑似ワイヤには判別できる印がないため、デコードでは raw になります。ビルド時は ethernet2 を明示的に積んでください。
  • GTP-U の任意フィールド (シーケンス番号、N-PDU 番号、拡張ヘッダ。E/S/PN フラグで存在) は表現されません。
  • Geneve のオプションはヘッダが 3 ビットのフラグ + 5 ビット長と 1 オクテット未満の幅を含むため、opt_len で大きさが決まる不透明な options 領域です。
  • L2TPv2 / v3 のヘッダは種別 (制御 / データ) とフラグで存在するフィールドが大きく変わるため、本体は不透明なバイト列です。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ethernet2 · ipv4 · ipv6 · vxlan · gre · nvgre · mpls · gtpu · geneve · l2tpv2 · l2tpv3 · raw

ルーティングプロトコル

Status: draft

OSPFv2 / OSPFv3 / BGP-4 / RIPv1・v2 / RIPng / EIGRP の補足です。定義は crates/wpg-protocols/src/routing.rs、サンプルは templates/protocols/routing/ にあります。OSPFv2 の Opaque LSA / Segment Routing と BGP マルチプロトコル NLRI (IPv6、VPN、EVPN) は OSPF Opaque / SR、BGP MP / VPN / EVPN のページで説明します。

到達経路とサンプル

idプロトコル下位レイヤサンプル
ospfv2 + 本体OSPFv2 (RFC 2328)IPv4 protocol 89ospfv2-hello / -dbd / -lsr / -lsu-* / -lsack (Opaque LSA: ospfv2-lsu-te-lsa、-ri-sr、-ext-prefix-sr、-ext-link-sr)
ospfv3 + 本体OSPFv3 (RFC 5340)IPv6 next header 89ospfv3-hello / -dbd / -lsr / -lsu-* / -lsack
bgp + 本体BGP-4TCP 179 (宛先、なければ送信元)bgp-open / -update / -keepalive / -notification / -route-refresh、bgp-update-mp-ipv6 / -vpnv4 / -evpn
ripRIPv1 / v2UDP 520ripv1-request、ripv2-response
ripngRIPngUDP 521ripng-response
eigrpEIGRP (基本 TLV)IP protocol 88 (IPv4 / IPv6)eigrp-hello、eigrp-update

レイヤの積み方

OSPF と BGP は「共通ヘッダ + 本体」の 2 レイヤ (LSU はさらに LSA ヘッダ + LSA 本体) です。

ipv4 / ospfv2 / ospfv2_hello
ipv4 / ospfv2 / ospfv2_lsu / ospfv2_lsa / ospfv2_router_lsa
ipv4 / ospfv2 / ospfv2_lsu / ospfv2_opaque_lsa / ospfv2_ri_lsa   # LS タイプ 9 / 10 / 11
ipv6 / ospfv3 / ospfv3_lsu / ospfv3_lsa / ospfv3_intra_area_prefix_lsa
ipv4 / tcp / bgp / bgp_update
ipv4 / tcp / bgp                 # KEEPALIVE はヘッダのみ (type 4 が既定)

Auto になるフィールド

  • OSPF ヘッダの type、packet_length、checksum。OSPFv3 のチェックサムは IPv6 疑似ヘッダ込みで正確です。
  • LSA ヘッダの ls_type、length、ls_checksum (Fletcher、LS age を除外。どの age でも正確)。
  • Router-LSA の num_links。
  • BGP ヘッダの length、type。OPEN の opt_params_length。UPDATE の withdrawn_routes_length と total_path_attribute_length。255 オクテットを超えるパス属性の Extended Length フラグ。
  • EIGRP の checksum。

手動で合わせるフィールド

  • ospfv2_lsu.num_lsas / ospfv3_lsu の LSA 数 (1 LSU に型付き LSA は 1 つなので通常 1)。
  • DBD / LSAck の中に並ぶ LSA ヘッダの ls_checksum。

制約と近似

  • OSPFv2 の認証: チェックサムは 64 ビットの認証フィールドを除いて計算するため、認証なし・平文パスワードでは正確です。暗号認証 (AuType 2) ではチェックサムを 0 に手動設定してください (ビルダーでは「不正なパケットを許可」をオンにすると上書きできます)。パケット後ろの暗号認証トレーラは表現されません。
  • 1 LSU に型付き LSA は 1 つ: 繰り返しレイヤの仕組みがないため、型付きの LSA 本体の後ろに別の LSA は続けられません。
  • 本体を共有する LS タイプ: OSPFv2 の 3 / 4 と 5 / 7、OSPFv3 の 0x4005 / 0x2007 は本体の形が同じため、Auto では前者のタイプになります。後者にするには ls_type を手動で設定します (next-protocol 不一致の警告が出ますが送出は可能です)。
  • OSPFv2 の TOS エントリ (Router-LSA の num_tos > 0、Summary / External の TOS メトリック) と、OSPFv3 のプレフィックスリストは型付けされず、不透明な prefixes / address_prefix オクテットです。
  • BGP の経路 (NLRI / 取り下げ経路) は {length, prefix} のリストです (長さはビット単位、プレフィックスは ceil(長さ / 8) オクテット)。16 進文字列もそのままのオクテット列として受け付けます。
  • BGP の経路属性は 16 ビット type (flags << 8 | type code) の TLV です。長さは 8 ビット、Extended Length フラグ (0x10) 付きなら 16 ビットで、フラグは 255 オクテットを超えると自動で付き、type を明示した場合はその形式を保ちます。AS_PATH / AGGREGATOR は 4 オクテット AS 番号 (RFC 6793) です。拡張オプションパラメータ (RFC 9072) は未対応です。
  • BGP はセグメントごとに先頭の 1 メッセージだけをデコードします。
  • EIGRP の経路 TLV の宛先は ceil(prefix_length / 8) オクテットの可変長のため、TLV 値の末尾までを destination オクテットとして保持します。複数宛先の TLV はその 1 フィールドにまとまります。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ospfv2 · ospfv3 · ospfv3_lsu · bgp · rip · ripng · eigrp

冗長化プロトコル (FHRP)

Status: draft

VRRPv2・v3 / HSRPv1・v2 / GLBP の補足です。定義は crates/wpg-protocols/src/fhrp.rs、サンプルは templates/protocols/fhrp/ にあります。

到達経路とサンプル

idプロトコル下位レイヤサンプル
vrrpv3VRRPv3 (IPv4 アドレス)IPv4 protocol 112vrrpv3.wpg.yaml
vrrpv2VRRPv2IPv4 protocol 112 (version = 2 で読み直し)vrrpv2.wpg.yaml
vrrpv3_ipv6VRRPv3 (IPv6 アドレス)IPv6 next header 112vrrpv3-ipv6.wpg.yaml
hsrpHSRPv1UDP 1985hsrpv1.wpg.yaml
hsrpv2HSRPv2UDP 1985 (先頭オクテット 1 で読み直し)、UDP 2029 (IPv6)hsrpv2.wpg.yaml
glbpGLBP (基本)UDP 3222glbp.wpg.yaml

Auto になるフィールド

  • VRRP の checksum (v2 はインターネットチェックサム、v3 は IP 疑似ヘッダ込み) とアドレス数 (count_ip_addrs / count_ipvx_addrs)。

制約と近似

  • VRRPv2 と v3 は同じ IP protocol 112 で、版数ニブルでしか区別できません。デコードはまず vrrpv3 で行い、version が 2 なら vrrpv2 として読み直します。ビルド時は目的の定義を選んでください。
  • VRRPv3 のアドレス種別は外側の IP の版で決まりますが、下位レイヤからフィールドの大きさを決める仕組みがないため、vrrpv3 (IPv4) と vrrpv3_ipv6 (IPv6) の 2 定義に分かれています。
  • HSRPv1 と v2 は同じ UDP 1985 を使います。先頭オクテットが v1 では版数 (0)、v2 では最初の TLV の type (1 = Group State) なので、hsrp でデコードして 1 なら hsrpv2 として読み直します。HSRPv2 の 16 オクテットの仮想アドレスは ip_version によって IPv4 (ゼロ詰め) か IPv6 になるため、不透明な bytes(16) です。
  • GLBP は非公開仕様のため、型付けされているのは Hello TLV (IPv4 仮想アドレス) のみです。Request/Response と Authentication TLV は値のオクテットをそのまま保持します。
  • 認証は平文のみ型付けされています: VRRPv2 の auth_data (8 オクテット)、HSRPv1 の auth_data と HSRPv2 の Text Authentication TLV (どちらも既定 cisco)。HSRPv2 の MD5 認証 TLV は値のオクテットのままで、ダイジェストは自動計算されません。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

vrrpv2 · vrrpv3 · vrrpv3_ipv6 · hsrp · hsrpv2 · glbp

マルチキャスト制御プロトコル

Status: draft

IGMPv1・v2・v3 / MLDv1・v2 / PIM-SM v2 の補足です。定義は crates/wpg-protocols/src/mcast.rs、サンプルは templates/protocols/mcast/ にあります。

到達経路とサンプル

idプロトコル下位レイヤサンプル
igmp + igmpv2IGMPv1 / v2 (クエリ、レポート、Leave)IPv4 protocol 2igmpv2-query.wpg.yaml
igmp + igmpv3_queryIGMPv3 クエリIPv4 protocol 2、type 0x11 で残り 8 オクテット以上igmpv3-query.wpg.yaml
igmp + igmpv3_reportIGMPv3 レポートIPv4 protocol 2、type 0x22igmpv3-report.wpg.yaml
icmpv6 + mldMLDv1 (クエリ、レポート、Done)ICMPv6 type 130 / 131 / 132mldv1-query.wpg.yaml
icmpv6 + mldv2_queryMLDv2 クエリICMPv6 type 130 で残り 24 オクテット以上mldv2-query.wpg.yaml
icmpv6 + mldv2_reportMLDv2 レポートICMPv6 type 143mldv2-report.wpg.yaml
pim + pim_hello / pim_join_prunePIM-SM v2IPv4 protocol 103pim-hello.wpg.yaml、pim-join-prune.wpg.yaml
pim_registerPIM Register (単独定義)ビルド時に選択 (デコードは pim)pim-register.wpg.yaml

IGMP と PIM は ICMPv6 と同じく「共通ヘッダ (type、チェックサム) + 本体」の 2 レイヤで、ヘッダの type は本体から Auto で決まります。MLD の本体は icmpv6 の上に積みます。

ipv4 / igmp / igmpv3_report
ipv6 / ipv6_hopopts / icmpv6 / mldv2_report
ipv4 / pim / pim_join_prune
ipv4 / pim_register / ipv4 / udp / payload

Auto になるフィールド

  • IGMP / PIM ヘッダの type と checksum。MLD のチェックサムは icmpv6 が IPv6 疑似ヘッダ込みで計算します。
  • 件数: IGMPv3 / MLDv2 クエリの num_sources、レポートの num_group_records / num_records、グループレコード内の num_sources、PIM Join/Prune の num_groups / num_joined / num_pruned。リストの要素を増減するだけで合います。
  • pim_register.checksum: PIM ヘッダ + Register フラグの 8 オクテットだけを対象に計算します (RFC 7761)。

制約と近似

  • v2 と v3 のクエリは長さでしか区別できないため、残りの長さが IGMPv3 で 8 オクテット以上、MLDv2 で 24 オクテット以上なら v3 / v2 のクエリとしてデコードし、それより短ければ igmpv2 / mld としてデコードします。
  • PIM Register のチェックサムは内側のパケットを含まないため、PIM ヘッダを繰り返した単独定義 pim_register になっています。IP protocol 103 は pim としてデコードされるので、受信した Register の本体は raw になります。内側のパケットは先頭ニブルで IPv4 / IPv6 を判別します。
  • PIM over IPv6 はチェックサムに IPv6 疑似ヘッダが必要ですが、チェックサムの種類を下位レイヤで切り替えられないため、pim は IPv4 からのみ到達し、通常のインターネットチェックサムを使います。
  • PIM のエンコード済みアドレスは IPv4 (アドレスファミリ 1) のみ型付けされています。
  • IGMP / MLD はルータアラートオプションを必要とします。サンプルは ipv4 の options / ipv6_hopopts に Router Alert を入れてあります。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ipv4 · ipv6_hopopts · icmpv6 · igmp · igmpv2 · igmpv3_query · igmpv3_report · mld · mldv2_query · mldv2_report · pim · pim_hello · pim_join_prune · pim_register · raw

アプリケーションプロトコル

Status: draft

DHCPv4 / DHCPv6 / DNS / NTP / SNMP / Syslog / RADIUS / TFTP の補足です。定義は crates/wpg-protocols/src/app.rs、サンプルは templates/protocols/app/ にあります。

到達経路とサンプル

すべて UDP のポートで判別します。宛先ポートが未知なら送信元ポートで判別するので、既知ポートから一時ポートへの応答 (DNS / SNMP / RADIUS の応答など) もデコードできます。

idプロトコルUDP ポートサンプル
dhcpv4DHCPv4 (リレーエージェント情報を含む)67 / 68dhcpv4-discover、dhcpv4-relay
dhcpv6 / dhcpv6_relayDHCPv6 / Relay-Forward・Relay-Reply546 / 547dhcpv6-solicit、dhcpv6-relay-forward
dnsDNS53dns-query、dns-response
ntpNTP (RFC 5905 の時刻パケット)123ntp-client
snmp + snmp_pdu / snmp_trapSNMP v1 / v2c161 / 162snmp-get-request、snmp-trap-v1
syslogSyslog514syslog
radiusRADIUS1812 / 1813radius-access-request
tftp + tftp_data / tftp_ack / tftp_error / tftp_oackTFTP69tftp-rrq / -data / -ack / -error / -oack

Auto になるフィールド

  • radius.length。
  • SNMP の msg_length / pdu_length (BER 短形式)。
  • DHCPv4 / DHCPv6 / RADIUS のオプション・属性の長さ欄。

手動で合わせるフィールド

  • DNS の qdcount / ancount / nscount / arcount。セクション部分は不透明なので、件数はセクションの内容に合わせて設定します。
  • SNMP の community_length (コミュニティ文字列を変えたら合わせます)。
  • RADIUS の authenticator (Response Authenticator) と Message-Authenticator 属性。どちらも共有シークレットを使う MD5 / HMAC-MD5 で、鍵付きダイジェストの自動計算はありません。Access-Request の Request Authenticator は乱数なので任意の 16 オクテットで構いません。

制約と近似

  • DNS: 名前は長さ付きラベルの列 + 終端の 0 オクテットで、各セクションはヘッダの件数で大きさが決まります。エンジンのリスト型には終端停止も件数駆動の長さもないため、12 オクテットのヘッダだけを型付けし、セクション (質問・回答・権威・追加) は 1 つの不透明な sections 領域です。既定値は example.com A/IN の質問です。名前圧縮ポインタもそのままバイト列として書きます。
  • SNMP は BER エンコードの ASN.1 で、事前にエンコードされた tag / length / value の固定レイアウトとして表現しています。BER の 短形式長 (内容が 128 オクテット未満) のみ対応し、長形式 (0x81 nn、0x82 nn nn) は扱えません。構造化タグの入れ子は固定の深さ (varbind リスト → varbind → 値) です。PDU 種別は PDU の中でしか分からないため、snmp は既定で snmp_pdu に続き、v1 Trap タグ (0xa4) なら snmp_trap として読み直します。
  • DHCPv6 の Relay-Forward / Relay-Reply (msg-type 12 / 13) はクライアント・サーバのメッセージと固定部の形が違うため、dhcpv6 でデコードしてから dhcpv6_relay に読み直します。Relay Message オプション内のメッセージは 1 段だけ型付けされます。
  • TFTP: RRQ / WRQ のファイル名・モード・オプションと、エラーメッセージは NUL 終端文字列として型付けされています。DATA / ACK / ERROR / OACK は opcode による読み直しで tftp_data などに分かれます。転送本体は両端とも一時ポート (TID) 同士で行われるため、ポート 69 以外のパケットは UDP の後ろが raw としてデコードされます。
  • NTP の制御メッセージ (mode 6) とプライベートメッセージ (mode 7) は別レイアウトのため対象外です。拡張フィールドと MAC は不透明な extensions です。
  • Syslog は自由テキストで、1 つの不透明な message です。RFC 5424 / RFC 3164 いずれの形式でも、文字列をそのまま与えてください。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

dhcpv4 · dhcpv6 · dhcpv6_relay · dns · ntp · snmp · snmp_pdu · snmp_trap · syslog · radius · tftp · tftp_data · tftp_ack · tftp_error · tftp_oack · raw

OSI カプセル化 (P2)

Status: draft

CLNP / ES-IS / IS-IS に共通する OSI ネットワーク層のカプセル化と、NSAP アドレス型の補足です (M7)。定義は crates/wpg-protocols/src/osi.rs、サンプルは templates/protocols/l2/dot3-llc-osi.wpg.yaml にあります。

到達経路

下位レイヤ選択子上位レイヤ
llcDSAP / SSAP 0xfePDU 先頭の NLPID オクテットで判別
pppprotocol 0x0023 (RFC 1377)同上

OSI の PDU の前には「次は何か」を示す番号がなく、PDU 自身の先頭オクテット NLPID (ISO/IEC TR 9577) が種類を表します (0x81 CLNP、0x82 ES-IS、0x83 IS-IS)。そのため llc と ppp はペイロードの先頭 8 ビットを覗いて (Binding::peek) 次のレイヤを決めます。専用の定義はこの peek の表に登録されています: CLNP (0x81) と ES-IS (0x82) は CLNP / ES-IS、IS-IS (0x83) は IS-IS を参照。それ以外の NLPID (ISO 8473 の非活性サブセット 0x00 など) と、定義に対して短すぎる PDU は汎用 PDU osi (NLPID + 残りの不透明なバイト列) としてデコードされます。

ビルド時は llc の上に osi または専用 PDU (clnp、esis_ish、isis_l1_lan_hello など) を積むだけで、DSAP / SSAP は Auto で 0xfe になります。PPP の protocol も同様に Auto で 0x0023 になります。

NSAP 型

  • nsap 型の値はアドレス本体 (1..=20 オクテット) で、ワイヤ上では OSI の慣例どおり 1 オクテットの長さ指示子が前に付きます。長さ指示子は合成時に自動で書かれ、解析時に読まれます。
  • 表記は 49.0001.1921.6800.1001.00 のような 16 進 (. と空白は無視、0x 接頭辞可)。
  • GUI のフィールドエディタは入力中の NSAP を AFI / エリア / System ID (6 オクテット) / NSEL に分解して表示します (8 オクテット未満のアドレスは分解しません)。
  • ジェネレータ range は System ID 部分を増分します (例 49.0001.1921.6800.1001.00-49.0001.1921.6800.1004.00)。

制約

  • osi の NLPID は Auto ではありません。
  • NLPID 0x81 / 0x82 / 0x83 の PDU は (十分な長さがあれば) 常に CLNP / ES-IS / IS-IS としてデコードされるため、これらを載せた汎用 osi レイヤは専用のプロトコルとして読み戻されます。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

llc · ppp · osi · clnp · esis_ish · isis_l1_lan_hello

CLNP / ES-IS (P2)

Status: draft

CLNP (ISO 8473-1) と ES-IS (ISO 9542) の補足です (M7)。定義は crates/wpg-protocols/src/clnp.rs、サンプルは templates/protocols/l3/clnp-*.wpg.yaml と templates/protocols/routing/esis-*.wpg.yaml にあります。どちらも OSI カプセル化 の上に直接載ります。

PDU と到達経路、サンプル

idPDUサンプル
clnpCLNP の全 PDU 種別: DT (0x1c)、MD (0x1d)、ER (0x01)、ERQ / ERP (0x1e / 0x1f)clnp-dt (セグメンテーション部)、clnp-er (破棄理由)、clnp-erq (優先度、ソースルーティング)
esis_eshES-IS エンドシステム Hello (2)esis-esh
esis_ishES-IS 中間システム Hello (4)esis-ish (ES 設定タイマ)
esis_rdES-IS リダイレクト (6)esis-rd
esis任意の ES-IS PDU: 固定部 + 不透明なオクテット列esis-generic
dot3 / llc / clnp / payload        # トランスポート PDU を運ぶ DT
dot3 / llc / clnp / raw            # 破棄した PDU のヘッダを運ぶ ER
dot3 / llc / esis_esh              # 宛先 09:00:2b:00:00:05 (AllIntermediateSystems)
dot3 / llc / esis_ish              # 宛先 09:00:2b:00:00:04 (AllEndSystems)
ppp / clnp / payload               # PPP protocol 0x0023

LLC の DSAP / SSAP (0xfe) と PPP の protocol (0x0023) は Auto です。解析時は NLPID 0x81 で clnp、0x82 で汎用 esis が選ばれ、esis は pdu_type に応じて専用 PDU として読み直されます (未知の種別は esis のまま)。固定部より短い PDU (CLNP 11 オクテット、ES-IS 9 オクテット未満) は汎用 osi としてデコードされます。

clnp レイヤはヘッダだけです。データ (DT: トランスポート PDU、ER: 破棄した PDU のヘッダ、ERQ / ERP: エコーする PDU) は次のレイヤ (通常 payload か raw) に置きます。

Auto フィールド

フィールド規則
length_indicatorヘッダ長 (オクテット)。CLNP はオプションの終わりまで、ES-IS は PDU 全体
segment_length (CLNP)PDU 全体 (ヘッダ + データ) の長さ
checksumヘッダ (CLNP) / PDU (ES-IS) の ISO 8473 Fletcher チェックサム。Manual の 0 は「チェックサム不使用」で、そのまま送出され Auto との不一致として報告されます (計算値が 0 になることはありません)
sp (CLNP)segmentation に要素があれば 1、なければ 0
number_of_source_addresses (ESH)source_addresses の数
bsnpa_length (RD)bsnpa のサイズ

CLNP のセグメンテーション部は {data_unit_identifier, segment_offset, total_length} を最大 1 個持つリストです。total_length (セグメント化前の PDU 長) は計算しません。

- protocol: clnp
  fields:
    segmentation:
      - { data_unit_identifier: 1, segment_offset: 0, total_length: 69 }

オプション

オプションはアドレス (とセグメンテーション部) の後ろに並ぶ {コード, 長さ, 値} で、length_indicator の位置で終わります (Length::UntilOffset)。アドレスが可変長でも、ヘッダより後ろは次のレイヤになります。

コード名前 (name)値のフィールド対象
0xc5securityvalue (オクテット列)CLNP、ES-IS
0xc3qos_maintenancevalue (オクテット列)CLNP、ES-IS
0xcdpriorityvalueCLNP、ES-IS
0xc8 / 0xcbsource_routing / recording_of_routeroute_type (partial / complete)、next_address、addresses: {address} のリストCLNP
0xccpaddingdataCLNP
0xc1reason_for_discardreason (destination_unknown、lifetime_expired_in_transit など)、pointerCLNP (ER)
0xe1 / 0xe2address_mask / snpa_maskmaskES-IS
0xc6es_configuration_timersecondsES-IS (ISH)

その他のオプションは { type: N, data: "..." } として保持されます。

制約

  • セグメンテーション部の total_length は計算せず、大きな PDU を複数フレームに分割 / 再構成する機能もありません。
  • セキュリティ / QoS 維持の値はオクテット列で、グローバル一意 / 送信元アドレス固有などの形式は分解しません。
  • リダイレクトのサブネットワークアドレス (bsnpa) はオクテット列です (MAC アドレスは 6 オクテット: "02 00 00 00 00 02")。net を空 ("") にするとエンドシステムへのリダイレクトになります。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

osi · clnp · esis · esis_esh · esis_ish · esis_rd · payload · raw

IS-IS (P2)

Status: draft

IS-IS (ISO/IEC 10589、RFC 1195 と下記の TLV 関連 RFC) の補足です (M7)。定義は crates/wpg-protocols/src/isis.rs、サンプルは templates/protocols/routing/isis-*.wpg.yaml にあります。IS-IS は OSI カプセル化 の上で直接動作します。

PDU・到達経路・サンプル

idPDU (種別)サンプル
isis_l1_lan_hello / isis_l2_lan_helloLAN Hello L1 (15) / L2 (16)isis-l1-lan-hello (パディングあり)、isis-l2-lan-hello
isis_p2p_helloポイントツーポイント Hello (17)isis-p2p-hello (3-way 隣接、パディングあり)
isis_l1_lsp / isis_l2_lspLSP L1 (18) / L2 (20)isis-l1-lsp (ナローメトリック)、isis-l2-lsp (ワイドメトリック・TE・SR)
isis_l1_csnp / isis_l2_csnpCSNP L1 (24) / L2 (25)isis-l1-csnp、isis-l2-csnp
isis_l1_psnp / isis_l2_psnpPSNP L1 (26) / L2 (27)isis-l1-psnp、isis-l2-psnp
isis任意の PDU: 共通ヘッダ + 不透明なバイト列isis-generic

各 PDU は 1 レイヤで、8 オクテットの共通ヘッダ、PDU 固有の固定フィールド、TLV から成ります。

dot3 / llc / isis_l1_lan_hello      # 宛先 01:80:c2:00:00:14 (AllL1ISs)、L2 は ...:15
dot3 / llc / isis_p2p_hello         # Ethernet では 09:00:2b:00:00:05 (AllISs)
ppp / isis_l2_lsp                   # PPP protocol 0x0023

LLC の DSAP / SSAP (0xfe) と PPP の protocol (0x0023) は Auto です。解析時は NLPID 0x83 で汎用の isis が選ばれ、その pdu_type でレイヤが専用 PDU として読み直されます。未知の PDU 種別は isis のままです。

Auto フィールド

フィールド規則
pdu_lengthPDU 全体の長さ
LSP の checksumLSP ID から PDU 末尾までの ISO 8473 Fletcher チェックサム。LSP ID より前のフィールド (共通ヘッダ・PDU 長・残り寿命) は除外されるので、寿命の値によらず正しい
Hello のパディングHello の pdu_length を Manual にすると、PDU がちょうどその長さになるまで Padding TLV (種別 8、1 つ最大 255 オクテット) を追加します。例: Ethernet MTU 1500 なら LLC ヘッダ 3 オクテットを引いて pdu_length: 1497。Auto ならパディングしません。不足分が TLV で作れない (1 オクテット) 場合は警告が出ます
sub_tlvs_length (拡張 IS / IP / IPv6 到達性)続く sub_tlvs のサイズ
sub_tlvs_present (TLV 135 / 236 の S ビット)エントリに sub_tlv_block があれば 1、なければ 0

header_length は PDU 種別ごとの定数 (27 / 20 / 33 / 17) で、Auto ではなく既定値を持ちます。変更すると警告が出ます。

TLV

コード名前 (name)値のフィールド
1area_addressesaddresses: {address} のリスト (NSAP、例 49.0001)
2is_reachabilityvirtual_flag、neighbors: {default_metric, delay_metric, expense_metric, error_metric, neighbor_id}
6is_neighborsneighbors: MAC のリスト
8paddingdata
9lsp_entriesentries: {remaining_lifetime, lsp_id, sequence_number, checksum}
10authenticationauth_type (cleartext / hmac_md5)、value
22extended_is_reachabilityneighbors: {neighbor_id, metric, sub_tlvs_length, sub_tlvs}
128 / 130ip_internal_reachability / ip_external_reachabilityprefixes: {4 種のメトリック, ip_address, subnet_mask}
129protocols_supportednlpids (ipv4、ipv6、clnp)
132ip_interface_addressesaddresses
134te_router_idrouter_id
135extended_ip_reachabilityprefixes: {metric, up_down, sub_tlvs_present, prefix_length, prefix, sub_tlv_block}
137dynamic_hostnamehostname
232ipv6_interface_addressesaddresses
236ipv6_reachabilityprefixes: {metric, up_down, external, sub_tlvs_present, prefix_length, prefix, sub_tlv_block}
240p2p_adjacency_stateadjacency_state、extended_local_circuit_id、neighbor_system_id、neighbor_extended_local_circuit_id
242router_capabilityrouter_id、flags (S / D)、sub_tlvs

サブ TLV:

  • 拡張 IS 到達性 (22): 管理グループ (3)、リンクローカル / リモート ID (4)、IPv4 インタフェース / 隣接アドレス (6 / 8)、最大 / 予約可能 / 未予約帯域 (9 / 10 / 11)、TE デフォルトメトリック (18)、Adj-SID / LAN-Adj-SID (31 / 32)。
  • 拡張 IP / IPv6 到達性 (135 / 236): 32 / 64 ビット管理タグ (1 / 2)、Prefix-SID (3)、プレフィックス属性フラグ (4)。
  • ルータ能力 (242): SR 能力 (2)、SR アルゴリズム (19)。

prefix は ceil(prefix_length / 8) オクテットで、有効なオクテットだけを書きます (192.0.2.0/24 は prefix_length: 24, prefix: "c00002")。プレフィックスの省略可能なサブ TLV は要素 1 個の sub_tlv_block リストとして書きます。

- extended_ip_reachability:
    prefixes:
      - metric: 0
        prefix_length: 32
        prefix: "c0000201"
        sub_tlv_block:
          - sub_tlvs:
              - { prefix_sid: { flags: 0x40, algorithm: 0, sid: "00000001" } }

その他の TLV は { type: N, data: "..." } として保持されます。

制約

  • System ID は 6 オクテット (id_length 0) 固定で、それ以外の ID 長はモデル化していません。
  • TE の帯域は 32 ビット IEEE 浮動小数点の生値です。SID / ラベルと SR 能力の範囲はオクテット列 (3 オクテットのラベルまたは 4 オクテットのインデックス) です。
  • HMAC-MD5 認証値 (および RFC 5310 の暗号認証) は計算しません。
  • TLV 240 は 15 オクテット形式でモデル化しています。短い形式 (1 / 5 オクテット) は data として読み戻されます。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ipv4 · ipv6 · clnp · isis · isis_l1_lan_hello · isis_l2_lan_hello · isis_p2p_hello · isis_l1_lsp · isis_l2_lsp · isis_l1_csnp · isis_l2_csnp · isis_l1_psnp · isis_l2_psnp

SCTP (P2)

Status: draft

SCTP (RFC 9260) の補足 (M7)。定義は crates/wpg-protocols/src/sctp.rs、サンプルは templates/protocols/l4/sctp-*.wpg.yaml にあります。

到達経路とサンプル

ethernet2 / ipv4 / sctp            # IPv4 protocol 132 (Auto)
ethernet2 / ipv6 / sctp            # IPv6 next header 132 (Auto)
ethernet2 / ipv4 / udp / sctp      # SCTP over UDP、ポート 9899 (RFC 6951)
サンプル内容
sctp-initIPv4 アドレス・対応アドレス種別・ECN・FORWARD TSN 対応・対応拡張のパラメータ付き INIT
sctp-init-ackState Cookie 付き INIT ACK
sctp-data16 オクテットのユーザデータを持つ DATA
sctp-sackGap Ack ブロック 2 つと重複 TSN 付き SACK
sctp-heartbeatHeartbeat Info 付き HEARTBEAT
sctp-abortユーザ起因 ABORT 原因付き ABORT (T ビット)
sctp-shutdownIPv6 上の SHUTDOWN
sctp-over-udpUDP 9899 上で COOKIE ECHO と DATA をバンドル

UDP の宛先ポートは Auto ではありません。SCTP over UDP では 9899 を指定してください (解析時は送信元ポート 9899 でも判別します)。

1 レイヤ、チャンクは項目

sctp レイヤは共通ヘッダ (src_port、dst_port、verification_tag、checksum) とパケット内の全チャンク (chunks) です。複数チャンクをバンドルでき、sctp の後ろにレイヤは続きません。DATA / I-DATA のユーザデータはチャンクの user_data (オクテット列) で、ペイロードプロトコル識別子による demux はしません。

チャンクは 8 ビット型・8 ビットフラグ・16 ビット長の項目です。長さは 4 オクテットのチャンクヘッダを含み、4 オクテット境界までのゼロ詰め (常に付加) は含みません。どのチャンクにも flags フィールドがあります (型と長さの間に書かれます)。

- protocol: sctp
  fields:
    verification_tag: 0x3a5c7e91
    chunks:
      - sack:
          cumulative_tsn_ack: 100
          gap_ack_blocks: [{ start: 2, end: 3 }]
      - name: data # `data` は項目の予約キーなので {name, fields} で書く
        fields:
          flags: b|e
          tsn: 101
          user_data: "68 65 6c 6c 6f"
      - abort: { flags: t }
型名前 (name)値フィールド (flags の後)
0dataフラグ i/u/b/e、tsn、stream_identifier、stream_sequence_number、payload_protocol_identifier、user_data
1 / 2init / init_ackinitiate_tag、a_rwnd、outbound_streams、inbound_streams、initial_tsn、parameters
3sackcumulative_tsn_ack、a_rwnd、number_of_gap_ack_blocks / number_of_duplicate_tsns (Auto)、gap_ack_blocks ({start, end})、duplicate_tsns
4 / 5heartbeat / heartbeat_ackparameters (heartbeat_info)
6abortフラグ t、causes
7shutdowncumulative_tsn_ack
8 / 11shutdown_ack / cookie_ack(フラグのみ)
9errorcauses
10cookie_echocookie
14shutdown_completeフラグ t
15auth (RFC 4895)shared_key_identifier、hmac_identifier、hmac
0x40i_data (RFC 8260)フラグ i/u/b/e、tsn、stream_identifier、message_identifier、ppid_or_fsn、user_data
0x80 / 0xc1asconf_ack / asconf (RFC 5061)serial_number、parameters
0x82re_config (RFC 6525)parameters
0x84pad (RFC 4820)padding
0xc0forward_tsn (RFC 3758)new_cumulative_tsn、streams ({stream, stream_sequence})

その他のチャンク型は { type: N, data: "..." } として保持します (data の先頭オクテットがフラグ)。

パラメータとエラー原因

パラメータ (INIT、INIT ACK、HEARTBEAT、ASCONF、RE-CONFIG) とエラー原因 (ABORT、ERROR) は 16 ビット型・16 ビット長の項目で、4 オクテット境界まで詰めます。RFC 9260 §3.2 のとおり、最後のパラメータ / 原因の詰め物はチャンク長に含めず、チャンクの詰め物で兼ねます。

パラメータエラー原因
ipv4_address、ipv6_address、heartbeat_info、state_cookie、unrecognized_parameter、cookie_preservative、host_name_address、supported_address_types ([ipv4, ipv6])、ecn_capable、random、chunk_list、requested_hmac_algorithm、padding、supported_extensions (チャンク型)、forward_tsn_supported、add_ip_address / delete_ip_address / set_primary_address (correlation_id、address: アドレスパラメータ)、error_cause_indication、success_indication、adaptation_layer_indication、RE-CONFIG の要求 / 応答invalid_stream_identifier、missing_mandatory_parameter (件数は Auto)、stale_cookie、out_of_resource、unresolvable_address、unrecognized_chunk_type、invalid_mandatory_parameter、unrecognized_parameters、no_user_data、cookie_received_while_shutting_down、restart_with_new_addresses、user_initiated_abort、protocol_violation、ASCONF の原因 (0x00a0〜0x00a4)、unsupported_hmac_identifier

Auto フィールド

フィールド規則
checksumフィールドを 0 とした SCTP パケット全体の CRC32c (RFC 9260 付録 A)。下位オクテットから送出
チャンク / パラメータ / 原因の length詰め物を除いた大きさ。ゼロ詰めそのものも自動
number_of_gap_ack_blocks、number_of_duplicate_tsns (SACK)リストの要素数
number_of_missing_parametersmissing_parameters の要素数

制約

  • 最後のパラメータの詰め物までチャンク長に数える実装のチャンクも同じようにデコードされ、そのパラメータの後に詰め物の位置を保つ空の項目が入ります。
  • アソシエーションの状態は持ちません。TSN・ストリームシーケンス番号・タグは値です (変化させるにはジェネレータを使います)。
  • 未知のチャンク型はフラグを data の先頭オクテットとしてデコードし、型の「動作」ビットは解釈しません。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

sctp

OSPF Opaque / SR、BGP MP / VPN / EVPN (P2)

Status: draft

M7 のルーティング拡張の補足です。OSPFv2 の Opaque LSA (RFC 5250) と、その中身の Traffic Engineering (RFC 3630)、Router Information (RFC 7770)、Extended Prefix / Extended Link (RFC 7684)、Segment Routing (RFC 8665)、および BGP マルチプロトコル (RFC 4760) の IPv4 / IPv6 ユニキャスト、VPN-IPv4 / VPN-IPv6 (RFC 4364 / RFC 4659)、EVPN (RFC 7432 / RFC 9136) の NLRI を扱います。定義は crates/wpg-protocols/src/ospf_opaque.rs と crates/wpg-protocols/src/bgp_mp.rs にあります。OSPF / BGP の基本は ルーティングプロトコル のページを参照してください。

OSPFv2 Opaque LSA

ipv4 / ospfv2 / ospfv2_lsu / ospfv2_opaque_lsa / ospfv2_te_lsa
ipv4 / ospfv2 / ospfv2_lsu / ospfv2_opaque_lsa / ospfv2_ri_lsa
ipv4 / ospfv2 / ospfv2_lsu / ospfv2_opaque_lsa / ospfv2_ext_prefix_lsa
ipv4 / ospfv2 / ospfv2_lsu / ospfv2_opaque_lsa / ospfv2_ext_link_lsa

ospfv2_opaque_lsa は Link State ID を opaque_type (8 ビット、本体レイヤから自動) と opaque_id (24 ビット) に分けた LSA ヘッダです。ls_type がフラッディング範囲を表します: 9 リンクローカル、10 エリア (既定)、11 AS。LSA の length と Fletcher の ls_checksum は他の LSA と同じく自動です。解析では、タイプ 9 / 10 / 11 の LSA をまず ospfv2_lsa として読み、ospfv2_opaque_lsa として読み直します。未知の Opaque タイプの後ろは raw レイヤになります。

サンプル内容
ospfv2-lsu-te-lsaTE LSA: リンクタイプ / ID、インタフェースアドレス、TE メトリック、帯域、管理グループを持つ Link TLV
ospfv2-lsu-ri-srRouter Information LSA: 機能フラグ、ホスト名、SR-Algorithm、SRGB (SID/Label Range)、SRLB
ospfv2-lsu-ext-prefix-srExtended Prefix LSA: 192.0.2.1/32 にノード Prefix SID (インデックス 1)
ospfv2-lsu-ext-link-srExtended Link LSA: ポイントツーポイントリンクに Adj-SID (ラベル 24000)

TLV

本体はどれも tlvs フィールド 1 つです。TLV / sub-TLV は 16 ビットのタイプと、値だけを数える 16 ビットの長さを持ち、値は 4 オクテット境界までゼロで詰められます (詰め物は長さに含めません)。長さと詰め物は自動です。

本体TLVsub-TLV
ospfv2_te_lsa (Opaque タイプ 1)router_address (1)、link (2)link_type、link_id、local_address、remote_address、te_metric、max_bandwidth、max_reservable_bandwidth、unreserved_bandwidth、admin_group
ospfv2_ri_lsa (4)informational_capabilities (1)、functional_capabilities (2)、hostname (7)、sr_algorithm (8)、sid_label_range (9)、sr_local_block (14)、srms_preference (15)sid_label / sid_label_index
ospfv2_ext_prefix_lsa (7)extended_prefix (1)、extended_prefix_range (2)prefix_sid / prefix_sid_label
ospfv2_ext_link_lsa (8)extended_link (1)adj_sid / adj_sid_index、lan_adj_sid / lan_adj_sid_index

SID は 3 オクテット (下位 20 ビットがラベル。V / L フラグを立てる) か 4 オクテット (インデックス。V / L は立てない) です。SID を運ぶ sub-TLV はどれも両方の形を持つので、名前で項目を選び (label か index フィールド)、解析では値の長さで区別されます:

- protocol: ospfv2_ext_prefix_lsa
  fields:
    tlvs:
      - extended_prefix:
          route_type: intra_area
          prefix_length: 32
          flags: n
          prefix: 192.0.2.1
          sub_tlvs:
            - prefix_sid: { algorithm: 0, index: 1 }          # 4 オクテット
            # - prefix_sid_label: { flags: v|l, label: 16001 } # 3 オクテット

TE の帯域は、オクテット / 秒を表す 32 ビット IEEE 浮動小数点数の生の値です (0x4b3ebc20 = 12.5e6 = 100 Mbit/s)。

BGP マルチプロトコル NLRI

MP_REACH_NLRI (コード 14) と MP_UNREACH_NLRI (コード 15) は、続く AFI / SAFI によって形が変わります。対応するファミリはそれぞれ別のパス属性項目で、解析では値の先頭 3 オクテット (AFI、SAFI) で選ばれます:

ファミリAFI / SAFI項目ネクストホップNLRI の要素
IPv4 ユニキャスト1 / 1mp_reach_ipv4_unicast、mp_unreach_ipv4_unicastIPv4 アドレスのリスト{length, prefix}
IPv6 ユニキャスト2 / 1mp_reach_ipv6_unicast、mp_unreach_ipv6_unicastIPv6 アドレスのリスト (グローバル、リンクローカル){length, prefix}
VPN-IPv41 / 128mp_reach_vpnv4、mp_unreach_vpnv4{rd, address} のリスト{length, label, exp, bos, rd, prefix}
VPN-IPv62 / 128mp_reach_vpnv6、mp_unreach_vpnv6{rd, address} のリスト同上
EVPN25 / 70mp_reach_evpn、mp_unreach_evpnオクテット列 (IPv4 か IPv6 アドレス)EVPN ルート項目

それ以外のファミリは汎用の mp_reach_nlri / mp_unreach_nlri を使い、ネクストホップと NLRI はオクテット列です。afi / safi の既定値はそのファミリの値、next_hop_length は自動です。

  • プレフィックス: length はビット単位で、prefix は ceil(length / 8) オクテットです。UPDATE 自体の withdrawn_routes と nlri もプレフィックスのリストで、UPDATE の 2 つの長さフィールドは自動です。
  • VPN プレフィックス: length はラベル (24 ビット)、ルート識別子 (64 ビット)、プレフィックスのビット数の合計で、/24 なら 112 です。ラベルは 1 つ (bos: 1) を扱います。撤回では通常 label: 0x80000, bos: 0 (互換値 0x800000) を使います。
  • ルート識別子 (RD) は 8 オクテットです: 0000 fde9 00000064 が 65001:100 (タイプ 0)、0001 c0000201 0001 が 192.0.2.1:1 (タイプ 1)。
  • EVPN ルート (8 ビットのタイプ、8 ビットの長さ): ethernet_ad (1)、mac_ip (2)、inclusive_multicast (3)、ethernet_segment (4)、ip_prefix (5、IPv4、34 オクテット)、ipv6_prefix (5、IPv6、58 オクテット)。ESI は 10 オクテットです。ラベルのフィールドは 3 オクテットのワイヤ上の値で、MPLS なら label << 4 | bos、VXLAN なら VNI です (RFC 8365)。長さフィールド (ip_length、ビット単位) を持つ IP アドレスはオクテット列です。
  • PMSI Tunnel 属性 (pmsi_tunnel、コード 22) は型付きです。ルートターゲットは extended_communities の値です (0x0002fde900000064 = RT 65001:100)。
- protocol: bgp_update
  fields:
    path_attributes:
      - { origin: 0 }
      - { as_path: { segments: [] } }
      - mp_reach_vpnv4:
          next_hop: [{ rd: "0000000000000000", address: 192.0.2.1 }]
          nlri:
            - { length: 112, label: 16, bos: 1, rd: "0000 fde9 00000064", prefix: "c6 33 64" }
    nlri: []
サンプル内容
bgp-update-mp-ipv6IPv6 ユニキャストの広告 (グローバル + リンクローカルのネクストホップ) と撤回
bgp-update-vpnv4ラベル 16、RD とルートターゲット 65001:100 の VPN-IPv4 ルート
bgp-update-evpnVNI 10010 の EVPN MAC/IP と Inclusive Multicast ルート、ルートターゲット、VXLAN カプセル化、PMSI Tunnel

Extended Length

値が 255 オクテットを超えるパス属性には、Extended Length フラグ (0x10) と 16 ビットの長さが自動で付きます。短い属性を長い形式で送る (FRR や GoBGP が MP_REACH_NLRI でそうするように) には、項目にタイプを明示します:

- { name: mp_reach_ipv4_unicast, type: 0x900e, fields: { next_hop: [192.0.2.1], nlri: [{ length: 24, prefix: "c63364" }] } }

受信した属性は形式を保ちます: 解析した Extended Length の属性は type 付きでエクスポートされます。

制約

  • OSPFv3 の Extended LSA (RFC 8362) と OSPFv3 の Segment Routing (RFC 8666) は扱いません。
  • OSPF TE の GMPLS sub-TLV (RFC 4203) と、上に挙げた以外の RI TLV は raw 項目のままです。
  • BGP の ADD-PATH のパス識別子 (RFC 7911)、2 つ以上のラベルのスタック (RFC 8277)、BGP Prefix-SID 属性 (RFC 8669) は扱いません。そうした NLRI は汎用の mp_reach_nlri / mp_unreach_nlri 項目にオクテット列で書いてください。こうした NLRI を解析するとオクテットは同一に再構成されますが、デコードされたフィールドは実際の区切りとずれます。
  • 1 セグメント内の複数の BGP メッセージ、1 LSU 内の複数の型付き LSA は扱いません (ルーティングプロトコル を参照)。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ospfv2_lsa · ospfv2_opaque_lsa · ospfv2_te_lsa · ospfv2_ri_lsa · ospfv2_ext_prefix_lsa · ospfv2_ext_link_lsa · raw

LDP / RSVP-TE / BFD (P2)

Status: draft

LDP (RFC 5036)、RSVP-TE (RFC 2205 / RFC 3209)、BFD (RFC 5880 / 5881 / 5883、Micro-BFD RFC 7130) の補足 (M7)。定義は crates/wpg-protocols/src/{ldp,rsvp,bfd}.rs、サンプルは templates/protocols/mpls/ と templates/protocols/oam/ にあります。

到達経路とサンプル

ethernet2 / ipv4 / udp / ldp       # UDP 646: Hello (基本ディスカバリは 224.0.0.2、拡張はユニキャスト)
ethernet2 / ipv4 / tcp / ldp       # TCP 646: セッション (Initialization 以降)
ethernet2 / ipv4 / rsvp            # IPv4 protocol 46 (Auto)
ethernet2 / ipv6 / rsvp            # IPv6 next header 46 (Auto)
ethernet2 / ipv4 / udp / bfd       # UDP 3784 (シングルホップ)、4784 (マルチホップ)、6784 (Micro-BFD)

IPv6 の LDP (RFC 7552) も ipv6 / udp|tcp / ldp で組めます。UDP / TCP の宛先ポートは Auto ではありません。646 / 3784 などを指定してください (解析時は送信元ポートでも判別します)。BFD のエコーポート 3785 の中身は送信側にしか意味がないためデコードしません。

サンプル内容
ldp-hello224.0.0.2 へのリンク Hello (GTSM ビット、IPv4 トランスポートアドレス)
ldp-targeted-hello拡張ディスカバリの Targeted Hello (T / R ビット、構成シーケンス番号)
ldp-initialization1 PDU に Initialization (Common Session Parameters) と KeepAlive
ldp-label-mappingAddress と Label Mapping 2 つ (プレフィックス FEC、汎用ラベル。暗黙 NULL 3 を含む)
ldp-label-withdrawワイルドカード FEC の Label Withdraw と Notification (Shutdown)
rsvp-te-pathRouter Alert 付き Path (厳密 / 緩い ERO、SESSION_ATTRIBUTE、SENDER_TSPEC、RRO)
rsvp-te-resvSE スタイルの Resv (FLOWSPEC、FILTER_SPEC、LABEL、ラベル付き RRO)
rsvp-path-errERROR_SPEC (Routing Problem) 付き PathErr
rsvp-path-tearPathTear
rsvp-helloHELLO REQUEST 付き Hello
bfd-single-hop状態 Up、300 ms 間隔の制御パケット (10 個、4 pps)
bfd-authMeticulous Keyed SHA1 認証付きの Poll
bfd-multihop-ipv6IPv6 上のマルチホップ (UDP 4784、状態 Init)
micro-bfdLAG メンバーリンクの Micro-BFD (UDP 6784、宛先 MAC 01:00:5e:90:00:01)

LDP: 1 レイヤ = 1 PDU

ldp レイヤは PDU ヘッダ (version、pdu_length、lsr_id、label_space) と PDU 内の全メッセージ (messages) です。メッセージは PDU 長で終わるので、同じ TCP セグメントの後続 PDU は次のレイヤ (raw) になります。

メッセージと TLV は同じ形の項目です: 16 ビット型 (U ビット、TLV では F ビットも型の上位ビットに含む)、値だけの 16 ビット長、値。どのメッセージも先頭が message_id、続いて tlvs です。

- protocol: ldp
  fields:
    lsr_id: 192.0.2.1
    messages:
      - label_mapping:
          message_id: 11
          tlvs:
            - fec:
                elements: [{ prefix_length: 24, prefix: "c6 33 64" }]
            - generic_label: { label: 299776 }
      - label_withdraw:
          message_id: 12
          tlvs:
            - fec_wildcard
型メッセージ (name)型TLV (name) と値フィールド
0x0001notification0x0100fec (elements: {element_type (2), address_family, prefix_length, prefix})、fec_wildcard (要素型 1)
0x0100hello0x0101address_list (IPv4) / address_list_ipv6 (address_family、addresses)
0x0200initialization0x0103 / 0x0104hop_count、path_vector (lsr_ids)
0x0201keepalive0x0200generic_label (label: 20 ビット)
0x0300 / 0x0301address / address_withdraw0x0300status (e、f、status_code、message_id、message_type)
0x0400label_mapping0x0400common_hello_parameters (hold_time、t、r、g (GTSM、RFC 6720))
0x0401label_request0x0401 / 0x0403ipv4_transport_address / ipv6_transport_address
0x0402label_withdraw0x0402configuration_sequence_number
0x0403label_release0x0500common_session_parameters (protocol_version、keepalive_time、a、d、pv_lim、max_pdu_length、receiver_lsr_id、receiver_label_space)
0x0404label_abort_request0x0600label_request_message_id

FEC TLV は値の先頭オクテット (要素型) で fec_wildcard と fec を、Address List は先頭 2 オクテット (アドレスファミリ) で IPv4 / IPv6 を選び分けます。その他の型 (ATM / Frame Relay のラベルとセッションパラメータ、ベンダー TLV など) は { type: N, data: "..." } として保持します。

RSVP-TE: オブジェクトは「長さ → 型」

rsvp レイヤは共通ヘッダ (version、flags、msg_type、checksum、send_ttl、length) とメッセージ内の全オブジェクト (objects) です。オブジェクトは 16 ビット長 (4 オクテットのヘッダを含む) の後に Class-Num と C-Type が続き、2 つを合わせた 16 ビット (class_num << 8 | c_type) を型として扱います (wpg-core の TlvDef::len_first)。項目名はクラスと C-Type から付けています。

型名前 (name)型名前 (name)
0x0101 / 0x0102session_ipv4 / session_ipv60x0b01sender_template_ipv4
0x0107 / 0x0108session_lsp_tunnel_ipv4 / _ipv60x0b07 / 0x0b08sender_template_lsp_tunnel_ipv4 / _ipv6
0x0301 / 0x0302rsvp_hop_ipv4 / rsvp_hop_ipv60x0c02sender_tspec (IntServ)
0x0501time_values0x0f01resv_confirm_ipv4
0x0601 / 0x0602error_spec_ipv4 / error_spec_ipv60x1001label
0x0701scope_ipv40x1301label_request (l3pid)
0x0801style (sharing、sender_selection。既定 SE)0x1401 / 0x1501explicit_route / record_route (subobjects)
0x0902flowspec (IntServ、制御負荷)0x1601 / 0x1602hello_request / hello_ack
0x0a01filter_spec_ipv40x1701 / 0x1801 / 0x1802message_id / message_id_ack / message_id_nack (RFC 2961)
0x0a07 / 0x0a08filter_spec_lsp_tunnel_ipv4 / _ipv60xcf07 / 0xcf01session_attribute / session_attribute_ra (リソースアフィニティ付き)

EXPLICIT_ROUTE のサブオブジェクトは ipv4_prefix、ipv6_prefix、unnumbered_interface、as_number で、_loose を付けた名前が L ビット付き (緩いホップ) です。RECORD_ROUTE のサブオブジェクトは ipv4_address、ipv6_address、label、unnumbered_interface (それぞれ flags 付き) です。ADSPEC・POLICY_DATA・INTEGRITY などその他のオブジェクトは値オクテットのまま保持します。

SENDER_TSPEC / FLOWSPEC のトークンバケット (token_bucket_rate、token_bucket_size、peak_data_rate) は IEEE 754 単精度浮動小数点のビットパターンを 32 ビット整数で指定します (例: 1,000,000 オクテット/秒 = 0x49742400、無限大 = 0x7f800000)。既定は 125,000 オクテット/秒 (1 Mbit/s)。

Path・PathTear・ResvConf は IP の Router Alert オプション付きで送るのが通常です (ipv4 の options: [router_alert: 0])。

BFD

bfd レイヤは必須セクションと省略可能な認証セクション (authentication) です。フラグは p、f、c、a、d、m の 1 ビットフィールドです。認証セクションの型は簡易パスワード (simple_password: key_id、password)、keyed_md5 / meticulous_keyed_md5 (key_id、sequence_number、16 オクテットの digest)、keyed_sha1 / meticulous_keyed_sha1 (20 オクテットの hash) です。

- protocol: bfd
  fields:
    state: up
    my_discriminator: 0x101
    your_discriminator: 0x201
    desired_min_tx_interval: 300000 # マイクロ秒
    required_min_rx_interval: 300000
    authentication:
      - simple_password: { key_id: 1, password: '"secret"' }

Auto フィールド

フィールド規則
ldp.pdu_lengthバージョンと PDU 長を除く PDU の長さ
LDP のメッセージ / TLV の長さ値の長さ (型と長さを除く)
rsvp.checksumフィールドを 0 としたメッセージ全体のインターネットチェックサム
rsvp.length、オブジェクト / サブオブジェクトの長さヘッダを含む長さ
SESSION_ATTRIBUTE の name_length と padding名前のオクテット数、4 オクテット境界までのゼロ詰め (長さに含む)
bfd.length認証セクションを含む制御パケットの長さ
bfd.a認証セクションがあれば 1

制約

  • 状態を持ちません。LDP のセッション確立、RSVP のリフレッシュ、BFD の状態遷移とタイマーは行いません。値はそのまま送り、変化させるにはジェネレータを使います。
  • BFD の MD5 ダイジェスト / SHA1 ハッシュ、RSVP の INTEGRITY は手動です (鍵による計算はしません)。
  • LDP の 1 レイヤは 1 PDU です。同じセグメントに PDU を複数入れる場合、後続の PDU はデコード時に raw になります。
  • RSVP は GMPLS (RFC 3473) のオブジェクト、ADSPEC、POLICY_DATA を型付けしません。RSVP over UDP (RFC 2205 付録 C) は対象外です。
  • IntServ のパラメータは 1 つ目 (トークンバケット) だけを型付けし、以降 (保証サービスの Rate / Slack など) は parameters のオクテット列です。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ipv4 · ldp · rsvp · bfd · raw

SRv6 SRH / SR-MPLS (P2)

Status: draft

SRv6 の Segment Routing Header (RFC 8754) と SR-MPLS (RFC 8660) の組み立て補助 (M7)。定義は crates/wpg-protocols/src/ipv6.rs (ipv6_srh) と encap.rs (mpls)、サンプルは templates/protocols/srv6/、templates/protocols/mpls/sr-mpls-entropy、templates/scenarios/sr-mpls-prefix-sid-sweep にあります。

到達経路とサンプル

ethernet2 / ipv6 / ipv6_srh / udp|tcp|icmpv6   # SRH 付きの通常パケット
ethernet2 / ipv6 / ipv6_srh / ipv4 / ...       # H.Encaps → End.DT4 / End.DX4 (next header 4)
ethernet2 / ipv6 / ipv6_srh / ipv6 / ...       # H.Encaps → End.DT6 / End.DX6 (next header 41)
ethernet2 / ipv6 / ipv6_srh / ethernet2 / ...  # H.Encaps.L2 → End.DX2 (next header 143、RFC 8986)
ethernet2 / mpls / mpls / ... / ipv4|ipv6      # SR-MPLS ラベルスタック

IPv6 ルーティングヘッダ (next header 43) は、ルーティングタイプ (ヘッダの 3 オクテット目) が 4 のとき ipv6_srh、それ以外のとき汎用の ipv6_route としてデコードします。IPv6 の next header 143 (Ethernet) は ethernet2 に対応します。

サンプル内容
srv6-srh-udp3 セグメント (残り 2) の SRH 付き IPv6/UDP。UDP チェックサムは最後のセグメント宛てで計算
srv6-h-encaps-ipv4IPv4/UDP を外側 IPv6 + SRH (End → End.DT4) でカプセル化 (L3VPN)
srv6-end-dx2-hmacEthernet フレーム (ARP) を HMAC TLV 付き SRH で End.DX2 へ (L2VPN)
sr-mpls-entropyプレフィックス SID (SRGB + インデックス を変数で指定)、隣接 SID、ELI + エントロピーラベル
sr-mpls-prefix-sid-sweep (シナリオ)プレフィックス SID のインデックスを 1〜100 で変化させ、エントロピーラベルもパケットごとに変える

SRH のフィールド

フィールドAuto / 手動説明
next_headerAuto次レイヤから
hdr_ext_lenAuto先頭 8 オクテットを除いた 8 オクテット単位の長さ
routing_type既定 4
segments_left手動 (既定 1)次に向かうセグメントの位置
last_entryAutoセグメント数 - 1
flags / tag手動
segment_list手動IPv6 アドレスのリスト。経路の逆順: 要素 0 が最後のセグメント
tlvs手動Pad1 / PadN / HMAC TLV。後ろの詰め物 (Pad1) は Auto

segment_list は経路の逆順で書きます。送信元が出すパケットの IPv6 宛先は segment_list[segments_left] (アクティブセグメント) なので、ipv6.dst はそれに合わせて手動で設定してください (IPv6 宛先は Auto になりません)。

上位層チェックサムの宛先

segments_left が 0 でない間、UDP / TCP / ICMPv6 の疑似ヘッダの宛先は ipv6.dst ではなく最終宛先 segment_list[0] になります (RFC 8200 §8.1)。wpg はこれを自動で扱い、segments_left をジェネレータで変えた場合 (高速パッチ経路) も追従します。segments_left が 0 なら ipv6.dst を使います。汎用の ipv6_route (Type 0 / 2 / 3) はアドレスを data のオクテット列で持つため、この置き換えをしません。

TLV

TLV型値
pad10なし (1 オクテット)
padn4padding (任意長)
hmac5d (1 ビット)、reserved (15 ビット)、hmac_key_id (32 ビット)、hmac (オクテット列、手動)

TLV の後ろは 8 オクテット境界まで 0 (= Pad1) で自動的に埋めます。HMAC 値は計算しません (鍵と対象範囲を決めて外部で計算した値を入れてください)。

SR-MPLS の補助

SR-MPLS の SID は通常の MPLS ラベルなので、mpls レイヤを並べて組み立てます。

  • 予約ラベルの名前: label は 0〜15 の予約ラベルを名前で書けます: ipv4_explicit_null (0)、router_alert (1)、ipv6_explicit_null (2)、implicit_null (3)、entropy_label_indicator (7)、gal (13)、oam_alert (14)、extension (15)。それ以外は数値で書きます。
  • プレフィックス SID: ラベル = SRGB ベース + SID インデックス。expr ジェネレータと変数で "${srgb_base} + ${sid_index}" のように書けば、ルータの SRGB 設定に合わせて変数だけ変えられます (sr-mpls-entropy 参照)。インデックスを変えて多数の宛先ノードに送るには idx を足します (sr-mpls-prefix-sid-sweep 参照)。
  • エントロピーラベル (RFC 6790): entropy_label_indicator (7) のラベルの直後にエントロピーラベルを置きます。エントロピーラベルの TTL は 0 にします。
  • s (スタック最下位ビット) は Auto です。

制約 / 対象外

  • segments_left と last_entry の整合 (segments_left <= last_entry) は検査しません。
  • ipv6.dst をアクティブセグメントに合わせる処理は自動ではありません。
  • HMAC の計算、SRv6 の Behavior (End / End.X / End.DT4 など) のシミュレーションはしません。SID の Behavior はアドレスの値で表すだけです。
  • SRv6 圧縮 SID (uSID / CSID、RFC 9800) の専用表現はありません (128 ビットアドレスとして書けます)。
  • SR-MPLS の SRGB / SRLB の範囲検査はしません。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ethernet2 · ipv6_route · ipv6_srh · mpls

PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)

Status: draft

PTP (IEEE 1588-2008)、SyncE ESMC (ITU-T G.8264)、Ethernet CFM / OAM (IEEE 802.1Q 21 章 = 802.1ag、ITU-T Y.1731) と ERPS の R-APS メッセージ (ITU-T G.8032)、EFM OAM (IEEE 802.3 57 章 = 802.3ah) の補足 (M7)。定義は crates/wpg-protocols/src/{ptp,esmc,cfm,efm_oam}.rs、サンプルは templates/protocols/timing/ と templates/protocols/oam/ にあります。

スタックとサンプル

ethernet2 / ptp_*                         # EtherType 0x88f7 (IEEE 1588 附属書 F)
ethernet2 / ipv4|ipv6 / udp / ptp_*       # UDP 319 (イベントメッセージ)、320 (一般メッセージ)
ethernet2 / esmc                          # Slow Protocols 0x8809、サブタイプ 0x0a
ethernet2 [/ dot1q] / cfm_*               # EtherType 0x8902。802.1Q / 802.1ad タグの内側も可
ethernet2 / efm_oam_*                     # Slow Protocols 0x8809、サブタイプ 0x03

Slow Protocols の EtherType 0x8809 は先頭オクテット (サブタイプ) で振り分けます: 1 LACP、2 Marker、3 OAM、0x0a ESMC (l2control::slow_protocols_peek。その他のサブタイプは raw)。Marker PDU は lacp ではなく marker としてデコードされるようになりました。UDP の宛先ポートは自動ではありません。Sync / Delay_Req / Pdelay_Req / Pdelay_Resp は 319、その他は 320 を指定します。

サンプル内容
ptp-sync-two-step-l2Ethernet 上の 2 ステップ Sync (毎秒 8 回、シーケンス ID を加算)
ptp-follow-up-l2正確な送信時刻と補正値付きの Follow_Up
ptp-pdelay-req-l2 / ptp-pdelay-resp-l2 / ptp-pdelay-resp-follow-up-l201:80:c2:00:00:0e 宛ての IEEE 802.1AS (majorSdoId 1) ピア遅延測定
ptp-delay-req-udp / ptp-delay-resp-udpUDP/IPv4 (224.0.1.129) 上の遅延要求 / 応答
ptp-announce-udpGPS 同期のグランドマスタ (クロッククラス 6) の Announce
ptp-signaling-unicastユニキャストネゴシエーション: Announce と Sync の Request Unicast Transmission TLV
ptp-management-getDEFAULT_DATA_SET の Management GET
ptp-generic汎用レイアウトで書いた Sync
esmc-ql-prc / esmc-event-dnuESMC 情報 PDU (QL-PRC、拡張 QL TLV) / イベント PDU (QL-DNU)
cfm-ccmVLAN 100 上の CCM (MD レベル 5、MEP 10、ICC 形式 MEG ID、Port / Interface Status TLV)
cfm-lbm / cfm-lbrData TLV 付きのループバックメッセージ / 応答
cfm-ltm / cfm-ltrEgress Identifier / Reply Ingress TLV 付きのリンクトレースメッセージ / 応答
cfm-generic汎用レイアウトの G.8031 Linear APS (OpCode 39)
y1731-ais / y1731-lck / y1731-csfAIS、LCK、CSF 信号
y1731-tstTest TLV 付きのテスト信号
y1731-lmm / y1731-lmr / y1731-slm / y1731-slr / y1731-1slロス測定 (フレームカウンタ、合成ロス)
y1731-dmm / y1731-dmr / y1731-1dm遅延測定 (IEEE 1588 形式のタイムスタンプ)
erps-raps-nr-rb / erps-raps-sfRPL オーナーの R-APS(NR, RB) / 障害時の R-APS(SF)
efm-oam-information / efm-oam-genericInformation OAMPDU (Local / Remote Information TLV)
efm-oam-eventEvent Notification (Errored Frame と Errored Symbol Period イベント)
efm-oam-variable-request / efm-oam-variable-response変数の取得
efm-oam-loopbackLoopback Control (リモートループバックの有効化)
efm-oam-organization-specificOrganization Specific OAMPDU

汎用レイヤと専用メッセージ

PTP、CFM、802.3ah OAM は IS-IS と同じ方式です: メッセージタイプ (PTP)、OpCode (CFM)、コード (OAM) ごとに 1 プロトコルと、汎用レイヤ (ptp、cfm、efm_oam: 共通ヘッダと残りを data オクテット列で) があります。パーサーはまず汎用レイヤとしてデコードし、message_type / opcode / code から専用レイヤに読み直します。専用定義のない値 (CFM の Linear APS、MCC、EXM / VSM など) は汎用のままです。合成時は専用プロトコルを置くだけで EtherType / サブタイプが決まります。

プロトコルmessage_type本体
ptp_sync / ptp_delay_req0 / 1origin_timestamp_{seconds,nanoseconds}
ptp_pdelay_req2送信時刻、予約 10 オクテット
ptp_pdelay_resp3request_receipt_timestamp_*、requesting_port_{clock_identity,port_number}
ptp_follow_up8precise_origin_timestamp_*
ptp_delay_resp9receive_timestamp_*、requesting_port_*
ptp_pdelay_resp_follow_up10response_origin_timestamp_*、requesting_port_*
ptp_announce11送信時刻、current_utc_offset、grandmaster_priority1/2、grandmaster_clock_{class,accuracy}、grandmaster_offset_scaled_log_variance、grandmaster_identity、steps_removed、time_source
ptp_signaling12target_port_*
ptp_management13target_port_*、starting_boundary_hops、boundary_hops、action

PTP

34 オクテットの共通ヘッダは major_sdo_id (transportSpecific)、message_type、minor_version、version、message_length (自動)、domain_number、minor_sdo_id、flags (16 ビット: two_step はビット 9、unicast はビット 10、ptp_timescale はビット 3 など)、correction_field (符号付き、ナノ秒 × 2^16)、message_type_specific、送信元ポート ID (clock_identity、port_number)、sequence_id、control_field、log_message_interval (符号付き) です。control_field と log_message_interval の既定値はメッセージに合わせてあります (該当しない場合は 0x7f)。

各メッセージの最後は tlvs (16 ビット型、値の 16 ビット長、自動) です。TLV は message_length で終わるため、短い Ethernet フレームのゼロ詰めを TLV と誤読しません。

- protocol: ptp_signaling
  fields:
    flags: 0x0400 # unicast
    tlvs:
      - request_unicast_transmission: { message_type: announce, log_inter_message_period: 1, duration_field: 300 }
      - grant_unicast_transmission: { message_type: sync, log_inter_message_period: -4, duration_field: 300, renewal_invited: 1 }
タイプTLV (name)値のフィールド
0x0001managementmanagement_id、data_field (オクテット列)
0x0002management_error_statusmanagement_error_id、management_id、reserved、display_data
0x0003organization_extensionorganization_id、organization_sub_type、data_field
0x0004 / 0x0005request_unicast_transmission / grant_unicast_transmissionmessage_type、log_inter_message_period、duration_field (grant は renewal_invited も)
0x0006 / 0x0007cancel_unicast_transmission / acknowledge_cancel_unicast_transmissionmessage_type
0x0008path_tracepath_sequence (クロック ID のリスト)
0x0009alternate_time_offset_indicatorkey_field、current_offset、jump_seconds、time_of_next_jump、display_name (長さは自動)

ESMC

esmc は OSSP ヘッダ (subtype 0x0a、itu_oui 00-19-a7、itu_subtype 1)、version (1)、event_flag と TLV (8 ビット型、3 オクテットのヘッダを含む 16 ビット長、自動) です: ql (ssm_code: prc、ssu_a、ssu_b、sec、dnu とオプション 2 のコード)、extended_ql (enhanced_ssm_code、synce_clock_identity、flags (EEC / eEEC 混在、部分チェーン)、cascaded_eeecs、cascaded_eecs)。TLV の後の詰め物は 1 つの raw 項目としてデコードされます。

CFM / Y.1731 / R-APS

共通ヘッダは md_level、version、opcode、フラグ、first_tlv_offset です。フラグは OpCode ごとに分けてあります (CCM: rdi、period、LTM / LTR: use_fdb_only、fwd_yes、terminal_mep、AIS / LCK / CSF: period、CSF の type、その他: flags)。first_tlv_offset は OpCode ごとに一定です (変えると警告)。TLV は End TLV (end、タイプ 0) で終わり、その後の Ethernet の詰め物は End TLV の繰り返しではなく詰め物として扱います (wpg-core の Length::UntilTlv)。

OpCodeプロトコルフィールド
1cfm_ccmsequence_number、mep_id、maid (48 オクテット)、tx_fcf、rx_fcb、tx_fcb
2 / 3cfm_lbr / cfm_lbmtransaction_id
4cfm_ltrtransaction_id、reply_ttl、relay_action
5cfm_ltmtransaction_id、ttl、original_mac、target_mac
33 / 35cfm_ais / cfm_lck(周期のみ)
37cfm_tstsequence_number
40cfm_rapsrequest_state、sub_code、rb、dnf、bpr、node_id
42 / 43cfm_lmr / cfm_lmmtx_fcf、rx_fcf、tx_fcb
45cfm_1dmtx_timestamp_f_*、rx_timestamp_f_*
46 / 47cfm_dmr / cfm_dmmtx_timestamp_f_*、rx_timestamp_f_*、tx_timestamp_b_*、rx_timestamp_b_*
52cfm_csf(種類と周期)
53cfm_1slsource_mep_id、test_id、tx_fcf
54 / 55cfm_slr / cfm_slmsource_mep_id、responder_mep_id、test_id、tx_fcf、tx_fcb

TLV (8 ビット型、値の 16 ビット長、自動): end (0)、sender_id (1: chassis_id_length は自動、chassis_id_subtype、chassis_id、management_address オクテット列)、port_status (2)、data_tlv (3: value)、interface_status (4)、reply_ingress / reply_egress (5 / 6: 動作、MAC、ポート ID のオクテット列)、ltm_egress_identifier (7)、ltr_egress_identifier (8)、organization_specific (31)、test (32: pattern_type、test_pattern)。

R-APS (cfm_raps、OpCode 40) の既定はバージョン 1 (G.8032v2)、first_tlv_offset 32、R-APS(NR, RB) です。宛先は 01:19:a7:00:00:<リング ID>、通常は R-APS 用 VLAN 上の MEL 7 で送ります。

802.3ah OAM

OAMPDU は subtype (3)、flags (リンク障害、Dying Gasp、重大イベント、ローカル / リモートの評価中・安定。既定 0x0050)、code で始まります。

コードプロトコルフィールド
0x00efm_oam_informationtlvs: local_information / remote_information (oam_version、revision、multiplexer_action、parser_action、oam_configuration、max_oampdu_size、oui、vendor_specific_information)、organization_specific、end
0x01efm_oam_event_notificationsequence_number、tlvs: errored_symbol_period、errored_frame、errored_frame_period、errored_frame_seconds_summary (timestamp、window、threshold、errors、error_running_total、event_running_total)、organization_specific、end
0x02efm_oam_variable_requestvariable_descriptors (オクテット列: ブランチ、リーフ、…、0 のブランチ)
0x03efm_oam_variable_responsevariable_containers (オクテット列: ブランチ、リーフ、幅、値、…、0 のブランチ)
0x04efm_oam_loopback_controlremote_loopback_command (1 有効化、2 無効化)
0xfeefm_oam_organization_specificoui、data

Information / Event TLV の長さは 2 オクテットのヘッダを含み (自動)、リストは end で終わります。

対象外

  • PTP: 認証 / セキュリティ TLV (IEEE 1588-2019 附属書 P)、管理 ID ごとの Management TLV データの型付け、その他のトランスポート (附属書 C、E〜G のうち IPv6 / Ethernet 以外)、状態機械と送信時のタイムスタンプ付与。
  • CFM: MAID / MEG ID は送信される 48 オクテットのまま (名前形式ごとに分解しない)、Test TLV の CRC-32 は計算しない。Linear APS、MCC、EXM / EXR、VSM / VSR は専用定義なし (汎用 cfm)。
  • 802.3ah OAM: 変数記述子 / コンテナはオクテット列。OAM ディスカバリの状態機械。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

lacp · marker · ptp · ptp_sync · ptp_delay_req · ptp_pdelay_req · ptp_pdelay_resp · ptp_follow_up · ptp_delay_resp · ptp_pdelay_resp_follow_up · ptp_announce · ptp_signaling · ptp_management · esmc · cfm · cfm_ccm · cfm_lbm · cfm_lbr · cfm_ltm · cfm_ltr · cfm_ais · cfm_lck · cfm_tst · cfm_raps · cfm_lmm · cfm_lmr · cfm_1dm · cfm_dmm · cfm_dmr · cfm_csf · cfm_slm · cfm_slr · cfm_1sl · efm_oam · efm_oam_information · efm_oam_event_notification · efm_oam_variable_request · efm_oam_variable_response · efm_oam_loopback_control · efm_oam_organization_specific · raw

MACsec / GTPv2-C / Diameter / SIP / RTP (P2)

Status: draft

MACsec (IEEE 802.1AE、構造のみ)、GTPv2-C (3GPP TS 29.274)、Diameter (RFC 6733、Credit-Control は RFC 4006)、SIP (RFC 3261)、RTP / RTCP (RFC 3550) (M7) のメモです。定義は crates/wpg-protocols/src/{macsec,gtpv2,diameter,sip,rtp}.rs、サンプルは templates/protocols/l2/macsec.wpg.yaml、templates/protocols/mobile/、templates/protocols/voip/ にあります。

スタックとサンプル

ethernet2 / macsec                          # EtherType 0x88e5 (Auto)。dot1q の後にも置ける
ethernet2 / ipv4 / udp / gtpv2 [/ gtpv2]    # UDP 2123。ピギーバックされたメッセージは 2 つ目の gtpv2 レイヤ
ethernet2 / ipv4 / tcp / diameter           # TCP 3868
ethernet2 / ipv4 / udp|tcp / sip            # UDP / TCP 5060
ethernet2 / ipv4 / udp / rtp / payload      # 任意のポート (レイヤを明示)。UDP 5004 はデコードされる
ethernet2 / ipv4 / udp / rtcp_sr / rtcp_sdes ...  # RTCP 複合パケット。UDP 5005 はデコードされる

UDP / TCP の宛先ポートは Auto ではないので 2123、3868、5060 などを指定します (デコードでは送信元ポートも見ます)。

サンプル内容
macsec明示的な SCI 付きの暗号化フレーム (アソシエーション番号 1、48 オクテットのセキュアデータ、不透明な ICV)
gtpv2-create-session-requestS11 の Create Session Request: IMSI、MSISDN、Serving Network、RAT Type、F-TEID 2 つ、APN、Selection Mode、PDN Type、PAA、AMBR、Bearer Context
gtpv2-create-session-responseCreate Session Response: Cause、F-TEID、PAA、APN Restriction、S1-U の F-TEID と Charging ID を含む Bearer Context
gtpv2-echo-requestTEID なしの Echo Request (Recovery IE)
diameter-cerVendor-Specific-Application-Id (S6a) 付きの Capabilities-Exchange-Request
diameter-ccr-initialSubscription-Id 付きの初回 Credit-Control-Request
sip-inviteUDP での SDP オファー付き INVITE
sip-registerTCP での本文なしの REGISTER
rtp-pcmuG.711 PCMU の 50 パケット (シーケンス番号とタイムスタンプのジェネレータ、160 オクテットのペイロード)
rtcp-sr-sdes受信レポート 1 件の送信者レポートと SDES の CNAME
rtcp-rr-bye受信者レポート、SDES の CNAME、理由付きの BYE
rtcp-feedback-app受信者レポート、PLI (汎用 rtcp レイヤ)、APP パケット

MACsec: 構造のみ

macsec レイヤは SecTAG とフレームの保護部分です。

フィールド内容
v、es、sc、scb、e、cTCI のビット。sc は Auto: sci に要素があれば 1
anアソシエーション番号 (2 ビット)
slショート長 (6 ビット): セキュアデータが 48 オクテット未満のときその長さ、それ以外は 0。手動
pnパケット番号 (32 ビット)
sci[] または [{ system_identifier, port_identifier }]
secure_data不透明なオクテット列。書いた値がそのまま送られ、暗号化はしない
icv不透明な 16 オクテット。計算しない

解析ではフレームの最後の 16 オクテットを ICV、SecTAG と ICV の間をセキュアデータとします。Ethernet の最小長より短いフレームは (実際の回線と同じく) ICV の後に詰め物が付き、解析し直すと詰め物はセキュアデータ / ICV に含まれます。完全性保護のみのフレーム (E = C = 0) もそれ以上はデコードせず、ユーザデータは secure_data に残ります。

GTPv2-C: 1 レイヤ = 1 メッセージ

gtpv2 レイヤはヘッダ (version 2、p、t、mp、message_type、message_length、teid、sequence_number、message_priority) と IE (ies) です。

  • t は teid から Auto: teid: [0x1001] で TEID を送り、teid: [] (Echo) で省きます。
  • message_length は Auto (先頭 4 オクテットより後のオクテット数)。IE はこの長さで終わるので、ピギーバックされたメッセージ (p: 1) は次の gtpv2 レイヤになります。
  • IE は 8 ビット型、IE データの 16 ビット長、長さに数えないスペア / インスタンスの 1 オクテット (wpg-core TlvDef::uncounted_octets) です。型付きの IE はどれも先頭に spare と instance フィールドを持ちます。
- protocol: gtpv2
  fields:
    message_type: create_session_request
    teid: [0]
    ies:
      - imsi: { digits: "00 01 01 21 43 65 87 f9" }   # TBCD
      - fteid: { interface_type: s11_mme_gtp_c, teid: 0x1001, ipv4: 192.0.2.1 }
      - apn: { apn: "08 69 6e 74 65 72 6e 65 74" }    # DNS ラベル
      - bearer_context:
          ies:
            - ebi: { ebi: 5 }
            - bearer_qos: { pl: 9, qci: 9 }
型IE (name) とデータのフィールド
1 / 75 / 76imsi / mei / msisdn (digits、TBCD のオクテット列)
2cause (cause、pce、bce、cs、offending_ie)
3recovery (restart_counter)
71apn (apn、DNS ラベルのオクテット列)
72ambr (uplink、downlink、kbps)
73ebi (ebi)
74ip_address / ip_address_ipv6 (address)。IE 長で判別
77 / 78 / 84 / 86indication (flags)、pco、bearer_tft、uli (data / tft のオクテット列)
79paa / paa_ipv6 / paa_ipv4v6 (pdn_type、ipv6_prefix_length、ipv6、ipv4)。IE 長で判別
80bearer_qos (pci、pl、pvi、qci、mbr_uplink、mbr_downlink、gbr_uplink、gbr_downlink)
82rat_type
83serving_network (MCC / MNC の各桁)
87fteid / fteid_ipv6 / fteid_ipv4v6 (v4、v6、interface_type、teid、ipv4、ipv6)。IE 長で判別
93bearer_context (ies: 上の IE。1 段のみ)
94 / 95charging_id、charging_characteristics
99pdn_type
114 / 127 / 128ue_time_zone、apn_restriction、selection_mode
255private_extension (enterprise_id、value)

その他の IE は { type: N, data: "..." } (データはインスタンスのオクテットから始まる) で保持します。GTPv1-C (バージョン 1、同じ UDP 2123) はモデル化していません。そのメッセージはバージョンの警告付きで gtpv2 としてデコードされます。

Diameter: ヘッダと AVP

diameter レイヤはヘッダ (version、message_length (Auto)、r / p / e / t フラグ、command_code、application_id、hop_by_hop、end_to_end) と AVP (avps) です。AVP はメッセージ長で終わるので、同じ TCP セグメント内の 2 つ目のメッセージは次のレイヤ (raw) になります。

AVP は 32 ビットのコード、フラグのオクテット (コードと長さの間: wpg-core TlvDef::head_octets)、ヘッダとデータを数え詰め物を数えない 24 ビット長 (Auto)、V フラグが 1 のときの Vendor-ID、4 オクテット境界まで詰めたデータ (Auto) です。型付きの AVP はどれも v (vendor_id から Auto)、m、p、reserved、vendor_id ([] または [10415]) の後にデータのフィールドを持ちます。

データ型AVP (name)データのフィールド
OctetString / UTF8String / DiameterIdentity / DiameterURIsession_id、origin_host、origin_realm、destination_host、destination_realm、product_name、user_name、error_message、route_record、proxy_host、proxy_state、class、redirect_host、service_context_id、subscription_id_data などvalue (オクテット列。テキストは '"..."')
Unsigned32 / Timevendor_id、supported_vendor_id、auth_application_id、acct_application_id、origin_state_id、firmware_revision、session_timeout、experimental_result_code、cc_request_number、event_timestamp などvalue
Unsigned64accounting_sub_session_idvalue
Enumeratedresult_code、disconnect_cause、auth_session_state、auth_request_type、re_auth_request_type、termination_cause、accounting_record_type、cc_request_type、subscription_id_type、multiple_services_indicatorvalue (名前で指定可)
Addresshost_ip_address / host_ip_address_ipv6。AVP 長で判別address_family、address
Groupedvendor_specific_application_id、failed_avp、proxy_info、experimental_result、subscription_idavps (上の AVP。1 段のみ)

一覧にないコードのベンダ固有 AVP (3GPP など) は、フラグのオクテット・Vendor-ID・値を data に含めた { type: N, data: "..." } で保持します。SCTP 上の Diameter はメッセージのオクテット列を SCTP DATA チャンクのユーザデータに入れて作ります。SCTP はユーザデータをデコードしません (SCTP を参照)。

SIP: テキストの行

sip レイヤはテキストです。start_line と headers の各要素は CRLF で終わる行 (wpg-core Length::Until) で、CRLF なしで書くと合成時に CRLF とヘッダ後の空行が付きます。body はメッセージの残り (SDP のオファー / アンサーなど) です。

- protocol: sip
  fields:
    start_line: '"INVITE sip:bob@example.com SIP/2.0"'
    headers:
      - '"Via: SIP/2.0/UDP 192.0.2.1:5060;branch=z9hG4bK74bf9"'
      - '"Content-Type: application/sdp"'
      - '"Content-Length: 132"'
    body: '"v=0\r\no=alice ...\r\n"'

Content-Length は通常のヘッダ行で手動のままです。本文に合わせてください (サンプルは合わせてあります)。空行のないメッセージは sip としてデコードされません。

RTP と RTCP

RTP には決まったポートがなく、セッションのポートは SDP で決まります。udp の後に rtp / rtcp_* レイヤを明示的に置いてください。解析では IANA の rtp-avp / rtcp-avp ポート 5004 / 5005 だけを RTP / RTCP として選びます (tshark でも -d udp.port==N,rtp の指定が必要です)。

rtp は固定ヘッダ、csrc (数 cc は Auto)、header_extension ([] または [{ profile, data }]。X ビットとワード単位の長さは Auto、data は 32 ビットワードのリスト、profile 0xBEDE は RFC 8285 の 1 バイト要素) です。メディアのペイロードは次のレイヤ (payload / raw) です。パディングビットと詰め物は手動です。

RTCP は 1 パケット 1 レイヤなので、複合パケットは RTCP レイヤを重ねて作ります。件数 (report_count / source_count) と length (32 ビットワード数 − 1) は Auto で、各パケットはその長さで終わります。

レイヤパケットタイプ本体のフィールド
rtcp_sr200ssrc、ntp_timestamp_msw / lsw、rtp_timestamp、packet_count、octet_count、report_blocks、extension
rtcp_rr201ssrc、report_blocks、extension
rtcp_sdes202chunks: [{ ssrc, items: [{ type, text }] }] (項目の長さ、null オクテット、詰め物は Auto)
rtcp_bye203ssrcs、reason ([] または [{ text }])
rtcp_app204subtype (件数フィールド)、ssrc、name (4 オクテット)、data
rtcp任意count、body (オクテット列)。解析時は 200〜204 なら型付きのパケットとして読み直す

対象外

  • MACsec の暗号化 / ICV 計算、XPN (64 ビットのパケット番号)、完全性保護のみのユーザデータのデコード
  • GTPv1-C、上の表で型付けしていない GTPv2-C の IE (ULI、Indication のフラグ、PCO の中身はオクテット列)、入れ子の Bearer Context
  • Diameter のベンダ固有 AVP 辞書 (3GPP の S6a / Gx / Gy など)、2 段以上のグループ化 AVP、SCTP DATA チャンクからの Diameter の demux
  • SIP の Content-Length の Auto、ヘッダの名前 / 値への分解、SIP over TLS (5061)、マルチパート本文
  • RTP のペイロード形式、SRTP、RTCP のフィードバック (RTPFB / PSFB) と XR の本体 (rtcp でオクテット列として保持)

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ipv4 · udp · ipv6 · macsec · gtpv2 · diameter · sip · rtp · rtcp · rtcp_sr · rtcp_rr · rtcp_sdes · rtcp_bye · rtcp_app · payload · raw

ユーザ定義プロトコル (protocols.d)

組み込みにない独自プロトコルや社内プロトコルを、Rust を書かずに YAML ファイルで追加できます。追加したプロトコルは組み込みと同じ定義 IR (wpg_core::ProtocolDef) になるので、合成 (長さ・チェックサムの Auto を含む)、解析 (wpg import、受信画面のツリー)、ジェネレータ、GUI のビルダーとプレビューでそのまま使えます。

読み込ませ方

場所指定
wpg servewpg.toml の [protocols] dirs = ["/etc/wpg/protocols.d"] と --protocols-dir <DIR> (両方の和)
ほかのサブコマンド (send / render / import / template lint / capture …)--protocols-dir <DIR> (繰り返し可) または環境変数 WPG_PROTOCOLS_DIR
Web UIログイン後に GET /api/protocols/extensions からサーバの定義を取得し、ブラウザ内のカタログに追加 (再読み込み後も取得し直す)

ディレクトリ直下の *.yaml / *.yml をファイル名順に読み込みます (サブディレクトリは読みません)。定義に誤りがあるとコマンドは終了コード 2 で止まり、ファイル名と理由を表示します。wpg config validate も protocols.dirs を検査します。

wpg render examples/acme-telemetry.wpg.yaml -o acme.pcapng --protocols-dir examples/protocols.d
wpg import acme.pcapng -o acme.wpg.yaml --protocols-dir examples/protocols.d

動作中のサーバへの再読み込み

wpg serve は起動時にディレクトリを読み込みます。ファイルを追加・変更・削除したら、再起動せずに再読み込みできます。

  • Web UI: 設定 → ユーザ定義プロトコル → 再読み込み。
  • API: POST /api/protocols/reload (ほかの変更操作と同じく管理者のセッションと X-CSRF-Token が必要)。応答は読み込んだディレクトリと、使用中になったファイルの一覧です。接続中のブラウザには protocols_changed イベントが届き、定義を取得し直します。

読み直すのは起動時と同じディレクトリです (wpg.toml の [protocols] dirs を変えたときは再起動が必要)。読み込めないファイルがあると応答は 422 invalid_protocols (details.file / details.reason) になり、使用中のプロトコルは変わりません。実行中のジョブは開始時の定義を使い続けます。

読み込んだ定義の組み合わせは、異なるものごとにサーバの終了までメモリに残ります (実行中のジョブが使っている可能性があるため)。以前と同じ組み合わせを読み込んだときは再利用します。量は小さいものの、開発中に非常に頻繁に再読み込みするなら、ときどき再起動してください。

ツール: wpg protocols

コマンド内容
wpg protocols list [--json]プロトコルの一覧: ID、名前、レイヤ、定義元 (組み込み、または --protocols-dir のユーザ定義ファイル)
wpg protocols show <id> [--json]定義を拡張ファイルの形 (YAML) で表示。新しいプロトコルのひな形に使えます。--json は定義 IR を表示
wpg protocols check <file|dir>...拡張ファイルを検査 (どこにも読み込みません)。誤りがあれば終了コード 1

check は各ファイルを読み、組み込みプロトコルと --protocols-dir のほかのファイルとあわせて検査します (ファイル間の参照も解決します)。エラーにはファイル名とファイル内の位置が付きます。

my.yaml: protocols[0].fields[2]: missing field `bits` at line 12 column 9
acme.yaml: bind[0]: `udp.dst_port` value 4789 is already bound to `vxlan`

既存のプロトコルをもとに作る例:

wpg protocols show udp > protocols.d/my-proto.yaml
# `id` (と `name`) を変え、`description_key` の行を消してからフィールドを編集
wpg protocols check protocols.d/my-proto.yaml

ファイル形式

1 ファイルに protocols (新しいプロトコル定義の一覧) と bind (既存プロトコルの次レイヤ表に足す項目の一覧) を書きます。どちらも省略できます。例はリポジトリの examples/protocols.d/acme-telemetry.yaml にあります。

protocols:
  - id: acme_tlm            # 一意な id (テンプレートの `protocol:` に書く名前)
    name: ACME Telemetry    # 表示名
    layer: l7               # パレットの分類: l2 / l3 / l4 / l7 / payload
    fields:                 # ワイヤ上の順
      - name: version
        type: { kind: uint, bits: 4 }
        default: { uint: 1 }
      - name: msg_type
        type:
          kind: enum
          bits: 4
          variants:
            - { value: 1, name: report }
            - { value: 2, name: alarm }
        default: { uint: 1 }
      - name: length
        type: { kind: uint, bits: 16 }
        auto: { kind: length, of: total }   # ヘッダ + 以降のオクテット数
      - name: readings
        type: { kind: bytes, len: { kind: to_end } }

bind:
  - under: udp          # 下位プロトコル
    value: 47000        # その選択フィールド (UDP は dst_port、解析では src_port も) の値
    protocol: acme_tlm

プロトコル定義

各定義の形は GET /api/protocols/{id} が返す JSON と同じです。wpg protocols show <id> で既存のプロトコルをこの形式で表示でき、ひな形に使えます。

  • フィールド型 (type.kind): uint / int (bits)、enum (bits, variants)、flags (bits, flags)、bytes (len)、mac、ipv4、ipv6、nsap、cstring、tlv、list、padding、raw。
  • 既定値 (default) は { uint: 1 }、{ bytes: [0, 1] } のように型名 1 つのマップで書きます。
  • 自動計算 (auto): 長さ (kind: length, of: header | payload | total)、チェックサム (kind: checksum, algorithm: internet | internet_pseudo_header | fletcher | crc32 | crc32c …)、次ヘッダ (kind: next_protocol) など。
  • 次レイヤの選択 (next): このプロトコルの上に別のプロトコルを載せるときに field と table (value → protocol) を書きます。

定義は読み込み時に組み込みと同じ検査 (ビット幅、オクテット境界、Auto の対象など) を受け、知らないキーはエラーになります。

結び付け (bind)

キー意味
under下位プロトコルの id (udp、tcp、ethernet2、dot1q、ipv4 …)
value / max選択フィールドの値 (max を書くと value..=max の範囲)
protocol選ばれるプロトコルの id (組み込みでも拡張でも可)
field下位プロトコルにまだ次レイヤ表がないときだけ必要な選択フィールド名。表があるときは、その選択フィールドと一致している必要があります

EtherType で結び付けるときは、ethernet2 と dot1q (VLAN の後) のように必要な下位レイヤごとに書きます。

制約

  • 組み込みプロトコルの id は使えず、組み込みの定義は変更できません (同じ id は 2 つ目のファイルでもエラー)。
  • 下位プロトコルがすでに別のプロトコルに割り当てている値 (例: UDP 4789 = VXLAN) には結び付けられません。
  • UDP / TCP のポートは Auto ではないため、テンプレートでは dst_port を明示してください (bind は解析と GUI の候補表示に使われます)。
  • フィールドの説明 (Fluent の description_key) は組み込み用です。ユーザ定義プロトコルでは省略してください。
  • プロトコルリファレンス (wpg docs gen) は組み込みプロトコルだけを対象にします。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

ethernet2 · dot1q · ipv4 · tcp · udp · ipv6 · raw

テンプレートスキーマ

テンプレートは 1 つのストリームを記述する YAML ファイル (.wpg.yaml。.wpg.json の JSON も同等) です。レイヤスタック、フィールドを変化させるジェネレータ、送出プロファイルから成ります。機械可読な定義は docs/schema/template.schema.json で、wpg template schema でも出力できます。未知のキーはエラーになるのでタイプミスを検出できます。ファイルの検査は wpg template lint FILE です。

schema: 1                  # 必須
meta: { ... }              # 必須
variables: [ ... ]         # 任意
layers: [ ... ]            # 必須。外側から内側の順
packet: { ... }            # 任意
stream: { ... }            # 任意
tx: { ... }                # 任意

meta

キー意味
name必須の表示名。ライブラリ内で一意 (同梱ライブラリはテストで確認)
description自由記述
descriptions言語別の説明: ja: と en:
tags検索用タグ。同梱ライブラリは protocol:<id>、layer:l2|l3|l4、scenario、malformed と話題語を使う
author, created自由記述。created は日付または RFC 3339 の時刻

variables

テンプレート引数です。各項目は name、任意の default (文字列・数値・真偽値)、description を持ちます。フィールド値やジェネレータの中で ${name} と書き、実行時に --var name=value (wpg send、wpg render) や GUI で上書きします。既定値も上書きも無い変数はエラーで、宣言の無い ${…} もエラーです。宣言だけで使われていない変数は警告になります。

次の任意のキーで値を制約できます。書かなければどんな文字列も受け付けます。

キー意味
typeuint、int、bool、string、ipv4、ipv6、mac、bytes。値の書式はフィールドと同じです (0x0800、0200.0000.0001)
choices許す値の一覧
min、max範囲 (両端を含む)。uint と int のみ
required実行時に値の指定が必須。default は持てません
variables:
  - { name: vlan_id, type: uint, min: 1, max: 4094, default: 100 }
  - { name: target, type: ipv4, required: true }
  - { name: proto, type: uint, choices: [6, 17], default: 17 }

wpg template lint は既定値と選択肢を検査します。実行時の値 (--var、ジョブ API と render API の vars) が合わなければテンプレートエラーになり、変数名と期待する値を示します。CLI は終了コード 3、サーバは 422 invalid_template を返します。bool は true、false、1、0 を受け付け、1 か 0 として代入されます。GUI のジョブ作成フォームは変数ごとに合った入力欄を表示します。

layers

各項目は protocol (カタログの ID。プロトコルリファレンス を参照)、fields、generators から成ります。

fields

書いたフィールドは Manual、書かない (または auto にした) フィールドは既定値になるか、計算されます (長さ、チェックサム、次プロトコル番号)。値は人間向け表記です。

型例
整数64、0x0800、0b101
MAC / IPv4 / IPv602:00:00:00:00:01、192.0.2.1、2001:db8::1 ("00:11:22:33:44:55" のように数字だけの MAC は YAML が数値と解釈しうるので引用符で囲む)
バイト列"00 01 02 03" (必ず引用符)。テキストは '"text"' (\r、\n、\t のエスケープ可)
テキスト行 (CRLF で終わる SIP の行)start_line: '"INVITE sip:bob@example.com SIP/2.0"' (終端は自動で付く)
enum数値かバリアント名: ethertype: arp、oper: request、type: echo_request
flagsビット名を | で連結: flags: syn|ack、flags: df
TLV リスト (TCP/IPv4 オプション)- mss: 1460、- sack_permitted、- nop、- timestamps: { tsval: 1, tsecr: 0 }、- { type: 99, data: "01 02" }
リスト / TLV リストをそのままのオクテット列でnlri: "18 c6 33 64" (リストの代わりに引用符付きの 16 進文字列。インポートがデコードできない内容をこの形で書く)

わざと誤った値も受け付けます。Manual の長さやチェックサムは書いたとおりに使われ、wpg template lint は不一致を警告 (diag-*) として報告します。templates/malformed/ のサンプルはこの仕組みで作っています。

generators

フィールド名からジェネレータへの対応です。完全形か、GUI と同じ短縮表記で書きます。

kindパラメータ短縮表記意味
rangestart、end、step (既定 1)192.168.1.1-192.168.5.254、1-1024両端を含むスイープ。件数が多いと先頭に戻る
range (CIDR)10.0.0.0/22ブロックのホストアドレス
listvalues1,5,9値を順に繰り返す
randommin、max、seed一様乱数 (整数、IPv4、IPv6)
random_macoui、seed00:11:22:*ランダムな MAC (上位を固定可)
counterstart、step、wrap増加する値。wrap が無ければ無限
filepathファイルから読む値
exprexpr計算式による値

同じフィールドに固定値とジェネレータを書くと lint が警告します。

式 (expr)

expr ジェネレータはパケットごとに整数を計算します。結果は他の値と同じようにフィールドに書き込まれるので、数値のほか IPv4 / IPv6 アドレスや MAC アドレスも埋められます。

要素意味
12、0x1f、0b101リテラル (10 進、16 進、2 進)
idxストリーム内のパケット番号 (0、1、2、…)
$field、$<layer>.field同じパケットでの、別の ジェネレータ付き フィールドの値。<layer> の書き方は stream.order と同じ ($0.src と $ethernet2.src はどちらも先頭レイヤの src ジェネレータ、$ipv4[1].src は 2 つ目の ipv4)
+ - * / %、<< >>、& ^ |、単項 - ~C と同じ演算子と優先順位。整数演算 (128 ビット、桁あふれは折り返し)
hash(x)、crc(x)x (8 オクテットのビッグエンディアン) の FNV-1a 64 / CRC-32。連番を散らすのに使う
rand(min, max)min から max までの乱数。パケット番号と stream.seed で決まる
min(a, ...)、max(a, ...)引数の最小 / 最大

参照できるのは、同じテンプレートでジェネレータを持つフィールドだけです。固定値のフィールドは見えません (変数にして ${name} と書けば、式の解析より前に置き換わります)。expr が別の expr を参照できるのは、参照先がテンプレート内で先にある場合だけです。同梱ライブラリの例:

generators:
  chaddr: { kind: expr, expr: "$0.src" }                          # Ethernet の送信元 MAC を写す (dhcp-discover-flood)
  xid: { kind: expr, expr: "rand(0, 0xffffffff)" }               # 再現可能なランダムのトランザクション ID
  label: { kind: expr, expr: "${srgb_base} + ${first_index} + idx" } # SR-MPLS の Prefix SID (sr-mpls-prefix-sid-sweep)

packet

キー既定意味
pad_to_mintrueEthernet の最小 60 オクテット (FCS 除く) までゼロ埋め
fcsnoneauto は正しい CRC-32、bad は誤った CRC-32 を付け、none は付けない

stream

ジェネレータの組み合わせ方とストリームの長さです。

キー意味
modezip (既定。同時に進める)、product (最後が最速)、nested
ordernested 用。遅い方から速い方へ <レイヤ>.<フィールド> で列挙。<レイヤ> は 0 始まりの添字、スタック内で一意なプロトコル ID (dot1q.vid、arp.tpa)、または同じプロトコルが複数あるときの <プロトコル>[<n>] (0 始まりで n 番目。ipv4[1].src はトンネル内側の IPv4)
countパケット数。既定は tx.count、無ければジェネレータの自然な長さ
seedランダムジェネレータの seed。ストリームを再現可能にする

無限のジェネレータ (wrap 無しの counter) には count が必要で、product や nested の内側には置けません。

tx

キー意味
count送信パケット数 (count も duration_secs も無ければ停止するまで)
duration_secs秒単位の時間制限
rate1000pps、1Mpps、10Gbps、50%、ifg=10us
burst連続送信するフレーム数

wpg send のコマンドラインオプションが優先されます。

コマンドラインからの上書き

wpg send、wpg render、wpg template show、wpg bench --template では、ファイルを編集せずにその実行だけテンプレートを変えられます。

オプション効果
--vars-file FILEYAML または JSON のマップ (dst_ip: 10.1.2.3) から変数の値を読みます。
--var NAME=VALUE変数を 1 つ指定します (複数回指定可)。--vars-file より優先され、--vars-file はテンプレートの default より優先されます。
--set LAYER.FIELD=VALUEフィールドを fields: と同じ表記の値に固定します。フィールドは Manual になり、ジェネレータは外れます。
--gen LAYER.FIELD=GENフィールドにジェネレータを付け、固定値を外します。

LAYER はプロトコル ID (最初のレイヤ: ipv4)、0 から数えた n 番目のレイヤ (ipv4[1] は IP-in-IP の内側のヘッダ)、または 0 始まりのレイヤ添字 (2) です。FIELD は プロトコルリファレンス にあるフィールド名です。存在しないレイヤやフィールドを指定すると終了コード 3 で止まり、テンプレートのレイヤ一覧か近いフィールド名を表示します。--vars-file の変数も --var と同じく、テンプレートで宣言されている必要があります。

GEN は次のいずれかです。

短縮表記ジェネレータ
range:A..B、range:A..B/STEPA から B まで (両端を含む) の range
list:a,b,clist
random、random:MIN..MAXrandom
counter、counter:START、counter:START/STEPcounter
expr:EXPRexpr
上記以外generators: の短縮表記: 10.0.0.1-10.0.0.9、10.0.0.0/24、1,5,9、00:11:22:*
$ wpg render templates/examples/eth-ipv4-udp-range.wpg.yaml -o out.pcapng --count 100 \
    --vars-file lab.yaml --set ipv4.ttl=1 --gen udp.src_port=range:1024..1123

payload レイヤ

payload は実際のプロトコルではなく、フィールドが生成を制御します。mode (fixed、pattern、random、counter)、data、length、seed、counter モードでは counter_offset、counter_width (u32 または u64)、counter_value (通常は counter ジェネレータで与える) です。raw は指定したバイト列をそのまま置きます。

lint の検査項目

キー重大度意味
lint-schema-versionerror未対応の schema
lint-missing-namewarningmeta.name が空
lint-no-layerserrorレイヤなし
lint-unknown-protocol, lint-unknown-fielderrorカタログにない
lint-invalid-value, lint-invalid-generatorerror値やジェネレータがフィールド型に合わない
lint-unknown-variable, lint-missing-variableerror宣言のない変数 / 値のない変数
lint-unused-variablewarning宣言だけで未使用
lint-next-protocol-manualwarning次レイヤが前のレイヤのバインディング表になく、次プロトコルのフィールドを Auto にできない
lint-field-and-generatorwarning同じフィールドに固定値とジェネレータ
diag-*error / warning構築したパケットの診断 (計算値と異なるチェックサムや長さなど)

同梱ライブラリ

templates/ は既定でライブラリとして読み込まれ、crates/wpg-template/tests/samples.rs で検証されています。

フォルダ内容
examples/小さな出発点 5 本
protocols/l2, l3, l4, payload, frameカタログの全プロトコルのサンプル。ジャンボ、最小サイズ、ランツ、FCS の例を含む
scenarios/すぐ使える試験: ARP スイープ、SYN フラッドとポートスキャン、QinQ、NDP と RA、ping と TTL スイープ、QoS マトリクス、MTU 探索、フレーム長スイープ、MAC フラッド、SR-MPLS Prefix SID スイープ、DHCP DISCOVER 負荷
interop/実機・FRR との相互接続確認: OSPFv2 2-Way、RIPv2 経路、IS-IS 隣接 Up、VRRPv3 プリエンプト、PIM ネイバー、LDP ディスカバリ、BFD セッション Up (interop タグ。手順は運用ガイドの「相互接続確認」)
malformed/わざと壊したパケット (チェックサム不正、長さ不一致、切り詰め、FCS 不正)。設計上 lint が警告を出し、malformed タグが付く

一覧は wpg template list templates で表示できます。

キーリファレンス (自動生成)

テンプレート形式の JSON Schema (wpg template schema) から自動生成しています。説明文はコードの doc コメント (英語) です。Template が文書のルートです。

Template

A .wpg.yaml template: one packet (+ generators) = one stream.

キー型必須説明
layersTemplateLayer[]Layer stack, outermost first.
metaMetaはいMetadata.
packetPacketOptionsFrame-level options (padding, FCS).
schemaintegerはいSchema version, see [SCHEMA_VERSION].
streamStreamOptionsStream expansion options.
txTxProfileTransmit profile.
variablesVariable[]Template variables.

FcsChoice

Frame check sequence choice.

値説明
"auto"Append the correct CRC-32.
"bad"Append a deliberately wrong CRC-32.
"none"No FCS (what capture / TX backends usually expect).

FieldInput

A field value as written in YAML / JSON: a scalar in human notation or a structured value for TLV (options) and list fields.

  • scalars: 64, "192.168.1.1", 0x0800, syn|ack (flag names), ipv4 (enum variant names), auto. Hex byte strings must be quoted ("00 01 02");
  • TLV: a list of items, each a bare variant name (nop), a one-key map ({ mss: 1460 }, { timestamps: { tsval: 1, tsecr: 0 } }) or the explicit form { type: 99, data: "01 02" } / { name: mss, length: 4, fields: { value: 1 } };
  • list: a list of scalars, or of maps for lists of field groups.
値説明
nullEmpty (~): e.g. an option without value.
booleantrue / false (1 / 0).
integerUnsigned integer.
integerNegative integer.
stringText in human notation.
FieldInput[]Sequence (TLV items, list elements).
map<string, FieldInput>Mapping (TLV item, field group).

Generator

Field value generator, tagged by kind.

kind: "range"

キー型必須説明
endstring | integerはい
kind"range"はい
startstring | integerはい
stepinteger

kind: "list"

キー型必須説明
kind"list"はい
values(string | integer)[]はい

kind: "random"

キー型必須説明
kind"random"はい
maxstring | integer
minstring | integer
seedinteger

kind: "random_mac"

キー型必須説明
kind"random_mac"はい
ouistring
seedinteger

kind: "counter"

キー型必須説明
kind"counter"はい
startinteger
stepinteger
wrapinteger

kind: "file"

キー型必須説明
kind"file"はい
pathstringはい

kind: "expr"

キー型必須説明
exprstringはい
kind"expr"はい

GeneratorSpec

A generator of a layer field: either a full [Generator] or the human shorthand of the GUI (192.168.1.1-192.168.5.254, 10.0.0.0/24, 1,5,9, 00:11:22:*).

値説明
GeneratorFull form, e.g. { kind: range, start: 192.168.1.1, end: 192.168.1.254 }.
stringShorthand parsed with wpg_core::notation::parse_generator.

Meta

Template metadata.

キー型必須説明
authorstring | nullAuthor.
createdstring | nullCreation timestamp (RFC 3339 or a plain date).
descriptionstring | nullFree-form description.
descriptionsmap<string, ``string``>Localised descriptions keyed by language tag (ja, en).
namestringはいDisplay name.
tagsstring``[]Tags for search / grouping.

PacketOptions

Frame-level packet options.

キー型必須説明
fcsFcsChoiceFrame check sequence.
pad_to_minbooleanZero-pad to the minimum frame length (Ethernet: 60 octets).

Scalar

A YAML scalar; variable defaults may be written as numbers.

値説明
string
integer
integer
boolean

StreamMode

How generators of several fields are combined (see wpg_core::stream::Mode).

値説明
"zip"Advance all generators in lockstep.
"product"Cartesian product, the last generator varies fastest.
"nested"Product with an explicit priority given by [StreamOptions::order].

StreamOptions

Stream expansion options.

キー型必須説明
countinteger | nullNumber of packets; defaults to tx.count, then to the natural length.
modeStreamModeCombination mode of the generators.
orderstring``[]For nested: fields from the slowest to the fastest, as <layer>.<field> where <layer> is a 0-based index, a protocol id (ipv4.src) or the n-th occurrence of a protocol (ipv4[1].src).
seedinteger | nullSeed for random generators.

TemplateLayer

One layer of the template’s packet.

キー型必須説明
fieldsmap<string, FieldInput>Manually set fields in human notation (192.168.1.1, 0x0800, syn|ack, ${src_ip}). Unlisted fields use their default or Auto value; the literal auto also leaves a field Auto. TLV / list fields take structured values.
generatorsmap<string, GeneratorSpec>Generators varying fields across the stream.
protocolstringはいProtocol id from the catalog (e.g. ethernet2).

TxProfile

How the stream is transmitted.

キー型必須説明
burstinteger | nullBurst size in packets.
countinteger | nullNumber of packets (None together with duration_secs: None = infinite).
duration_secsnumber | nullDuration limit in seconds.
ratestring | nullRate in human notation: 1000pps, 1Mpps, 10Gbps, 50%.

VarType

Value type of a template variable (the field-type names of the protocol catalog).

値説明
"uint"Unsigned integer: 64, 0x0800, 0b101.
"int"Signed integer: -1, +5, 0x10.
"bool"true / false (or 1 / 0); substituted as 1 / 0.
"string"Any text.
"ipv4"IPv4 address.
"ipv6"IPv6 address.
"mac"MAC address.
"bytes"Octets in hex: "00 01 02".

Variable

A template argument (${name} placeholder) overridable at run time.

キー型必須説明
choicesScalar[]Allowed values; any other value is rejected.
defaultScalar | nullDefault value (human notation; numbers and booleans are accepted too).
descriptionstring | nullDescription shown in the GUI / CLI.
maxinteger | nullLargest allowed value (type: uint / int only).
mininteger | nullSmallest allowed value (type: uint / int only).
namestringはいPlaceholder name.
requiredbooleanA value must be given at run time; the variable has no default.
typeVarType | nullValue type; values (default, --var, job vars) are checked against it. Without a type any text is accepted.

API リファレンス

wpg-server は /api 以下で REST (JSON) API を提供し、リアルタイム統計・ジョブの状態変化・ログを WebSocket (GET /api/ws) で配信します。このページはサーバの OpenAPI ドキュメント (utoipa) から自動生成しています。起動中のサーバは同じドキュメントを /api/openapi.json で、Swagger UI を /api/docs/ で提供し、写しを docs/schema/openapi.json に置いています。POST /api/auth/login (初回は POST /api/auth/setup) でログインすると、以降は wpg_session クッキーで認証されます。POST / PUT / DELETE では GET /api/auth/status の CSRF トークンを X-CSRF-Token ヘッダでも送ってください。エラーは JSON オブジェクト error で、code、message (Accept-Language の言語)、details を持ちます。以下のエンドポイントとスキーマの説明はコード由来 (英語) です。

エンドポイント

タグエンドポイント概要
authPOST /api/auth/loginLogs in (rate limited per client address: 5 failures a minute, then an exponentially growing lock-out up to 15 minutes). Requires Content-Type: application/json.
authPOST /api/auth/logoutLogs out (needs X-CSRF-Token when the session is live) and clears the cookies.
authPOST /api/auth/setupFirst-run setup: sets the admin password and logs in. Only while no password is configured, and only from a loopback client unless the server runs with --allow-insecure. Requires Content-Type: application/json.
authGET /api/auth/statusAuthentication state of the caller (never requires a session).
authGET /api/tokensAPI tokens (admins: all; others: their own), oldest first.
authPOST /api/tokensCreates a token for the logged-in user, with that user’s role. The response is the only place the secret appears.
authDELETE /api/tokens/{id}Revokes (deletes) a token; requests with it fail from now on.
systemGET /api/healthLiveness probe.
systemGET /api/system/backendsTransmit backends of this build.
systemGET /api/system/doctorSelf-diagnosis (wpg doctor --json), with localised summary / fix.
systemGET /api/system/ifacesNetwork interfaces with usable (up, running, not loopback) and allowed (by tx.allowed_ifaces).
systemGET /api/versionBuild information.
protocolsGET /api/protocolsThe catalog in palette order.
protocolsGET /api/protocols/extensionsThe user-defined protocol files in use ([protocols] dirs, --protocols-dir; loaded at startup or by POST /api/protocols/reload): their definitions and bindings, so that the web UI can add them to its in-browser catalog. Empty without extensions.
protocolsPOST /api/protocols/reloadReads the user-defined protocol directories of the server again ([protocols] dirs, --protocols-dir) and switches the catalog to what they hold now; WebSocket clients get a protocols_changed event. Jobs that are already running keep the catalog they started with. On an error nothing changes. Admin only.
protocolsGET /api/protocols/{id}The full definition (wpg_core::ProtocolDef): fields with types, defaults, auto computations and bindings. Every description_key gets a localised description next to it.
packetsPOST /api/lintChecks a template (wpg template lint). A template that does not even parse is reported as a single error at path "".
packetsPOST /api/parseDecodes raw bytes into layers (Hex paste import).
packetsPOST /api/renderRenders packets of a template (preview).
templatesGET /api/templatesLists / searches templates.
templatesPOST /api/templatesCreates a template in the user directory (file name from meta.name).
templatesPOST /api/templates/importImports a .wpg.yaml (or JSON) document into the user directory.
templatesGET /api/templates/{id}One template (also marks it as recently used).
templatesPUT /api/templates/{id}Replaces a user template.
templatesDELETE /api/templates/{id}Deletes a user template.
templatesPOST /api/templates/{id}/duplicateCopies a template (library or user) into the user directory.
templatesGET /api/templates/{id}/exportDownloads a template as .wpg.yaml (the file itself, comments included).
templatesPOST /api/templates/{id}/favoriteSets (or, without a body, toggles) the favourite flag.
jobsGET /api/jobsAll live jobs (created, running and recently finished), newest first.
jobsPOST /api/jobsCreates (and by default starts) a job.
jobsGET /api/jobs/historyFinished jobs (last 100), newest first.
jobsGET /api/jobs/{id}One job (live or from the history).
jobsDELETE /api/jobs/{id}Removes a job (a running one is stopped first and recorded in the history).
jobsPOST /api/jobs/{id}/pausePauses a running job.
jobsPOST /api/jobs/{id}/resumeResumes a paused job.
jobsPOST /api/jobs/{id}/startStarts a job created with start: false.
jobsGET /api/jobs/{id}/statsLatest statistics snapshot of a job.
jobsPOST /api/jobs/{id}/stopStops a job (asynchronously; watch job_state or poll the job).
jobsGET /api/stats/overviewDashboard summary.
capturesGET /api/capturesAll captures (running and the last finished ones), newest first.
capturesPOST /api/capturesStarts a capture.
capturesGET /api/captures/backendsReceive backend availability on this build / OS.
capturesPOST /api/captures/filterChecks a capture filter without starting a capture.
capturesGET /api/captures/{id}One capture.
capturesDELETE /api/captures/{id}Removes a capture (a running one is stopped first; a saved pcapng file stays on disk).
capturesGET /api/captures/{id}/packetsThe first N matching frames of a capture (live while it runs).
capturesGET /api/captures/{id}/pcapngThe pcapng file of a finished capture started with save.
capturesPOST /api/captures/{id}/stopStops a running capture (asynchronously; watch capture_state).
eventsGET /api/wsWebSocket upgrade.
terminalGET /api/terminal/known-hostsTrusted SSH host keys (<data_dir>/terminal/known_hosts).
terminalDELETE /api/terminal/known-hosts/{host}/{port}Forgets the host key(s) of host:port (after a legitimate key change).
terminalGET /api/terminal/logsSession logs, newest first.
terminalGET /api/terminal/logs/{name}Downloads a session log (text/plain, also while it is being written).
terminalDELETE /api/terminal/logs/{name}Deletes a session log (not one that is being written).
terminalGET /api/terminal/statusConfiguration and running sessions (also when the terminal is disabled, so the UI can explain how to enable it).
terminalGET /api/terminal/wsOpens a terminal session (WebSocket). Send connect first; see TerminalClientMessage / TerminalServerMessage. Remote output arrives as binary frames, keystrokes may be sent as binary frames or input messages.
snmpGET /api/snmp/captureRecording state.
snmpPOST /api/snmp/captureStarts / stops the recording of every SNMP datagram this server sends or receives (requests, responses, traps), or clears it.
snmpGET /api/snmp/capture/downloadThe recorded frames as a pcap / pcapng file (Ethernet / IP / UDP synthesised around the real datagrams; placeholder MAC addresses).
snmpPOST /api/snmp/getGetRequest.
snmpPOST /api/snmp/getbulkGetBulkRequest (v2c / v3).
snmpPOST /api/snmp/getnextGetNextRequest.
snmpPOST /api/snmp/informSends an InformRequest (v2c / v3) and waits for the acknowledgement.
snmpGET /api/snmp/mibsLoaded MIB modules with their load state.
snmpPOST /api/snmp/mibsUploads MIB files (stored under <data_dir>/mibs, loaded at once).
snmpGET /api/snmp/mibs/nodeDetails of a MIB node (longest-prefix match for instances).
snmpGET /api/snmp/mibs/searchFinds MIB objects by name (for OID autocompletion).
snmpGET /api/snmp/mibs/treeOne level of the MIB tree.
snmpDELETE /api/snmp/mibs/{module}Deletes an uploaded module (its whole file). Bundled modules cannot be deleted.
snmpGET /api/snmp/receiverReceiver state.
snmpPOST /api/snmp/receiver/startStarts (or restarts) the trap / inform receiver.
snmpPOST /api/snmp/receiver/stopStops the receiver.
snmpPOST /api/snmp/setSetRequest.
snmpGET /api/snmp/statusWhether the SNMP tool is enabled, with MIB / receiver / recording summaries.
snmpPOST /api/snmp/trapSends a trap (v1 Trap-PDU, SNMPv2-Trap, or a v3 trap with this server as the authoritative engine). The result lists the bindings sent.
snmpGET /api/snmp/trapsReceived notifications, newest first (also pushed as snmp_trap events on the WebSocket).
snmpDELETE /api/snmp/trapsForgets the received notifications.
snmpPOST /api/snmp/walkWalks one or more subtrees (GetBulk on v2c / v3, GetNext on v1); conceptual tables in the result are also returned as rows × columns.
dhcpGET /api/dhcpState, settings and counters.
dhcpPUT /api/dhcpSaves the settings; a running server restarts with them.
dhcpGET /api/dhcp/activityRecent requests and replies, newest first (wpg_dhcp::Activity).
dhcpDELETE /api/dhcp/activityClears the activity log.
dhcpGET /api/dhcp/leasesLeases (wpg_dhcp::Lease: kind v4 / na / pd, addr, plen, client, iaid, mac, hostname, state, expires, updated).
dhcpDELETE /api/dhcp/leasesDeletes one lease (key) or all of them. The client keeps using the address until it renews.
dhcpPOST /api/dhcp/startStarts (or restarts) the server; it also starts at boot until stopped.
dhcpPOST /api/dhcp/stopStops the server (and its start at boot).

auth

ログイン、ログアウト、初回セットアップ。

POST /api/auth/login

Logs in (rate limited per client address: 5 failures a minute, then an exponentially growing lock-out up to 15 minutes). Requires Content-Type: application/json.

リクエスト本文: application/json LoginRequest

レスポンス

ステータス説明本文
204Logged in; Set-Cookie: wpg_session, wpg_csrf
401unauthorized / setup_requiredapplication/json ErrorBody
415Not JSONapplication/json ErrorBody
429rate_limited: details.retry_after_secs, Retry-Afterapplication/json ErrorBody

POST /api/auth/logout

Logs out (needs X-CSRF-Token when the session is live) and clears the cookies.

レスポンス

ステータス説明本文
204Logged out
403csrf_failedapplication/json ErrorBody

POST /api/auth/setup

First-run setup: sets the admin password and logs in. Only while no password is configured, and only from a loopback client unless the server runs with --allow-insecure. Requires Content-Type: application/json.

リクエスト本文: application/json SetupRequest

レスポンス

ステータス説明本文
204Password set; Set-Cookie: wpg_session, wpg_csrf
400Passwords differ / too shortapplication/json ErrorBody
403forbidden: remote clientapplication/json ErrorBody
409already_configuredapplication/json ErrorBody
415Not JSONapplication/json ErrorBody

GET /api/auth/status

Authentication state of the caller (never requires a session).

レスポンス

ステータス説明本文
200Stateapplication/json AuthStatus

GET /api/tokens

API tokens (admins: all; others: their own), oldest first.

レスポンス

ステータス説明本文
200Tokens (without secrets)application/json TokenInfo[]
403forbidden: bearer requests cannot manage tokensapplication/json ErrorBody

POST /api/tokens

Creates a token for the logged-in user, with that user’s role. The response is the only place the secret appears.

リクエスト本文: application/json CreateToken

レスポンス

ステータス説明本文
201Createdapplication/json CreatedToken
400Invalid name or expiryapplication/json ErrorBody
403forbidden: bearer requests cannot manage tokensapplication/json ErrorBody

DELETE /api/tokens/{id}

Revokes (deletes) a token; requests with it fail from now on.

パラメータ

名前位置型必須説明
idpathintegerはいToken id

レスポンス

ステータス説明本文
204Revoked
403forbidden: bearer requests cannot manage tokensapplication/json ErrorBody
404Unknown idapplication/json ErrorBody

system

ヘルスチェック、バージョン、インタフェース、自己診断、送出バックエンド。

GET /api/health

Liveness probe.

レスポンス

ステータス説明本文
200The server is upapplication/json Health

GET /api/system/backends

Transmit backends of this build.

レスポンス

ステータス説明本文
200Backendsapplication/json Backends

GET /api/system/doctor

Self-diagnosis (wpg doctor --json), with localised summary / fix.

レスポンス

ステータス説明本文
200{ ok, locale, checks: [...] }application/json object

GET /api/system/ifaces

Network interfaces with usable (up, running, not loopback) and allowed (by tx.allowed_ifaces).

パラメータ

名前位置型必須説明
refreshquerybooleanRe-read the interfaces instead of using the few-seconds cache.

レスポンス

ステータス説明本文
200Interfaces (wpg ifaces --json plus usable / allowed)application/json object``[]
500Enumeration failedapplication/json ErrorBody

GET /api/version

Build information.

レスポンス

ステータス説明本文
200Version and build infoapplication/json VersionInfo

protocols

プロトコルカタログ (プロトコルリファレンス参照)。

GET /api/protocols

The catalog in palette order.

レスポンス

ステータス説明本文
200Catalog summaryapplication/json ProtocolSummary[]

GET /api/protocols/extensions

The user-defined protocol files in use ([protocols] dirs, --protocols-dir; loaded at startup or by POST /api/protocols/reload): their definitions and bindings, so that the web UI can add them to its in-browser catalog. Empty without extensions.

レスポンス

ステータス説明本文
200Extension files (protocols, bind, source)application/json object``[]

POST /api/protocols/reload

Reads the user-defined protocol directories of the server again ([protocols] dirs, --protocols-dir) and switches the catalog to what they hold now; WebSocket clients get a protocols_changed event. Jobs that are already running keep the catalog they started with. On an error nothing changes. Admin only.

レスポンス

ステータス説明本文
200Loaded filesapplication/json ReloadResult
403forbidden: not an adminapplication/json ErrorBody
422invalid_protocols: a file does not load (details.file, details.reason)application/json ErrorBody

GET /api/protocols/{id}

The full definition (wpg_core::ProtocolDef): fields with types, defaults, auto computations and bindings. Every description_key gets a localised description next to it.

パラメータ

名前位置型必須説明
idpathstringはいProtocol id

レスポンス

ステータス説明本文
200Protocol definition IRapplication/json object
404Unknown protocolapplication/json ErrorBody

packets

パケットの合成、デコード、lint。

POST /api/lint

Checks a template (wpg template lint). A template that does not even parse is reported as a single error at path "".

リクエスト本文: application/json LintRequest

レスポンス

ステータス説明本文
200Lint resultapplication/json LintResponse
400Bad requestapplication/json ErrorBody

POST /api/parse

Decodes raw bytes into layers (Hex paste import).

リクエスト本文: application/json ParseRequest

レスポンス

ステータス説明本文
200Decoded packetapplication/json ParseResponse
400Invalid hexapplication/json ErrorBody
422Cannot be decodedapplication/json ErrorBody

POST /api/render

Renders packets of a template (preview).

リクエスト本文: application/json RenderRequest

レスポンス

ステータス説明本文
200Rendered packetsapplication/json RenderResponse
400Bad requestapplication/json ErrorBody
422Invalid template (details: lint issues)application/json ErrorBody

templates

テンプレートライブラリ。

GET /api/templates

Lists / searches templates.

パラメータ

名前位置型必須説明
qquerystringCase-insensitive search in id, name, descriptions, tags and protocols.
tagquerystringRequired tag(s), comma separated.
favoritequerybooleanOnly favourites (true) / non-favourites (false).
sourcequeryTemplateSourceOnly user or library templates.

レスポンス

ステータス説明本文
200Templatesapplication/json TemplateList

POST /api/templates

Creates a template in the user directory (file name from meta.name).

リクエスト本文: application/json object — Template (JSON form of .wpg.yaml)

レスポンス

ステータス説明本文
201Createdapplication/json TemplateDetail
422Invalid templateapplication/json ErrorBody

POST /api/templates/import

Imports a .wpg.yaml (or JSON) document into the user directory.

リクエスト本文: text/yaml string — Template YAML

レスポンス

ステータス説明本文
201Importedapplication/json TemplateDetail
422Invalid templateapplication/json ErrorBody

GET /api/templates/{id}

One template (also marks it as recently used).

パラメータ

名前位置型必須説明
idpathstringはいTemplate id

レスポンス

ステータス説明本文
200Templateapplication/json TemplateDetail
404Unknown idapplication/json ErrorBody
422The file does not parseapplication/json ErrorBody

PUT /api/templates/{id}

Replaces a user template.

パラメータ

名前位置型必須説明
idpathstringはいTemplate id

リクエスト本文: application/json object — Template (JSON form of .wpg.yaml)

レスポンス

ステータス説明本文
200Updatedapplication/json TemplateDetail
403Read-only library templateapplication/json ErrorBody
404Unknown idapplication/json ErrorBody
422Invalid templateapplication/json ErrorBody

DELETE /api/templates/{id}

Deletes a user template.

パラメータ

名前位置型必須説明
idpathstringはいTemplate id

レスポンス

ステータス説明本文
204Deleted
403Read-only library templateapplication/json ErrorBody
404Unknown idapplication/json ErrorBody

POST /api/templates/{id}/duplicate

Copies a template (library or user) into the user directory.

パラメータ

名前位置型必須説明
idpathstringはいTemplate id

レスポンス

ステータス説明本文
201The copyapplication/json TemplateDetail
404Unknown idapplication/json ErrorBody

GET /api/templates/{id}/export

Downloads a template as .wpg.yaml (the file itself, comments included).

パラメータ

名前位置型必須説明
idpathstringはいTemplate id

レスポンス

ステータス説明本文
200YAMLtext/yaml string
404Unknown idapplication/json ErrorBody

POST /api/templates/{id}/favorite

Sets (or, without a body, toggles) the favourite flag.

パラメータ

名前位置型必須説明
idpathstringはいTemplate id

リクエスト本文: application/json Favorite | null — {"favorite": bool}; empty or null = toggle

レスポンス

ステータス説明本文
200New stateapplication/json FavoriteState
404Unknown idapplication/json ErrorBody

jobs

送出ジョブと統計。

GET /api/jobs

All live jobs (created, running and recently finished), newest first.

レスポンス

ステータス説明本文
200Jobsapplication/json JobInfo[]

POST /api/jobs

Creates (and by default starts) a job.

リクエスト本文: application/json CreateJob

レスポンス

ステータス説明本文
201Createdapplication/json JobInfo
400Invalid jobapplication/json ErrorBody
403policy_violation: interface or rate not allowedapplication/json ErrorBody
404Unknown template idapplication/json ErrorBody
422Invalid templateapplication/json ErrorBody
502backend_error: the backend could not be openedapplication/json ErrorBody

GET /api/jobs/history

Finished jobs (last 100), newest first.

レスポンス

ステータス説明本文
200Finished jobsapplication/json JobInfo[]

GET /api/jobs/{id}

One job (live or from the history).

パラメータ

名前位置型必須説明
idpathstringはいJob id

レスポンス

ステータス説明本文
200Jobapplication/json JobInfo
404Unknown idapplication/json ErrorBody

DELETE /api/jobs/{id}

Removes a job (a running one is stopped first and recorded in the history).

パラメータ

名前位置型必須説明
idpathstringはいJob id

レスポンス

ステータス説明本文
204Deleted
404Unknown idapplication/json ErrorBody

POST /api/jobs/{id}/pause

Pauses a running job.

パラメータ

名前位置型必須説明
idpathstringはいJob id

レスポンス

ステータス説明本文
200Pausingapplication/json JobInfo
404Unknown idapplication/json ErrorBody
409Not runningapplication/json ErrorBody

POST /api/jobs/{id}/resume

Resumes a paused job.

パラメータ

名前位置型必須説明
idpathstringはいJob id

レスポンス

ステータス説明本文
200Resumingapplication/json JobInfo
404Unknown idapplication/json ErrorBody
409Not runningapplication/json ErrorBody

POST /api/jobs/{id}/start

Starts a job created with start: false.

パラメータ

名前位置型必須説明
idpathstringはいJob id

レスポンス

ステータス説明本文
200Startedapplication/json JobInfo
404Unknown idapplication/json ErrorBody
409Not in state createdapplication/json ErrorBody
502Backend errorapplication/json ErrorBody

GET /api/jobs/{id}/stats

Latest statistics snapshot of a job.

パラメータ

名前位置型必須説明
idpathstringはいJob id

レスポンス

ステータス説明本文
200wpg_tx::job::StatsSnapshotapplication/json object
404Unknown idapplication/json ErrorBody
409Never startedapplication/json ErrorBody

POST /api/jobs/{id}/stop

Stops a job (asynchronously; watch job_state or poll the job).

パラメータ

名前位置型必須説明
idpathstringはいJob id

レスポンス

ステータス説明本文
200Stoppingapplication/json JobInfo
404Unknown idapplication/json ErrorBody
409Already endedapplication/json ErrorBody

GET /api/stats/overview

Dashboard summary.

レスポンス

ステータス説明本文
200Dashboard dataapplication/json Overview

captures

Receive counters, captured frames and signature verification

GET /api/captures

All captures (running and the last finished ones), newest first.

レスポンス

ステータス説明本文
200Capturesapplication/json CaptureInfo[]

POST /api/captures

Starts a capture.

リクエスト本文: application/json CaptureSpec

レスポンス

ステータス説明本文
201Startedapplication/json CaptureInfo
400Invalid spec or filterapplication/json ErrorBody
404Unknown interface / input fileapplication/json ErrorBody
502backend_error: the backend could not be openedapplication/json ErrorBody

GET /api/captures/backends

Receive backend availability on this build / OS.

レスポンス

ステータス説明本文
200Backends (name, available, reason)application/json object``[]

POST /api/captures/filter

Checks a capture filter without starting a capture.

リクエスト本文: application/json FilterCheck

レスポンス

ステータス説明本文
200Resultapplication/json FilterCheckResult

GET /api/captures/{id}

One capture.

パラメータ

名前位置型必須説明
idpathstringはいCapture id

レスポンス

ステータス説明本文
200Captureapplication/json CaptureInfo
404Unknown idapplication/json ErrorBody

DELETE /api/captures/{id}

Removes a capture (a running one is stopped first; a saved pcapng file stays on disk).

パラメータ

名前位置型必須説明
idpathstringはいCapture id

レスポンス

ステータス説明本文
204Deleted
404Unknown idapplication/json ErrorBody

GET /api/captures/{id}/packets

The first N matching frames of a capture (live while it runs).

パラメータ

名前位置型必須説明
idpathstringはいCapture id

レスポンス

ステータス説明本文
200Kept framesapplication/json CapturedFrame[]
404Unknown idapplication/json ErrorBody

GET /api/captures/{id}/pcapng

The pcapng file of a finished capture started with save.

パラメータ

名前位置型必須説明
idpathstringはいCapture id

レスポンス

ステータス説明本文
200pcapng fileapplication/octet-stream
404Unknown id or nothing savedapplication/json ErrorBody
409Still runningapplication/json ErrorBody

POST /api/captures/{id}/stop

Stops a running capture (asynchronously; watch capture_state).

パラメータ

名前位置型必須説明
idpathstringはいCapture id

レスポンス

ステータス説明本文
200Stoppingapplication/json CaptureInfo
404Unknown idapplication/json ErrorBody
409Already endedapplication/json ErrorBody

events

WebSocket のイベント配信。

GET /api/ws

WebSocket upgrade.

レスポンス

ステータス説明本文
101WebSocket: JSON ServerEvent messagesapplication/json ServerEvent

terminal

Web terminal: SSH / Telnet sessions, session logs, host keys

GET /api/terminal/known-hosts

Trusted SSH host keys (<data_dir>/terminal/known_hosts).

レスポンス

ステータス説明本文
200Host keysapplication/json KnownHost[]

DELETE /api/terminal/known-hosts/{host}/{port}

Forgets the host key(s) of host:port (after a legitimate key change).

パラメータ

名前位置型必須説明
hostpathstringはいHost as stored
portpathintegerはいPort

レスポンス

ステータス説明本文
204Removed
404No key storedapplication/json ErrorBody

GET /api/terminal/logs

Session logs, newest first.

レスポンス

ステータス説明本文
200Logsapplication/json LogInfo[]

GET /api/terminal/logs/{name}

Downloads a session log (text/plain, also while it is being written).

パラメータ

名前位置型必須説明
namepathstringはいLog file name

レスポンス

ステータス説明本文
200The logtext/plain
404Unknown logapplication/json ErrorBody

DELETE /api/terminal/logs/{name}

Deletes a session log (not one that is being written).

パラメータ

名前位置型必須説明
namepathstringはいLog file name

レスポンス

ステータス説明本文
204Deleted
404Unknown logapplication/json ErrorBody
409invalid_state: the session is still recordingapplication/json ErrorBody

GET /api/terminal/status

Configuration and running sessions (also when the terminal is disabled, so the UI can explain how to enable it).

レスポンス

ステータス説明本文
200Terminal statusapplication/json TerminalStatus

GET /api/terminal/ws

Opens a terminal session (WebSocket). Send connect first; see TerminalClientMessage / TerminalServerMessage. Remote output arrives as binary frames, keystrokes may be sent as binary frames or input messages.

レスポンス

ステータス説明本文
101WebSocket: TerminalServerMessage JSON + binary outputapplication/json TerminalServerMessage
403terminal_disabled (terminal.enabled = false) or forbidden (viewer role)application/json ErrorBody

snmp

SNMP manager tool: Get / Walk / Set / traps, MIBs, trap receiver, pcap recording

GET /api/snmp/capture

Recording state.

レスポンス

ステータス説明本文
200Stateapplication/json CaptureStatus

POST /api/snmp/capture

Starts / stops the recording of every SNMP datagram this server sends or receives (requests, responses, traps), or clears it.

リクエスト本文: application/json CaptureControl

レスポンス

ステータス説明本文
200Stateapplication/json CaptureStatus

GET /api/snmp/capture/download

The recorded frames as a pcap / pcapng file (Ethernet / IP / UDP synthesised around the real datagrams; placeholder MAC addresses).

パラメータ

名前位置型必須説明
formatpathstring | nullはいpcap (default) or pcapng.

レスポンス

ステータス説明本文
200pcap / pcapng fileapplication/octet-stream
400Unknown formatapplication/json ErrorBody

POST /api/snmp/get

GetRequest.

リクエスト本文: application/json SnmpOidsRequest

レスポンス

ステータス説明本文
200Response (check error_status)application/json SnmpResult
400Bad target / OID / v3 settingsapplication/json ErrorBody
502snmp_error: Report PDU, authentication or decoding failureapplication/json ErrorBody
504snmp_error: no responseapplication/json ErrorBody

POST /api/snmp/getbulk

GetBulkRequest (v2c / v3).

リクエスト本文: application/json SnmpBulkRequest

レスポンス

ステータス説明本文
200Responseapplication/json SnmpResult
400Bad request (also: GetBulk on v1)application/json ErrorBody
502snmp_errorapplication/json ErrorBody
504snmp_error: no responseapplication/json ErrorBody

POST /api/snmp/getnext

GetNextRequest.

リクエスト本文: application/json SnmpOidsRequest

レスポンス

ステータス説明本文
200Responseapplication/json SnmpResult
400Bad requestapplication/json ErrorBody
502snmp_errorapplication/json ErrorBody
504snmp_error: no responseapplication/json ErrorBody

POST /api/snmp/inform

Sends an InformRequest (v2c / v3) and waits for the acknowledgement.

リクエスト本文: application/json SnmpNotifyRequest

レスポンス

ステータス説明本文
200Acknowledged (the Response’s bindings)application/json SnmpResult
400Bad request (also: inform on v1)application/json ErrorBody
502snmp_errorapplication/json ErrorBody
504snmp_error: not acknowledgedapplication/json ErrorBody

GET /api/snmp/mibs

Loaded MIB modules with their load state.

レスポンス

ステータス説明本文
200Modulesapplication/json MibModuleOut[]

POST /api/snmp/mibs

Uploads MIB files (stored under <data_dir>/mibs, loaded at once).

リクエスト本文: application/json MibUpload

レスポンス

ステータス説明本文
200Per-file result and module stateapplication/json MibUploadResult
400Bad file name / too largeapplication/json ErrorBody

GET /api/snmp/mibs/node

Details of a MIB node (longest-prefix match for instances).

パラメータ

名前位置型必須説明
idpathstringはいName (ifOperStatus, IF-MIB::ifOperStatus, ifOperStatus.3) or dotted OID.

レスポンス

ステータス説明本文
200Nodeapplication/json NodeOut
400Unparsable idapplication/json ErrorBody
404No MIB defines itapplication/json ErrorBody

GET /api/snmp/mibs/search

Finds MIB objects by name (for OID autocompletion).

パラメータ

名前位置型必須説明
qpathstringはいPart of a descriptor (ifOper, IF-MIB::ifH).
limitpathinteger | nullはいMost hits (default 20, at most 200).

レスポンス

ステータス説明本文
200Hits, prefix matches firstapplication/json SearchHit[]

GET /api/snmp/mibs/tree

One level of the MIB tree.

パラメータ

名前位置型必須説明
oidpathstring | nullはいParent (name or dotted OID; empty = the roots).
modulepathstring | nullはいOnly the branches leading to definitions of this module; without oid, the module’s top nodes.

レスポンス

ステータス説明本文
200Childrenapplication/json TreeChildOut[]
400Unknown name or moduleapplication/json ErrorBody

DELETE /api/snmp/mibs/{module}

Deletes an uploaded module (its whole file). Bundled modules cannot be deleted.

パラメータ

名前位置型必須説明
modulepathstringはいModule name

レスポンス

ステータス説明本文
200Deletedapplication/json MibDeleted
404Unknown moduleapplication/json ErrorBody
409read_only: bundled moduleapplication/json ErrorBody

GET /api/snmp/receiver

Receiver state.

レスポンス

ステータス説明本文
200Stateapplication/json ReceiverStatus

POST /api/snmp/receiver/start

Starts (or restarts) the trap / inform receiver.

リクエスト本文: application/json ReceiverStart

レスポンス

ステータス説明本文
200Listeningapplication/json ReceiverStatus
400Bad address / usersapplication/json ErrorBody
502backend_error: cannot bind (privileged port, in use)application/json ErrorBody

POST /api/snmp/receiver/stop

Stops the receiver.

レスポンス

ステータス説明本文
200Stoppedapplication/json ReceiverStatus

POST /api/snmp/set

SetRequest.

リクエスト本文: application/json SnmpSetRequest

レスポンス

ステータス説明本文
200Response (check error_status: notWritable, wrongType, …)application/json SnmpResult
400Bad target / OID / valueapplication/json ErrorBody
502snmp_errorapplication/json ErrorBody
504snmp_error: no responseapplication/json ErrorBody

GET /api/snmp/status

Whether the SNMP tool is enabled, with MIB / receiver / recording summaries.

レスポンス

ステータス説明本文
200Statusapplication/json SnmpStatus

POST /api/snmp/trap

Sends a trap (v1 Trap-PDU, SNMPv2-Trap, or a v3 trap with this server as the authoritative engine). The result lists the bindings sent.

リクエスト本文: application/json SnmpNotifyRequest

レスポンス

ステータス説明本文
200Sentapplication/json SnmpResult
400Bad requestapplication/json ErrorBody

GET /api/snmp/traps

Received notifications, newest first (also pushed as snmp_trap events on the WebSocket).

パラメータ

名前位置型必須説明
limitpathinteger | nullはいMost notifications (default 200, at most 1000).

レスポンス

ステータス説明本文
200Notificationsapplication/json TrapOut[]

DELETE /api/snmp/traps

Forgets the received notifications.

レスポンス

ステータス説明本文
204Cleared

POST /api/snmp/walk

Walks one or more subtrees (GetBulk on v2c / v3, GetNext on v1); conceptual tables in the result are also returned as rows × columns.

リクエスト本文: application/json SnmpWalkRequest

レスポンス

ステータス説明本文
200Bindings and tablesapplication/json SnmpResult
400Bad requestapplication/json ErrorBody
502snmp_errorapplication/json ErrorBody
504snmp_error: no responseapplication/json ErrorBody

dhcp

DHCP server tool: DHCPv4 / DHCPv6 (IA_NA, IA_PD) pools and options, router advertisements, leases, activity

GET /api/dhcp

State, settings and counters.

レスポンス

ステータス説明本文
200Stateapplication/json DhcpStatus
404dhcp.enabled = falseapplication/json ErrorBody

PUT /api/dhcp

Saves the settings; a running server restarts with them.

リクエスト本文: application/json DhcpUpdate

レスポンス

ステータス説明本文
200Savedapplication/json DhcpStatus
400Invalid settings (details: [{ field, message }])application/json ErrorBody
403policy_violation: interface not in tx.allowed_ifacesapplication/json ErrorBody
502backend_error: the restart failedapplication/json ErrorBody

GET /api/dhcp/activity

Recent requests and replies, newest first (wpg_dhcp::Activity).

パラメータ

名前位置型必須説明
limitpathinteger | nullはいMost entries returned (newest first; default 200).

レスポンス

ステータス説明本文
200Activityapplication/json object``[]

DELETE /api/dhcp/activity

Clears the activity log.

レスポンス

ステータス説明本文
204Cleared

GET /api/dhcp/leases

Leases (wpg_dhcp::Lease: kind v4 / na / pd, addr, plen, client, iaid, mac, hostname, state, expires, updated).

レスポンス

ステータス説明本文
200Leasesapplication/json object``[]

DELETE /api/dhcp/leases

Deletes one lease (key) or all of them. The client keeps using the address until it renews.

パラメータ

名前位置型必須説明
keypathstring | nullはいThe lease (192.168.100.10, 2001:db8::10, 2001:db8:100::/56); absent: every lease.

レスポンス

ステータス説明本文
204Deleted
404No such leaseapplication/json ErrorBody

POST /api/dhcp/start

Starts (or restarts) the server; it also starts at boot until stopped.

レスポンス

ステータス説明本文
200Runningapplication/json DhcpStatus
400No / unknown interface, invalid settingsapplication/json ErrorBody
502backend_error: sockets (ports 67 / 547 need CAP_NET_BIND_SERVICE, RA CAP_NET_RAW; Linux only)application/json ErrorBody

POST /api/dhcp/stop

Stops the server (and its start at boot).

レスポンス

ステータス説明本文
200Stoppedapplication/json DhcpStatus

スキーマ

上記で参照しているリクエスト・レスポンス本文の型です。

ActiveSession

A running session (GET /api/terminal/status).

キー型必須説明
hoststringはいTarget host as entered.
idstringはいSession id.
logstring | nullLog file being written, if recording.
portintegerはいTarget port.
protocolProtocolはいProtocol.
startedintegerはいStart (Unix seconds).
userstringはいwpg user who opened it.
viastring``[]SSH jump hosts in order (user@host:port), empty for a direct session.

AuthStatus

GET /api/auth/status.

キー型必須説明
authenticatedbooleanはいThe request carries a valid session.
configuredbooleanはいA password exists (configured or set on the setup screen).
csrf_tokenstring | nullCSRF token to send as X-CSRF-Token on POST / PUT / DELETE (also in the wpg_csrf cookie); null when not logged in.
setup_requiredbooleanはいNo password yet: show the setup screen (POST /api/auth/setup).
userUserInfo | null

BackendItem

One transmit backend.

キー型必須説明
availablebooleanはいCompiled in and supported on this OS (privileges not checked).
multi_workerbooleanはいSeveral TX workers per job.
namestringはいName (null, pcapfile, afpacket, pcap, afxdp, dpdk).
reasonstring | nullWhy it is unavailable / requirements.

Backends

GET /api/system/backends response body.

キー型必須説明
backendsBackendItem[]はいAll backends.
defaultstringはいBackend used when a job names none.

CaptureControl

POST /api/snmp/capture body.

キー型必須説明
clearbooleanDiscard the recorded frames first.
enabledboolean | nullStart (true) / stop (false) recording.

CaptureInfo

A capture as returned by the API.

キー型必須説明
backendstringはいResolved backend.
filterstringはいNormalised filter text (empty = every frame).
finishedinteger | nullEnd time, Unix milliseconds.
idstringはいCapture id.
ifacestringはいResolved interface (input path for pcapfile).
namestringはいDisplay name (spec.name, else <backend>:<iface>).
savedbooleanはいWhether a pcapng file was written (download with GET /api/captures/{id}/pcapng).
specCaptureSpecはいThe request.
startedintegerはいStart time, Unix milliseconds.
statsobject | nullLatest statistics (wpg_rx::RxSnapshot).
statusobjectはい{ "state": "running" }, { "state": "finished", "detail": "count_reached" | "duration_elapsed" | "end_of_input" | "stopped" }, { "state": "failed", "detail": "<error>" }.

CaptureSpec

What to capture (all fields are optional).

キー型必須説明
backendstring | nullBackend: afpacket, pcap, pcapfile, null (default: afpacket on Linux, else pcap).
countinteger | nullStop after this many matching frames.
durationstring | nullStop after this long, e.g. 10s, 2m.
filterstring | nulltcpdump-style filter (udp port 5001 and wpg); empty = every frame.
ifacestring | nullInterface (any = every interface with afpacket); for pcapfile the name of a capture file under <data_dir>/captures (e.g. a dry-run output).
include_outgoingbooleanAlso count frames this host transmits.
keepintegerMatching frames kept for display (default 100, at most 10000).
namestring | nullDisplay name.
promiscbooleanPromiscuous mode.
savestring | nullSave the matching frames as a pcapng file of this name under <data_dir>/captures.
verifybooleanCheck the signatures of matching frames (loss / order / latency).

CaptureStatus

pcap recording state.

キー型必須説明
droppedintegerはいFrames dropped because the buffer was full.
enabledbooleanはいRecording.
framesintegerはいKept frames.

CapturedFrame

One kept frame.

キー型必須説明
hexstringはいCaptured octets as lower-case hex (decode with POST /api/parse).
indexintegerはいPosition among the matching frames (0-based).
lenintegerはいOriginal length.
signatureobject | nullThe frame’s signature (stream_id, seq, ts_ns), if any.
ts_nsintegerはいCapture time, nanoseconds since the Unix epoch.

ClientMessage

Client → server message.

type: "subscribe"

Selects the jobs whose stats / job_state events are sent.

キー型必須説明
jobsobject"all" or a list of job ids.
logsboolean | nullReceive log events (default true).
type"subscribe"はい

CreateJob

POST /api/jobs body: a [JobSpec] plus start.

キー型必須説明
startbooleanStart immediately (default true); false leaves it in state created.

CreateToken

POST /api/tokens body.

キー型必須説明
expires_in_daysinteger | nullExpiry in days (1 to 3650); omitted or null: never expires.
namestringはいName, to recognise the token later (1 to 100 characters).

CreatedToken

POST /api/tokens response.

キー型必須説明
secretstringはいThe secret to send as Authorization: Bearer <secret>. Only this response contains it.
tokenTokenInfoはいThe stored token.

DhcpStatus

GET /api/dhcp.

キー型必須説明
added_addressesstring``[]Addresses this server put on the interface (removed when it stops).
enabledbooleanはいdhcp.enabled.
errorstring | nullWhy the last start (at boot) failed.
ifacestringはいInterface used (pinned or chosen; empty: none chosen yet).
leasesintegerはいLeases in the table.
pinned_ifacestring | nulldhcp.iface (fixed at deploy time); the screen cannot change it.
runningbooleanはいAnswering.
server_duidstring | nullDHCPv6 server DUID in use.
server_ipstring | nullDHCPv4 server identifier in use.
settingsobjectはいPools and options (wpg_dhcp::Settings).
started_msinteger | nullStart time (milliseconds since the Unix epoch).
statsobjectはいPacket counters of the running server.
supportedbooleanはいBuilt for Linux (elsewhere the server cannot start).

DhcpUpdate

PUT /api/dhcp body.

キー型必須説明
ifacestring | nullInterface to answer on (ignored when dhcp.iface pins one; must be allowed by tx.allowed_ifaces).
settingsobjectはいPools and options (wpg_dhcp::Settings: v4, v6).

EndReason

Why a job ended normally (mirrors wpg_tx::job::FinishReason).

型: "count_reached" | "duration_elapsed" | "source_exhausted" | "stopped"

ErrorBody

{ "error": ... } body (OpenAPI schema of every error response).

キー型必須説明
errorErrorInfoはいThe error.

ErrorInfo

Error object.

キー型必須説明
codestringはいStable machine code: not_found, bad_request, invalid_template, policy_violation, read_only, invalid_state, backend_error, unauthorized, setup_required, rate_limited, csrf_failed, forbidden, already_configured, terminal_disabled, snmp_error, internal.
detailsanyExtra data, e.g. the lint issues of an invalid template.
messagestringはいHuman readable message in the language of Accept-Language.

ExtensionFile

One loaded extension file.

キー型必須説明
bindingsintegerはいNumber of its bind entries.
protocolsstring``[]はいIds of the protocols it defines.
sourcestringはいThe file.

Favorite

Body of POST /api/templates/{id}/favorite (empty body = toggle).

キー型必須説明
favoritebooleanはいNew value.

FavoriteState

POST /api/templates/{id}/favorite response.

キー型必須説明
favoritebooleanはいCurrent value.
idstringはいTemplate id.

FilterCheck

POST /api/captures/filter request.

キー型必須説明
filterstringはいFilter text.

FilterCheckResult

POST /api/captures/filter response.

キー型必須説明
errorstring | nullWhat is wrong (when invalid).
normalizedstring | nullNormalised filter text (when valid).
okbooleanはいThe filter is valid.
posinteger | nullByte offset of the error (when invalid).

Health

GET /api/health response body.

キー型必須説明
localestringはいNegotiated locale.
messagestringはいLocalised human-readable status.
statusstringはいAlways "ok" when the server answers.
uptime_secsintegerはいSeconds since the server started.
versionstringはいServer version.

IfaceBrief

An interface on the dashboard.

キー型必須説明
allowedbooleanはいAllowed by the transmit policy.
loopbackbooleanはいLoopback.
namestringはいName.
runningbooleanはいCarrier / running.
speed_mbpsinteger | nullLink speed.
upbooleanはいAdministratively up.

JobBrief

A running job on the dashboard.

キー型必須説明
backendstringはいBackend.
bpsnumberはいL2 bits per second.
idstringはいJob id.
ifacestringはいInterface.
namestringはいName.
packetsintegerはいPackets sent.
ppsnumberはいPackets per second.
statusJobStatusはいState.

JobInfo

A job as returned by the API (also the persisted history record).

キー型必須説明
backendstringはいResolved backend.
createdintegerはいCreation time, Unix milliseconds.
finishedinteger | nullEnd time, Unix milliseconds.
idstringはいJob id.
ifacestringはいResolved interface (output path for pcapfile).
namestringはいDisplay name (spec.name, else the first template’s name).
plansobject``[]はいExpansion plan of each stream.
ratestringはいResolved rate.
reportobject | nullFinal report (after the job ended).
specJobSpecはいThe request.
startedinteger | nullStart time, Unix milliseconds.
statsobject | nullLatest statistics.
statusJobStatusはいCurrent state.
workersintegerはいTX workers.

JobSpec

What to send, where and how (all fields but streams are optional).

キー型必須説明
backendstring | nullBackend: null, pcapfile, afpacket, pcap, … (default: tx.default_backend).
batchinteger | nullFrames per send_batch call.
burstinteger | nullFrames per rate-control grant.
countinteger | nullTotal packets (default: the template’s tx.count for a single stream).
dry_runstring | nullDry run: write a pcapng file of this name under <data_dir>/captures instead of sending (forces the pcapfile backend).
durationstring | nullDuration limit, e.g. 10s, 2m.
ifacestring | nullInterface (not needed for null; the output file name for pcapfile).
mixMixInterleaving of several streams.
namestring | nullDisplay name.
pin_coresinteger``[]Core per worker (Linux).
planstring | nullExpansion strategy: auto, prerender, onthefly.
ramp_upstring | nullLinear rate ramp-up time, e.g. 5s.
ratestring | nullRate: 1000pps, 1Mpps, 10Gbps, 50%, ifg=10us, unlimited (default: the first template’s tx.rate, then tx.max_rate, else unlimited).
signaturebooleanStamp every frame with a receive-verification signature (magic + stream id + sequence number + TX time over the last 24 payload octets; see /api/captures with verify).
start_atstring | nullScheduled start: RFC 3339 or +10s.
stream_idinteger | nullSignature stream id of the first stream (stream i gets stream_id + i; default 0).
streamsJobStream[]Streams (at least one). Several streams are mixed into one TX worker.
workersinteger | nullTX worker threads (single stream only).

JobStatus

Job lifecycle state: { "state": "running" }, { "state": "finished", "detail": "count_reached" }, { "state": "failed", "detail": "<error>" }.

state: "created"

Created with start: false, not started yet.

キー型必須説明
state"created"はい

state: "scheduled"

Waiting for start_at.

キー型必須説明
state"scheduled"はい

state: "running"

Sending.

キー型必須説明
state"running"はい

state: "paused"

Paused.

キー型必須説明
state"paused"はい

state: "finished"

Ended normally (count_reached, duration_elapsed, source_exhausted, stopped).

キー型必須説明
detailEndReasonはいEnded normally (count_reached, duration_elapsed, source_exhausted, stopped).
state"finished"はい

state: "failed"

Ended with an error.

キー型必須説明
detailstringはいEnded with an error.
state"failed"はい

JobStream

One stream of a job: a stored template (template_id) or an inline one.

キー型必須説明
templateobject | nullInline template (takes precedence over template_id).
template_idstring | nullId of a stored template.
varsmap<string, ``string``>Template variable values (name → human notation).
weightintegerWeight for mix: weighted (0 counts as 1).

JobTotals

Dashboard aggregate of the running jobs.

キー型必須説明
activeintegerはいJobs that are scheduled, running or paused.
bpsnumberはいSum of the jobs’ L2 bits per second.
l1_bpsnumberはいSum of the jobs’ L1 bits per second.
ppsnumberはいSum of the jobs’ packets per second.
runningintegerはいJobs currently sending.

JumpHost

One SSH jump host of a [ConnectRequest].

キー型必須説明
hoststringはいHost name or address (resolved by the previous hop, or by the server for the first one).
passphrasestring | nullPassphrase of private_key.
passwordstring | nullPassword (also answers a single keyboard-interactive password prompt); empty: the server’s prompts are shown.
portinteger | nullSSH port (default 22).
private_keystring | nullPrivate key (OpenSSH / PEM / PuTTY .ppk text).
usernamestringはいUser name on the jump host.

KnownHost

A stored host key (GET /api/terminal/known-hosts).

キー型必須説明
algorithmstringはいKey algorithm (ssh-ed25519, rsa-sha2-512, …).
commentstringはいThe entry’s comment (who accepted it and when).
fingerprintstringはいSHA256:... fingerprint.
hoststringはいHost as typed by the user who accepted the key (lower case).
portintegerはいTCP port.

LintRequest

POST /api/lint request.

キー型必須説明
templateobjectはいTemplate: object or YAML text.

LintResponse

POST /api/lint response.

キー型必須説明
errorsintegerはいNumber of errors.
issuesobject``[]はいFindings (level, path, key, args, localised message).
okbooleanはいNo errors (warnings allowed).
warningsintegerはいNumber of warnings.

LogInfo

A past or running session log (GET /api/terminal/logs).

キー型必須説明
activebooleanはいStill being written by a live session.
modifiedintegerはいLast modification (Unix seconds).
namestringはいFile name (the id in /api/terminal/logs/{name}).
sizeintegerはいSize in bytes.

LoginRequest

POST /api/auth/login body.

キー型必須説明
passwordstringはいPassword.
usernamestring | nullUser name (default admin).

MibDeleted

Removed modules.

キー型必須説明
removedstring``[]はいModules removed with the file.

MibFileIn

One file of an upload.

キー型必須説明
contentstringはいFile content (text).
namestringはいFile name (CISCO-SMI.my; .mib, .txt, .my, .smi, .asn, .asn1 or none).

MibModuleOut

A loaded MIB module.

キー型必須説明
bundledbooleanはいBundled with wpg (cannot be deleted).
errorsstring``[]はいProblems: parse warnings, unresolved definitions.
filestring | nullUploaded file it came from.
missing_importsstring``[]はいModules named in IMPORTS that are not loaded (upload them).
namestringはいModule name.
nodesintegerはいResolved definitions.
statusstringはいok, partial (loaded with problems) or error.

MibUpload

POST /api/snmp/mibs body.

キー型必須説明
filesMibFileIn[]はいFiles.

MibUploadResult

POST /api/snmp/mibs result.

キー型必須説明
filesUploadedFile[]はいPer file.
modulesMibModuleOut[]はいThe state of the uploaded modules after loading (missing imports are named here).

Mix

How several streams are interleaved.

型: "weighted" | "sequential" | "round_robin"

NamedNumber

An enumeration value / BITS position.

キー型必須説明
labelstringはいLabel.
valueintegerはいNumber.

NodeOut

MIB node details.

キー型必須説明
accessstring | nullMAX-ACCESS.
augmentsstring | nullAUGMENTS.
base_typestring | nullBase type.
defvalstring | nullDEFVAL.
descriptionstring | nullDESCRIPTION.
display_hintstring | nullDISPLAY-HINT.
enumsNamedNumber[]はいEnumeration / BITS names.
indexstring``[]はいINDEX (of a row; AUGMENTS followed).
instancestringはいInstance part of the requested id (3 of ifDescr.3).
kindstringはいobject_type, object_identifier, …
modulestringはいModule.
namestringはいDescriptor.
objectsstring``[]はいOBJECTS / VARIABLES (notifications).
oidstringはいOID of the definition.
pathPathElem[]はいPath from the root.
referencestring | nullREFERENCE.
rolestring | nullTable / row / column / scalar.
statusstring | nullSTATUS.
syntaxstring | nullSYNTAX text.
type_namestring | nullTextual convention.
unitsstring | nullUNITS.

Overview

GET /api/stats/overview response.

キー型必須説明
historyintegerはいJobs in the history.
ifacesIfaceBrief[]はいInterfaces.
jobsJobBrief[]はいActive jobs.
templatesintegerはいTemplates in the library.
totalsJobTotalsはいTotals over the active jobs.
uptime_secsintegerはいSeconds since the server started.

ParseRequest

POST /api/parse request.

キー型必須説明
bytes_hexstringはいFrame bytes as hex (whitespace, : / - separators and 0x allowed).
fcsbooleanThe frame ends with a 4-octet FCS.
first_protocolstring | nullProtocol of the first octet (default ethernet2).

ParseResponse

POST /api/parse response.

キー型必須説明
bytes_hexstringはいNormalised hex of the input.
diagnosticsobject``[]はいParse and build findings with localised message.
layoutobject``[]はいLayer / field positions.
lenintegerはいFrame length in octets.
packetobjectはいDecoded packet (wpg_core::Packet: layers with Manual field values).
trailersobject``[]はいPadding / FCS.

PathElem

Breadcrumb element.

キー型必須説明
namestringはいName (or the number).
oidstringはいOID.

PromptItem

One keyboard-interactive prompt.

キー型必須説明
echobooleanはいWhether the answer may be shown while typed.
promptstringはいPrompt text from the server.

Protocol

Remote protocol.

型: "ssh" | "telnet"

ProtocolSummary

Catalog entry.

キー型必須説明
fieldsstring``[]はいField names in wire order.
idstringはいStable id (ethernet2, ipv4, …).
layerobjectはいPalette classification (l2, l3, l4, payload, …).
namestringはいDisplay name.
nextstring``[]はいProtocols this one can carry (its next-layer binding table).
synthbooleanはいContent generator instead of wire fields (payload).

ReceiverStart

POST /api/snmp/receiver/start body.

キー型必須説明
communitiesstring``[]Accepted communities (empty = any; others are listed with an error).
listenstringはいListen address (0.0.0.0:162, [::]:1162).
usersReceiverUserIn[]v3 users (kept in memory while the receiver runs).

ReceiverStatus

Trap receiver state.

キー型必須説明
communitiesstring``[]はいAccepted communities (empty = any).
engine_idstringはいThis receiver’s engine id (hex), for v3 informs.
from_configbooleanはいStarted at boot from snmp.trap_listen.
listenstring | nullBound address.
receivedintegerはいNotifications received since the start.
runningbooleanはいListening.
usersstring``[]はいConfigured v3 user names.

ReceiverUserIn

A v3 user of the receiver.

キー型必須説明
auth_passwordstring | nullAuthentication pass phrase.
auth_protocolstring | nullAuthentication protocol (default SHA).
priv_passwordstring | nullPrivacy pass phrase.
priv_protocolstring | nullPrivacy protocol (default AES).
userstringはいUser name.

ReloadResult

Result of POST /api/protocols/reload.

キー型必須説明
dirsstring``[]はいDirectories that were read.
filesExtensionFile[]はいThe files now in use, in load order.

RenderRequest

POST /api/render request.

キー型必須説明
countinteger | nullPackets to render (1..=server.preview_max, default 1; 256 unless configured).
indexinteger | nullStream index of the first packet (default 0).
templateobjectはいTemplate: object (JSON form of .wpg.yaml) or YAML text.
varsmap<string, ``string``>Variable values.

RenderResponse

POST /api/render response.

キー型必須説明
cardinalityinteger | nullPackets in the whole stream (null = unbounded).
packetsRenderedPacket[]はいThe packets.
planobjectはいHow a job would expand the stream (pre-render vs on-the-fly).

RenderedPacket

One rendered packet.

キー型必須説明
bytes_hexstringはいFrame bytes as lower-case hex (without FCS unless the template asks for one).
diagnosticsobject``[]はいBuilder findings with localised message.
indexintegerはいStream index.
layoutobject``[]はいLayer / field positions (wpg_core::LayerLayout).
lenintegerはいLength in octets.
trailersobject``[]はいPadding / FCS after the layers.

Role

A user role (only admin is created for now; operator / viewer are P1).

型: "admin" | "operator" | "viewer"

SearchHit

A search hit.

キー型必須説明
kindstringはいKind.
modulestringはいModule.
namestringはいDescriptor.
oidstringはいOID.
rolestring | nullTable / row / column / scalar.
syntaxstring | nullSYNTAX text.

ServerEvent

One message from the server to WebSocket clients.

type: "stats"

Latest statistics of a running job (every 100 ms, one per job).

キー型必須説明
job_idstringはいJob id.
snapshotobjectはいCounters and rates (wpg_tx::job::StatsSnapshot).
type"stats"はい

type: "job_state"

A job changed state.

キー型必須説明
job_idstringはいJob id.
stateJobStatusはいNew state.
type"job_state"はい

type: "log"

A log line (ts, level, target, message, fields).

キー型必須説明
type"log"はい

type: "templates_changed"

The template index changed (file watcher or API write).

キー型必須説明
type"templates_changed"はい

type: "rx_stats"

Latest statistics of a capture (every 100 ms while it runs, once more at the end).

キー型必須説明
capture_idstringはいCapture id.
snapshotobjectはいCounters, rates and verification (wpg_rx::RxSnapshot).
type"rx_stats"はい

type: "capture_state"

A capture started or ended.

キー型必須説明
capture_idstringはいCapture id.
stateobjectはいNew state ({ "state": "running" | "finished" | "failed", "detail" }).
type"capture_state"はい

type: "snmp_trap"

The SNMP trap receiver got a notification (also listed by GET /api/snmp/traps).

キー型必須説明
trapTrapOutはいThe rendered notification.
type"snmp_trap"はい

type: "dhcp_activity"

The DHCP server handled a request or sent a router advertisement (also listed by GET /api/dhcp/activity).

キー型必須説明
activityobjectはいThe exchange (wpg_dhcp::Activity).
type"dhcp_activity"はい

type: "dhcp_state"

The DHCP server started / stopped, its settings changed or leases expired / were deleted: reload GET /api/dhcp.

キー型必須説明
type"dhcp_state"はい

type: "protocols_changed"

The user-defined protocols were reloaded (POST /api/protocols/reload): fetch GET /api/protocols and GET /api/protocols/extensions again.

キー型必須説明
type"protocols_changed"はい

SetupRequest

POST /api/auth/setup body.

キー型必須説明
confirmstringはいThe same password again.
passwordstringはいThe new admin password (at least 8 characters).

SnmpBulkRequest

GetBulk request body.

キー型必須説明
max_repetitionsinteger | nullmax-repetitions (default 10).
non_repeatersinteger | nullnon-repeaters (default 0).
oidsstring``[]はいObjects (the first non_repeaters are fetched once).
targetSnmpTargetはいThe agent.

SnmpNotifyRequest

Trap / Inform request body.

キー型必須説明
targetSnmpTargetはいThe receiver (port default 162).
trap_oidstringはいsnmpTrapOID (linkDown, IF-MIB::linkUp, 1.3.6.1.6.3.1.1.5.1). v1 traps are converted per RFC 3584.
uptimeinteger | nullsysUpTime in hundredths of a second (default: the server’s uptime).
varbindsVarBindIn[]Extra bindings.

SnmpOidsRequest

Get / GetNext request body.

キー型必須説明
oidsstring``[]はいObjects: names (sysDescr.0, IF-MIB::ifDescr.1) or dotted OIDs.
targetSnmpTargetはいThe agent.

SnmpResult

Result of an operation.

キー型必須説明
elapsed_msnumberはいRound trip(s) in milliseconds.
engine_idstring | nullThe agent’s engine id (v3, hex).
error_indexintegerはいerror-index (1-based binding, 0 = none).
error_statusintegerはいerror-status of the response (0 = noError).
error_status_namestring | nullIts name (noSuchName, notWritable, …), when not 0.
opstringはいget, getnext, getbulk, walk, set, trap, inform.
requestsintegerはいRequests sent.
tablesTableOut[]Conceptual tables found among the bindings (walks).
targetstringはいThe agent / receiver address.
truncatedbooleanThe walk stopped at its limit.
varbindsVarBindOut[]はいThe bindings (response, walk results, or the notification sent).
versionstringはいv1, v2c, v3.

SnmpSetRequest

Set request body.

キー型必須説明
targetSnmpTargetはいThe agent.
varbindsVarBindIn[]はいBindings to set.

SnmpStatus

GET /api/snmp/status.

キー型必須説明
captureCaptureStatus | null
enabledbooleanはいsnmp.enabled.
mib_dirstringはいDirectory of uploaded MIBs.
modulesintegerはいLoaded modules.
nodesintegerはいResolved MIB nodes.
receiverReceiverStatus | null

SnmpTarget

Where to send a request.

キー型必須説明
communitystring | nullCommunity for v1 / v2c (default public).
hoststringはいHost name or address.
portinteger | nullUDP port (default 161 for requests, 162 for notifications).
retriesinteger | nullExtra attempts (default 1, at most 10).
timeout_msinteger | nullWait per attempt in milliseconds (default 2000, at most 60000).
v3V3In | null
versionSnmpVersionVersion (default v2c).

SnmpVersion

SNMP protocol version.

型: "v1" | "v2c" | "v3"

SnmpWalkRequest

Walk request body.

キー型必須説明
limitinteger | nullMost bindings returned in all (default 10000, at most 100000).
max_repetitionsinteger | nullmax-repetitions per GetBulk (default 20; v1 walks with GetNext).
oidstringSubtree root: name (ifTable, system) or dotted OID.
oidsstring``[]More subtree roots, walked one after another after oid (either may be empty, not both).
targetSnmpTargetはいThe agent.

TableColumnOut

A table column.

キー型必須説明
counterbooleanはいCounter column (rates make sense).
namestringはいDescriptor.
oidstringはいColumn OID.
syntaxstringはいSyntax text.

TableOut

A conceptual table assembled from walk results.

キー型必須説明
columnsTableColumnOut[]はいColumns present, in OID order.
entrystringはいIF-MIB::ifEntry.
index_namesstring``[]はいINDEX objects.
rowsTableRowOut[]はいRows in instance order.
tablestring | nullIF-MIB::ifTable.

TableRowOut

A table row.

キー型必須説明
cells(string | null)[]はいReadable cells (one per column; null = absent).
indexstring``[]はいDecoded INDEX values (empty when not decodable).
instancestringはいInstance sub-identifiers.
numeric(integer | null)[]はいNumeric cells (integer types).

TemplateDetail

A template with its index entry and lint findings.

キー型必須説明
issuesobject``[]はいLint findings with localised message.
summaryTemplateSummaryはいIndex entry.
templateobjectはいThe template (JSON form of .wpg.yaml).

TemplateList

GET /api/templates response.

キー型必須説明
recentstring``[]はいRecently used template ids, most recent first.
templatesTemplateSummary[]はいMatching templates, sorted by name.

TemplateSource

Where a template comes from.

型: "user" | "library"

TemplateSummary

Index entry of a template.

キー型必須説明
authorstring | nullAuthor.
descriptionstring | nullDescription in the requested language (meta.descriptions[lang], else meta.description, else meta.descriptions.en).
descriptionsmap<string, ``string``>All localised descriptions (language tag → text, e.g. ja, en).
errorstring | nullLoad error when the file does not parse.
favoritebooleanはいMarked as favourite.
idstringはいStable id (slug of the relative path).
last_usedinteger | nullLast use (open in the GUI, job start), Unix milliseconds.
modifiedinteger | nullFile modification time, Unix milliseconds.
namestringはいmeta.name (the file stem when the file does not parse).
pathstringはいPath relative to its root directory.
protocolsstring``[]はいProtocol stack, outermost first.
rootstringはいThe root directory.
sourceTemplateSourceはいLibrary or user template.
tagsstring``[]はいTags.
writablebooleanはいWhether it can be updated / deleted through the API.

TerminalClientMessage

Client → server message on /api/terminal/ws. Keystrokes may also arrive as binary frames (raw bytes).

type: "connect"

First message: opens the session.

キー型必須説明
type"connect"はい

type: "input"

Keystrokes / pasted text (UTF-8).

キー型必須説明
datastringはいThe text.
type"input"はい

type: "resize"

The terminal was resized.

キー型必須説明
colsintegerはいColumns.
rowsintegerはいRows.
type"resize"はい

type: "host_key"

Answer to a host_key prompt.

キー型必須説明
acceptbooleanはいTrust the key.
savebooleanStore it in the known hosts (otherwise trust it for this session).
type"host_key"はい

type: "auth_response"

Answers to an auth_prompt (one per prompt).

キー型必須説明
responsesstring``[]はいThe answers.
type"auth_response"はい

type: "record"

Starts / stops the session log.

キー型必須説明
enabledbooleanはいRecord from now on.
strip_ansiboolean | nullRemove escape sequences (default true).
type"record"はい

type: "disconnect"

Ends the session.

キー型必須説明
type"disconnect"はい

TerminalConnectRequest

connect: where to and how to log in.

キー型必須説明
colsintegerTerminal width.
hoststringはいHost name or address.
jumpJumpHost[]SSH jump hosts (ProxyJump), nearest first: the server logs in to each in turn and reaches the next one (and finally host) through a direct-tcpip channel. Works for SSH and Telnet targets.
passphrasestring | nullPassphrase of private_key.
passwordstring | nullSSH password (also answers a single keyboard-interactive password prompt).
portinteger | nullPort (default 22 / 23).
private_keystring | nullSSH private key (OpenSSH / PEM / PuTTY .ppk text).
protocolProtocolはいssh or telnet.
recordboolean | nullRecord a session log (default: terminal.record_sessions).
rowsintegerTerminal height.
strip_ansiboolean | nullRemove escape sequences from the log (default true).
usernamestring | nullSSH user name.

TerminalServerMessage

Server → client message on /api/terminal/ws. Remote output travels as binary frames.

type: "state"

Progress: resolving, connecting, authenticating; with jump hosts, jumping (opening the tunnel from host onwards) and the other phases carry the host they concern.

キー型必須説明
hoststring | nullThe host of this phase (sessions with jump hosts).
statestringはいThe phase.
type"state"はい

type: "host_key"

An unknown SSH host key: confirm the fingerprint (host_key message).

キー型必須説明
algorithmstringはいKey algorithm.
fingerprintstringはいSHA256:....
hoststringはいHost.
portintegerはいPort.
type"host_key"はい

type: "auth_prompt"

The server asks questions (keyboard-interactive, or the password when none was given): answer with auth_response.

キー型必須説明
hoststringはいThe host asking (the target or a jump host).
instructionsstringはいInstructions from the server.
namestringはいRequest name from the server.
promptsPromptItem[]はいThe prompts.
type"auth_prompt"はい

type: "connected"

The session is up.

キー型必須説明
addressstringはいAddress actually connected to.
fingerprintstring | nullSSH host key fingerprint.
hoststringはいHost.
portintegerはいPort.
protocolProtocolはいProtocol.
session_idstringはいSession id.
type"connected"はい
viastring``[]Jump hosts the session goes through (user@host:port).

type: "record"

Log state after connected / record.

キー型必須説明
enabledbooleanはいRecording.
filestring | nullThe log file (GET /api/terminal/logs/{name}).
type"record"はい

type: "error"

A failure; fatal ones are followed by closed.

キー型必須説明
codestringはいtarget_not_allowed, too_many_sessions, resolve_failed, connect_failed, host_key_changed, host_key_rejected, auth_failed, key_invalid, ssh_error, timeout, bad_request, recording_disabled, log_failed.
detailstring | nullUntranslated detail (an OS / protocol error).
fatalbooleanはいThe session ends.
infoobject | nullhost_key_changed: {algorithm, fingerprint, known_algorithm, known_fingerprint}; a failure at a jump host adds {hop: "host:port"}.
type"error"はい

type: "closed"

The session ended.

キー型必須説明
bytes_inintegerはいBytes received from the host.
bytes_outintegerはいBytes sent to the host.
duration_secsintegerはいSession length in seconds.
reasonstringはいremote (the host closed it), client, idle, shutdown, error.
type"closed"はい

TerminalStatus

GET /api/terminal/status.

キー型必須説明
allowed_targetsstring``[]はいterminal.allowed_targets (empty = any target).
enabledbooleanはいterminal.enabled.
idle_timeout_secsintegerはいterminal.idle_timeout_secs.
max_sessionsintegerはいterminal.max_sessions.
record_sessionsbooleanはいterminal.record_sessions.
sessionsActiveSession[]はいRunning sessions (all users).

TokenInfo

An API token as listed (never the secret).

キー型必須説明
createdintegerはいCreation time (Unix seconds).
expiresinteger | nullExpiry (Unix seconds); null: never expires.
idintegerはいToken id (for revoking).
last_usedinteger | nullLast use (Unix seconds, updated at most once a minute).
namestringはいName given at creation.
prefixstringはいThe first characters of the secret (wpg_ + 8 hex digits), to recognise it.
userstringはいOwner: requests with the token act as this user, with its role.

TrapOut

A received notification.

キー型必須説明
acknowledgedbooleanはいAn inform that was acknowledged.
communitystring | nullCommunity (v1 / v2c).
errorstring | nullWhy the message was not accepted (wrong community, digest, …).
idintegerはいSequence number (increasing).
levelstring | nullv3 security level.
pdu_typestring | nulltrap_v1, trap_v2, inform (absent when undecodable).
received_msintegerはいArrival, milliseconds since the Unix epoch.
sourcestringはいSender address:port.
trap_namestring | nullThe trap OID’s name (IF-MIB::linkDown).
trap_oidstring | nullsnmpTrapOID.0 (dotted).
uptimeinteger | nullsysUpTime.0 / v1 time-stamp (hundredths of a second).
uptime_textstring | nullUptime as 1d 02:03:04.56.
userstring | nullUser (v3).
v1V1Out | null
varbindsVarBindOut[]はいBindings (without sysUpTime.0 / snmpTrapOID.0).
versionstringはいv1, v2c, v3.

TreeChildOut

A tree entry.

キー型必須説明
arcintegerはいLast sub-identifier.
has_childrenbooleanはいSomething is defined below.
kindstring | nullobject_type, object_identifier, notification_type, …
modulestring | nullModule.
namestring | nullDescriptor (absent for an undefined intermediate OID).
oidstringはいOID.
rolestring | nullTable / row / column / scalar for OBJECT-TYPEs.

UploadedFile

Result of one uploaded file.

キー型必須説明
errorsstring``[]はいProblems (no module found: the file was not stored).
filestringはいStored file name.
modulesstring``[]はいModules found in it.
storedbooleanはいWhether the file was stored.

UserInfo

user of [AuthStatus].

キー型必須説明
namestringはいUser name.
roleRoleはいadmin, operator or viewer.

V1Out

SNMPv1 trap header.

キー型必須説明
agent_addrstringはいagent-addr.
enterprisestringはいenterprise (name or dotted).
genericintegerはいgeneric-trap.
specificintegerはいspecific-trap.

V3In

SNMPv3 parameters. The level follows from the pass phrases given: none = noAuthNoPriv, auth_password = authNoPriv, both = authPriv.

キー型必須説明
auth_passwordstring | nullAuthentication pass phrase (at least 8 characters).
auth_protocolstring | nullMD5, SHA (SHA-1), SHA-224, SHA-256, SHA-384, SHA-512 (default SHA).
context_engine_idstring | nullcontextEngineID (hex; default: the agent’s engine id).
context_namestring | nullcontextName.
priv_passwordstring | nullPrivacy pass phrase (at least 8 characters).
priv_protocolstring | nullDES, AES (AES-128), AES-192, AES-256 (default AES).
userstringはいUser name.

VarBindIn

A variable binding to send (Set, notifications).

キー型必須説明
oidstringはいObject instance: name (sysName.0, IF-MIB::ifAdminStatus.2) or dotted OID.
typestring | nullauto (default: from the MIB), or i / integer, u / unsigned, c / counter32, C / counter64, t / timeticks, a / ipaddress, o / oid, s / string, x / hex, d / decimal, n / null, opaque.
valuestringValue text (enum labels such as down and object names are accepted).

VarBindOut

A rendered variable binding.

キー型必須説明
instancestringはいInstance sub-identifiers (3).
modulestring | nullDefining module.
namestringはいIF-MIB::ifDescr.3 (numeric when no MIB knows it).
numericinteger | nullNumeric value of integer types (rates, charts).
objectstring | nullObject descriptor (ifDescr).
oidstringはいOID (dotted decimal).
rawstringはいThe value without MIB knowledge.
syntaxstring | nullTextual convention of the object (DisplayString, InterfaceIndex).
typestringはいWire type (Counter32, OCTET STRING, noSuchInstance, …).
unitsstring | nullUNITS of the object.
valuestringはいReadable value (enum labels, display hints, units, names).

VersionInfo

GET /api/version response body.

キー型必須説明
api_versionintegerはいREST API version (bumped on incompatible changes).
archstringはいTarget CPU architecture.
featuresstring``[]はいOptional features compiled in (pcap, …).
localesstring``[]はいSupported UI / message languages.
osstringはいTarget OS.
versionstringはいServer version.

CLI リファレンス

wpg バイナリはサーバ (wpg serve) とヘッドレスのツールを兼ねるため、CI や ssh 先での実行にも向いています。例えば wpg send tpl.wpg.yaml -i eth0 --rate 1Mpps でテンプレートを送出します。このページはコマンド定義から自動生成しており、各コードブロックは現行ビルドの --help 出力そのものです。実行時のメッセージは LANG / LC_ALL に従いますが、--help の文面は英語です。

コマンド

wpg

Web Packet Generator

Usage: wpg [OPTIONS] <COMMAND>

Commands:
  serve      Start the web UI / API server
  send       Send a template headlessly
  render     Render a template to a pcapng file without transmitting
  import     Convert a pcap/pcapng capture into a template
  template   Template tools (lint, list, migrate, export, import)
  ifaces     List network interfaces usable for transmission
  doctor     Diagnose privileges, drivers, hugepages and Npcap
  bench      Measure transmit performance
  capture    Receive: counters, the first frames, pcapng output, signature verification
  config     Configuration file tools (init, show, validate) and API tokens
  remote     Drive a running server with an API token (jobs, templates)
  protocols  Protocol tools (list, show, check user-defined protocol files)
  help       Print this message or the help of the given subcommand(s)

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg serve

Start the web UI / API server

Usage: wpg serve [OPTIONS]

Options:
      --bind <BIND>
          Address to listen on (default from the config: 127.0.0.1:8080). Without a password only loopback addresses are accepted (see --allow-insecure)

          [env: WPG_BIND]

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --password <PASSWORD>
          Admin password (plain text or argon2 hash). Visible in the process list: prefer --password-file, `WPG_PASSWORD` or `wpg config set-password`

      --password-file <FILE>
          File holding the admin password (plain text or argon2 hash)

      --tls
          Serve HTTPS; without `[server.tls]` a self-signed certificate is generated into `<data_dir>/tls/`

      --allow-insecure
          Listen on a non-loopback address even though no password is configured (anyone reaching the server can then set it on the setup screen)

      --dev
          Development mode: allow CORS from the Trunk dev server (:8081)

      --library-path <DIR>
          Template library directory (repeatable; replaces `templates.library_paths`)

      --data-dir <DIR>
          Data directory (user templates, history)

  -h, --help
          Print help

  -V, --version
          Print version

wpg send

テンプレートを送出します。--plan は、全フレームを先に展開する (prerender) か、送出しながら組み立てる (onthefly) かを選びます。--json は最終レポートを標準出力に JSON で出します。

Send a template headlessly

Usage: wpg send [OPTIONS] <TEMPLATE>

Arguments:
  <TEMPLATE>
          Template file (`.wpg.yaml`)

Options:
  -i, --iface <IFACE>
          Interface to transmit on

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --backend <BACKEND>
          Transmit backend (null, pcapfile, pcap, afpacket, afxdp, dpdk)

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --count <COUNT>
          Number of packets

      --duration <DURATION>
          Duration limit, e.g. `10s`, `2m`

      --rate <RATE>
          Rate, e.g. `1Mpps`, `10Gbps`, `50%`, `ifg=10us`, `unlimited`

      --burst <BURST>
          Frames sent back to back per rate-control grant

      --wait <MODE>
          How the rate control waits: hybrid (sleep, then spin), sleep, spin or busy-poll (spin and service the backend)

      --clock <CLOCK>
          Rate-control clock: auto (TSC when invariant), tsc or monotonic

          [default: auto]

      --ramp-up <DURATION>
          Ramp the rate up linearly from 0 over this time, e.g. `5s`

      --start-at <TIME>
          Start at this time: RFC 3339 (`2026-09-29T12:00:00Z`) or a delay (`+10s`)

      --plan <PLAN>
          Expansion strategy: auto, prerender or onthefly

          [default: auto]

      --prerender-max-bytes <BYTES>
          `auto` pre-renders only streams up to this many bytes (default: `tx.prerender_max_bytes`, 256 MiB)

      --prerender-max-packets <N>
          `auto` pre-renders only streams up to this many packets (default: `tx.prerender_max_packets`, 100M)

      --json
          Print the final report as JSON on stdout

      --var <NAME=VALUE>
          Template variable override (`name=value`), repeatable; wins over --vars-file

      --vars-file <FILE>
          YAML or JSON map of template variable values

      --set <LAYER.FIELD=VALUE>
          Set a field to a fixed value, repeatable. LAYER is a protocol id, `proto[n]` or a layer index, e.g. `ipv4.ttl=1`

      --gen <LAYER.FIELD=GEN>
          Vary a field with a generator, repeatable, e.g. `udp.src_port=range:1000..1999`, `ipv4.dst=list:10.0.0.1,10.0.0.2`, `ipv4.id=random`

      --signature
          Stamp every frame with a receive-verification signature (magic, stream id, sequence number, TX time over the last 24 payload octets; see `wpg capture --verify`)

      --stream-id <ID>
          Signature stream id (with `--signature`)

          [default: 0]

      --batch <N>
          Frames per `send_batch` call

      --ring-depth <N>
          TX ring depth in frames (`afpacket`)

      --ring-bytes <BYTES>
          Memory of one TX ring / UMEM per worker in bytes (`afpacket`, `afxdp`; default: `tx.ring_bytes`, 16 MiB)

      --pin-core <CORE>
          Pin the TX thread to this CPU core (Linux; the first worker)

      --pin-cores <CORES>
          Pin worker i to the i-th core of this list, e.g. `1,2` (Linux)

      --workers <N>
          TX worker threads, each with its own backend instance (afpacket: socket and ring) and share of the stream and rate

          [default: 1]

      --qdisc-bypass
          Bypass the qdisc layer (`afpacket`, `PACKET_QDISC_BYPASS`)

      --no-tx-ring
          Use `sendmmsg` instead of the TPACKET_V3 TX ring (`afpacket`)

      --auto-pin
          Pin the workers to cores on the NIC's NUMA node, core 0 last (Linux; ignored when --pin-cores is given)

      --queue <N>
          First hardware queue (`afxdp`, `dpdk`; worker i uses queue N+i)

      --xdp-mode <MODE>
          AF_XDP bind mode: auto (zero-copy, else copy), copy or zerocopy

          [default: auto]

      --busy-poll
          Busy polling: `afxdp` sockets busy-poll the driver (kernel 5.11+) and `wpg send` paces with `--wait busy-poll` unless --wait says otherwise

      --eal-args <ARGS>
          DPDK EAL arguments (`dpdk`), e.g. "-a 0000:00:04.0 --file-prefix wpg" (split on whitespace; wpg adds `-l <first CPU>` and `--in-memory` unless given)

  -h, --help
          Print help

  -V, --version
          Print version

wpg render

送出せずに、テンプレートのフレームを pcapng ファイルへ書き出します。

Render a template to a pcapng file without transmitting

Usage: wpg render [OPTIONS] --output <OUTPUT> <TEMPLATE>

Arguments:
  <TEMPLATE>
          Template file

Options:
  -o, --output <OUTPUT>
          Output pcapng file (`-` writes it to standard output)

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --count <COUNT>
          Number of packets

      --var <NAME=VALUE>
          Template variable override (`name=value`), repeatable; wins over --vars-file

      --vars-file <FILE>
          YAML or JSON map of template variable values

      --set <LAYER.FIELD=VALUE>
          Set a field to a fixed value, repeatable. LAYER is a protocol id, `proto[n]` or a layer index, e.g. `ipv4.ttl=1`

      --gen <LAYER.FIELD=GEN>
          Vary a field with a generator, repeatable, e.g. `udp.src_port=range:1000..1999`, `ipv4.dst=list:10.0.0.1,10.0.0.2`, `ipv4.id=random`

      --json
          Print the result (packets, bytes, path) as JSON on stdout

  -h, --help
          Print help

  -V, --version
          Print version

wpg import

キャプチャ (または貼り付けた 16 進) をテンプレートに変換します。pcap からテンプレートへのチュートリアルも参照してください。

Convert a pcap/pcapng capture into a template

Usage: wpg import [OPTIONS] <INPUT>

Arguments:
  <INPUT>
          Input: a `.pcap` / `.pcapng` capture, a hex dump (`.hex`, see `--hex`) or `-` for standard input

Options:
  -o, --output <OUTPUT>
          Output template (`-` prints YAML on standard output)

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --per-packet <DIR>
          Write one template per packet into this directory instead of one merged template

      --first-protocol <PROTOCOL>
          Protocol the frames start with

          [default: ethernet2]

      --max-packets <N>
          Read at most this many packets

      --no-detect-generators
          Do not infer generators (range / list / random) from the packets

      --hex
          Treat the input as pasted hex (Wireshark hex stream, spaced bytes, hexdump)

  -h, --help
          Print help

  -V, --version
          Print version

wpg template

テンプレートのツール。lint はエラー時に終了ステータス 1 を返します。export と import はテンプレートを .wpgbundle アーカイブにまとめ、展開します。

Template tools (lint, list, migrate, export, import)

Usage: wpg template [OPTIONS] <COMMAND>

Commands:
  lint     Check templates for errors and warnings (exit status 3 on errors)
  list     List the templates of a directory (default: `templates/`)
  show     Print the built packet (hex dump and layout tree) of a template
  schema   Print the JSON Schema of the template format
  export   Pack templates (files or ids) into a `.wpgbundle` archive
  migrate  Upgrade templates to the current schema version
  import   Extract the templates of a `.wpgbundle` archive into a directory
  help     Print this message or the help of the given subcommand(s)

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg template lint

Check templates for errors and warnings (exit status 3 on errors)

Usage: wpg template lint [OPTIONS] <FILES>...

Arguments:
  <FILES>...
          Template files

Options:
      --json
          Print the issues as JSON on stdout

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg template list

List the templates of a directory (default: `templates/`)

Usage: wpg template list [OPTIONS] [DIR]

Arguments:
  [DIR]
          Directory to scan recursively

Options:
      --json
          Print the list as JSON on stdout

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg template show

Print the built packet (hex dump and layout tree) of a template

Usage: wpg template show [OPTIONS] <FILE>

Arguments:
  <FILE>
          Template file

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --var <NAME=VALUE>
          Template variable override (`name=value`), repeatable; wins over --vars-file

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --vars-file <FILE>
          YAML or JSON map of template variable values

      --set <LAYER.FIELD=VALUE>
          Set a field to a fixed value, repeatable. LAYER is a protocol id, `proto[n]` or a layer index, e.g. `ipv4.ttl=1`

      --gen <LAYER.FIELD=GEN>
          Vary a field with a generator, repeatable, e.g. `udp.src_port=range:1000..1999`, `ipv4.dst=list:10.0.0.1,10.0.0.2`, `ipv4.id=random`

      --json
          Print the packet (hex, layers, fields) as JSON on stdout

  -h, --help
          Print help

  -V, --version
          Print version

wpg template schema

Print the JSON Schema of the template format

Usage: wpg template schema [OPTIONS]

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg template export

Pack templates (files or ids) into a `.wpgbundle` archive

Usage: wpg template export [OPTIONS] --output <OUTPUT> <TEMPLATES>...

Arguments:
  <TEMPLATES>...
          Template files, or ids (file stem / name slug) looked up in `--dir`

Options:
  -o, --output <OUTPUT>
          Output bundle

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --attach <FILE>
          Attach a capture (pcap / pcapng) or other file, repeatable

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --dir <DIR>
          Template library used to resolve ids (default: `templates/`)

  -h, --help
          Print help

  -V, --version
          Print version

wpg template migrate

Upgrade templates to the current schema version.

Directories are scanned recursively. The original of a rewritten file is kept as `<file>.bak`; the new file loses its comments. Files already at the current version are not touched.

Usage: wpg template migrate [OPTIONS] <PATHS>...

Arguments:
  <PATHS>...
          Template files or directories

Options:
      --check
          Only report outdated templates (exit status 1 if any needs migrating)

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --no-backup
          Do not keep a `.bak` copy of migrated files

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

wpg template import

Extract the templates of a `.wpgbundle` archive into a directory

Usage: wpg template import [OPTIONS] --output <OUTPUT> <BUNDLE>

Arguments:
  <BUNDLE>
          The bundle

Options:
  -o, --output <OUTPUT>
          Output directory

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --force
          Overwrite existing files

  -h, --help
          Print help

  -V, --version
          Print version

wpg ifaces

MAC、アドレス、MTU、リンク状態、ドライバ付きでインタフェースを一覧します。

List network interfaces usable for transmission

Usage: wpg ifaces [OPTIONS]

Options:
      --json
          Output JSON

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg doctor

権限設定にある環境チェックを実行します。チェックが fail のとき終了ステータスは 0 以外です。

Diagnose privileges, drivers, hugepages and Npcap

Usage: wpg doctor [OPTIONS]

Options:
      --json
          Output JSON

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg bench

合成フレーム (EtherType 0x88b5)、または --template で指定したテンプレートをレート無制限で送出します。ベースラインは docs/perf.md を参照。--json の項目: backend、detail、iface、frame_size、batch_size、packets、dropped、pps、bps (L2)、l1_bps、elapsed。

Measure transmit performance

Usage: wpg bench [OPTIONS]

Options:
      --backend <BACKEND>
          Backend to benchmark

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -i, --iface <IFACE>
          Interface (for real backends)

      --duration <DURATION>
          Duration in seconds

          [default: 5]

      --frame-size <FRAME_SIZE>
          Frame size in bytes (without FCS)

          [default: 64]

      --template <FILE>
          Benchmark on-the-fly generation of this template instead of a fixed frame

      --var <NAME=VALUE>
          Template variable override (`name=value`), repeatable; wins over --vars-file

      --vars-file <FILE>
          YAML or JSON map of template variable values

      --set <LAYER.FIELD=VALUE>
          Set a field to a fixed value, repeatable. LAYER is a protocol id, `proto[n]` or a layer index, e.g. `ipv4.ttl=1`

      --gen <LAYER.FIELD=GEN>
          Vary a field with a generator, repeatable, e.g. `udp.src_port=range:1000..1999`, `ipv4.dst=list:10.0.0.1,10.0.0.2`, `ipv4.id=random`

      --json
          Output JSON

      --batch <N>
          Frames per `send_batch` call

      --ring-depth <N>
          TX ring depth in frames (`afpacket`)

      --ring-bytes <BYTES>
          Memory of one TX ring / UMEM per worker in bytes (`afpacket`, `afxdp`; default: `tx.ring_bytes`, 16 MiB)

      --pin-core <CORE>
          Pin the TX thread to this CPU core (Linux; the first worker)

      --pin-cores <CORES>
          Pin worker i to the i-th core of this list, e.g. `1,2` (Linux)

      --workers <N>
          TX worker threads, each with its own backend instance (afpacket: socket and ring) and share of the stream and rate

          [default: 1]

      --qdisc-bypass
          Bypass the qdisc layer (`afpacket`, `PACKET_QDISC_BYPASS`)

      --no-tx-ring
          Use `sendmmsg` instead of the TPACKET_V3 TX ring (`afpacket`)

      --auto-pin
          Pin the workers to cores on the NIC's NUMA node, core 0 last (Linux; ignored when --pin-cores is given)

      --queue <N>
          First hardware queue (`afxdp`, `dpdk`; worker i uses queue N+i)

      --xdp-mode <MODE>
          AF_XDP bind mode: auto (zero-copy, else copy), copy or zerocopy

          [default: auto]

      --busy-poll
          Busy polling: `afxdp` sockets busy-poll the driver (kernel 5.11+) and `wpg send` paces with `--wait busy-poll` unless --wait says otherwise

      --eal-args <ARGS>
          DPDK EAL arguments (`dpdk`), e.g. "-a 0000:00:04.0 --file-prefix wpg" (split on whitespace; wpg adds `-l <first CPU>` and `--in-memory` unless given)

  -h, --help
          Print help

  -V, --version
          Print version

wpg capture

Receive: counters, the first frames, pcapng output, signature verification

Usage: wpg capture [OPTIONS]

Options:
  -i, --iface <IFACE>
          Interface to receive on (`any` = every interface with `afpacket`); for the `pcapfile` backend the capture file to replay

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --backend <BACKEND>
          Receive backend: afpacket (Linux), pcap (feature `pcap`), pcapfile, null

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -f, --filter <EXPR>
          tcpdump-style filter, e.g. `udp port 5001 and wpg` (default: every frame)

  -c, --count <COUNT>
          Stop after this many matching frames

      --duration <DURATION>
          Stop after this long, e.g. `10s`

      --show <N>
          Print the first N matching frames

          [default: 5]

      --hex
          Also print a hex dump of the shown frames

  -w, --write <FILE>
          Write the matching frames to this pcapng file

      --verify
          Check the signatures stamped by `wpg send --signature` (loss / order / latency)

      --promisc
          Promiscuous mode

      --include-outgoing
          Also count frames this host transmits

      --json
          Machine-readable output

  -h, --help
          Print help

  -V, --version
          Print version

wpg config

wpg.toml のツール。設定リファレンスを参照してください。

Configuration file tools (init, show, validate) and API tokens

Usage: wpg config [OPTIONS] <COMMAND>

Commands:
  init          Write a fully commented example `wpg.toml`
  show          Print the effective configuration (file + environment) as TOML, secrets redacted
  validate      Check the configuration; exit status 1 on errors
  set-password  Prompt for the admin password and store its argon2id hash as `auth.password_hash` (the file is created from the example if missing)
  token         API tokens for scripts and `wpg remote` (create, list, revoke), stored in the server's database
  help          Print this message or the help of the given subcommand(s)

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg config init

Write a fully commented example `wpg.toml`

Usage: wpg config init [OPTIONS]

Options:
      --path <FILE>
          Output file

          [default: wpg.toml]

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --force
          Overwrite an existing file

  -h, --help
          Print help

  -V, --version
          Print version

wpg config show

Print the effective configuration (file + environment) as TOML, secrets redacted

Usage: wpg config show [OPTIONS]

Options:
      --config <FILE>
          Configuration file (default: `wpg.toml` if present)

          [env: WPG_CONFIG]

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

  -h, --help
          Print help

  -V, --version
          Print version

wpg config validate

Check the configuration; exit status 1 on errors

Usage: wpg config validate [OPTIONS]

Options:
      --config <FILE>
          Configuration file (default: `wpg.toml` if present)

          [env: WPG_CONFIG]

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

  -h, --help
          Print help

  -V, --version
          Print version

wpg config set-password

Prompt for the admin password and store its argon2id hash as `auth.password_hash` (the file is created from the example if missing)

Usage: wpg config set-password [OPTIONS]

Options:
      --config <FILE>
          Configuration file to update

          [env: WPG_CONFIG]
          [default: wpg.toml]

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --stdin
          Read the password from the first line of standard input (no prompt)

  -h, --help
          Print help

  -V, --version
          Print version

wpg config token

サーバのデータベース (<data_dir>/wpg.sqlite) の API トークンを直接管理します。サーバの稼働中でも使えます。create は標準出力にトークンだけを出力します。

API tokens for scripts and `wpg remote` (create, list, revoke), stored in the server's database

Usage: wpg config token [OPTIONS] <COMMAND>

Commands:
  create  Create a token and print its secret (shown only once)
  list    List the tokens (never their secrets)
  revoke  Revoke (delete) a token by id
  help    Print this message or the help of the given subcommand(s)

Options:
      --data-dir <DIR>
          Data directory holding `wpg.sqlite` (default: `data_dir` of the configuration)

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg config token create

Create a token and print its secret (shown only once)

Usage: wpg config token create [OPTIONS] <NAME>

Arguments:
  <NAME>
          Name, to recognise the token later

Options:
      --data-dir <DIR>
          Data directory holding `wpg.sqlite` (default: `data_dir` of the configuration)

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --user <USER>
          User the token acts as (with that user's role)

          [default: admin]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --expires-days <DAYS>
          Expire after this many days (default: never)

      --json
          Print the token and its secret as JSON

  -h, --help
          Print help

  -V, --version
          Print version

wpg config token list

List the tokens (never their secrets)

Usage: wpg config token list [OPTIONS]

Options:
      --data-dir <DIR>
          Data directory holding `wpg.sqlite` (default: `data_dir` of the configuration)

      --json
          Print JSON

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg config token revoke

Revoke (delete) a token by id

Usage: wpg config token revoke [OPTIONS] <ID>

Arguments:
  <ID>
          Token id (see `wpg config token list`)

Options:
      --data-dir <DIR>
          Data directory holding `wpg.sqlite` (default: `data_dir` of the configuration)

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote

API トークンを使い、稼働中のサーバを API 経由で操作します。認証と TLS を参照してください。終了ステータス: 0 成功、1 ジョブが失敗 (jobs wait、jobs start --wait)、2 その他のエラー。

Drive a running server with an API token (jobs, templates)

Usage: wpg remote [OPTIONS] <COMMAND>

Commands:
  jobs       Transmit jobs: list, start, stop, wait
  templates  The server's template library: list, push
  help       Print this message or the help of the given subcommand(s)

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --json
          Print the server's JSON responses

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote jobs

Transmit jobs: list, start, stop, wait

Usage: wpg remote jobs [OPTIONS] <COMMAND>

Commands:
  list   List the server's jobs (running and recently finished)
  start  Start a job from a library template id or a local template file; prints the job id
  stop   Stop a job
  wait   Wait until a job ends; exit status 1 if it failed
  help   Print this message or the help of the given subcommand(s)

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --json
          Print the server's JSON responses

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote jobs list

List the server's jobs (running and recently finished)

Usage: wpg remote jobs list [OPTIONS]

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --json
          Print the server's JSON responses

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote jobs start

Start a job from a library template id or a local template file; prints the job id

Usage: wpg remote jobs start [OPTIONS] <TEMPLATE>

Arguments:
  <TEMPLATE>
          Template id on the server, or a local `.wpg.yaml` file sent with the job

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --var <NAME=VALUE>
          Template variable value (repeatable)

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --rate <RATE>
          Rate, e.g. `1000pps`, `1Mpps`, `10Gbps`, `unlimited`

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --count <COUNT>
          Number of packets

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --duration <DURATION>
          Duration limit, e.g. `10s`, `2m`

      --json
          Print the server's JSON responses

  -i, --iface <IFACE>
          Interface on the server

      --backend <BACKEND>
          Transmit backend (default: the server's)

      --name <NAME>
          Job name

      --wait
          Wait until the job ends (like `wpg remote jobs wait`)

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote jobs stop

Stop a job

Usage: wpg remote jobs stop [OPTIONS] <ID>

Arguments:
  <ID>
          Job id

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --json
          Print the server's JSON responses

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote jobs wait

Wait until a job ends; exit status 1 if it failed

Usage: wpg remote jobs wait [OPTIONS] <ID>

Arguments:
  <ID>
          Job id

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --timeout <SECS>
          Give up after this many seconds (exit status 2)

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --json
          Print the server's JSON responses

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote templates

The server's template library: list, push

Usage: wpg remote templates [OPTIONS] <COMMAND>

Commands:
  list  List the templates on the server
  push  Upload a template file to the server's user templates; prints its id
  help  Print this message or the help of the given subcommand(s)

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --json
          Print the server's JSON responses

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote templates list

List the templates on the server

Usage: wpg remote templates list [OPTIONS]

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --json
          Print the server's JSON responses

  -h, --help
          Print help

  -V, --version
          Print version

wpg remote templates push

Upload a template file to the server's user templates; prints its id

Usage: wpg remote templates push [OPTIONS] <FILE>

Arguments:
  <FILE>
          Template file (`.wpg.yaml`)

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --server <URL>
          Server URL

          [env: WPG_SERVER]
          [default: http://127.0.0.1:8080]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

      --token <TOKEN>
          API token (`wpg_...`). Visible in the process list: prefer `WPG_TOKEN`

          [env: WPG_TOKEN]

      --insecure
          Accept any TLS certificate (for servers with a self-signed certificate)

      --json
          Print the server's JSON responses

  -h, --help
          Print help

  -V, --version
          Print version

wpg protocols

Protocol tools (list, show, check user-defined protocol files)

Usage: wpg protocols [OPTIONS] <COMMAND>

Commands:
  list   List the protocols: built-in ones and those of `--protocols-dir`
  show   Print a protocol definition, as an extension file to start a new protocol from (change its `id` first)
  check  Check user-defined protocol files (exit status 1 on errors)
  help   Print this message or the help of the given subcommand(s)

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg protocols list

List the protocols: built-in ones and those of `--protocols-dir`

Usage: wpg protocols list [OPTIONS]

Options:
      --json
          Output JSON

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg protocols show

Print a protocol definition, as an extension file to start a new protocol from (change its `id` first)

Usage: wpg protocols show [OPTIONS] <ID>

Arguments:
  <ID>
          Protocol id (`udp`, `ipv4`, ...)

Options:
      --json
          Output the definition as JSON instead of YAML

      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help

  -V, --version
          Print version

wpg protocols check

Check user-defined protocol files (exit status 1 on errors).

The files are checked together, with the built-in protocols and the other files of `--protocols-dir`.

Usage: wpg protocols check [OPTIONS] <PATHS>...

Arguments:
  <PATHS>...
          Extension files (`*.yaml`) or directories holding them

Options:
      --protocols-dir <DIR>
          Directory of user-defined protocol files (`*.yaml`, repeatable; added to `[protocols] dirs` of the configuration)

          [env: WPG_PROTOCOLS_DIR]

      --config <FILE>
          Configuration file (default: `wpg.toml` in the working directory, if any). `wpg send` also takes its default backend and rate limit from `[tx]`

          [env: WPG_CONFIG]

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

設定リファレンス

サーバは作業ディレクトリの wpg.toml、または --config / WPG_CONFIG で指定したファイルを読みます。優先順位は低い順に、組み込みの既定値、ファイル、環境変数 WPG_<SECTION>__<KEY> (__ で階層を区切る。例: WPG_SERVER__BIND=0.0.0.0:8080、WPG_TX__ALLOWED_IFACES='["eth1"]')、wpg serve --bind などのコマンドラインオプションです。未知のキーはエラーです。wpg config init で下記のコメント付きの例を書き出し、wpg config show で実効設定を表示し、wpg config validate で検査し、wpg config set-password で管理者パスワードのハッシュを保存します。管理者パスワードそのものはキーではなく、wpg serve --password、--password-file、WPG_PASSWORD が auth.password_hash、auth.password_file より優先されます。このページは設定の型から自動生成しています。

キー一覧

トップレベル

キー型既定値環境変数説明
data_dirstringOS のデータディレクトリ (Linux: ~/.local/share/wpg)WPG_DATA_DIRサーバの状態を置くディレクトリ: ユーザテンプレート、お気に入り、SQLite データベース (ユーザ、セッション、ジョブ履歴)、ドライランのキャプチャ、自己署名 TLS 証明書。

[auth]

認証。

キー型既定値環境変数説明
password_filestringWPG_AUTH__PASSWORD_FILE管理者パスワードを書いたファイル: argon2 PHC 文字列、または起動時にハッシュする平文。
password_hashstringWPG_AUTH__PASSWORD_HASH管理者パスワードの argon2id PHC 文字列。wpg config set-password が書き込みます。
session_ttl_secsinteger86400WPG_AUTH__SESSION_TTL_SECSセッションの有効期間 (秒)。リクエストのたびに延長されます。

[dhcp]

DHCP サーバーツール(1 つのインタフェースで DHCPv4 / DHCPv6。プールとオプションは DHCP 画面で編集)。

キー型既定値環境変数説明
enabledbooleantrueWPG_DHCP__ENABLEDDHCP 画面と /api/dhcp を有効にします。
ifacestring""WPG_DHCP__IFACEDHCP サーバーが応答するインタフェース(例 eth1。deploy.sh --dhcp-iface で設定)。空なら画面で tx.allowed_ifaces から選びます。

[log]

ログ。

キー型既定値環境変数説明
ansibooleantrueWPG_LOG__ANSI端末への出力に色を付けます。
filestringWPG_LOG__FILEこのファイルにも書き出します (ディレクトリは作成されます)。
format"pretty" | "json""pretty"WPG_LOG__FORMAT行の形式: pretty (人が読む形式) または json (1 行に 1 オブジェクト)。
levelstring"info"WPG_LOG__LEVELフィルタ指定 (RUST_LOG が優先)。例: info、wpg_tx=debug,info。
max_filesintegerWPG_LOG__MAX_FILES残すローテーション済みファイルの最大数 (古いものから削除)。
rotation"never" | "hourly" | "daily""never"WPG_LOG__ROTATIONファイルのローテーション: never、hourly、daily。

[protocols]

ユーザ定義プロトコル。

キー型既定値環境変数説明
dirsstring[][]WPG_PROTOCOLS__DIRSユーザ定義プロトコルのファイル (*.yaml: 新しいプロトコル定義と既存プロトコルの下への結び付け) を置くディレクトリ。起動時にファイル名順で読み込みます。wpg serve --protocols-dir で追加できます。

[server]

HTTP リスナ。

キー型既定値環境変数説明
base_urlstringWPG_SERVER__BASE_URLリバースプロキシ配下で公開する URL (https://wpg.example.net)。絶対リンクに使います。
bindstring"127.0.0.1:8080"WPG_SERVER__BIND待ち受けアドレス。パスワードがなく、セットアップ画面でユーザも作っていない間は、ループバックアドレスだけを受け付けます (--allow-insecure で解除)。
job_historyinteger100WPG_SERVER__JOB_HISTORYメモリに保持し、ジョブ画面と API に一覧表示する終了済みジョブ数 (1–100000)。
job_history_dbinteger1000WPG_SERVER__JOB_HISTORY_DBデータベースに残す終了済みジョブ数。古いものから削除します (1–10000000)。
preview_maxinteger256WPG_SERVER__PREVIEW_MAX1 回のプレビュー (POST /api/render) で生成できる最大パケット数 (1–100000)。
self_signed_tlsbooleanfalseWPG_SERVER__SELF_SIGNED_TLS<data_dir>/tls/ に生成する自己署名証明書で HTTPS を提供します (次回以降も再利用)。wpg serve --tls と同じです。

[server.tls]

HTTPS で使う証明書チェーンと秘密鍵 (PEM)。self_signed_tls より優先します。

キー型既定値環境変数説明
certstringWPG_SERVER__TLS__CERTPEM 形式の証明書チェーン。
keystringWPG_SERVER__TLS__KEYPEM 形式の秘密鍵。

[snmp]

SNMP マネージャツール(Get / Walk / Set / トラップ、MIB アップロード)。

キー型既定値環境変数説明
enabledbooleantrueWPG_SNMP__ENABLEDSNMP ツール画面と /api/snmp を有効にします。
mib_dirstring""WPG_SNMP__MIB_DIRアップロードした MIB ファイルのディレクトリ。空なら <data_dir>/mibs。
trap_listenstring""WPG_SNMP__TRAP_LISTEN起動時からトラップ / インフォーム受信を待ち受けるアドレス(例 0.0.0.0:162。1024 未満のポートには root か CAP_NET_BIND_SERVICE が必要)。空なら起動時は受信しません(画面から開始できます)。

[templates]

テンプレートライブラリ。

キー型既定値環境変数説明
library_pathsstring[]["./templates"]WPG_TEMPLATES__LIBRARY_PATHS読み取り専用のテンプレートライブラリ (Git のチェックアウトなど)。*.wpg.yaml / *.wpg.json を再帰的に読み込み、ファイルが変わると再読み込みします。
user_dirstringWPG_TEMPLATES__USER_DIRGUI で作成・インポートしたテンプレートを書き込むディレクトリ。既定は <data_dir>/templates。

[terminal]

Web ターミナル: ログインしたユーザのためにサーバが開く SSH / Telnet セッション (Web ターミナルのガイドを参照)。

キー型既定値環境変数説明
allowed_targetsstring[][]WPG_TERMINAL__ALLOWED_TARGETSセッションの接続先として許可する宛先: host、host:port、*.domain、IP アドレス、CIDR (10.0.0.0/8、[2001:db8::1]:830)。空ならすべて。
enabledbooleanfalseWPG_TERMINAL__ENABLEDWeb ターミナルを有効にします。既定では無効です。
idle_timeout_secsinteger1800WPG_TERMINAL__IDLE_TIMEOUT_SECS入出力がこの秒数ないセッションを切断します。0 で切断しません。
max_sessionsinteger8WPG_TERMINAL__MAX_SESSIONS同時に開けるセッション数の上限 (全ユーザ合計)。
record_sessionsbooleantrueWPG_TERMINAL__RECORD_SESSIONSセッションログ (接続先からの出力) を <data_dir>/terminal-logs に残すことを許可します。false でサーバ側のログを無効にします。

[tx]

送出のポリシーと既定値。

キー型既定値環境変数説明
allowed_ifacesstring[][]WPG_TX__ALLOWED_IFACESジョブが送出してよいインタフェース。空ならすべて。null バックエンドとドライランは制限しません。
default_backendstringWPG_TX__DEFAULT_BACKENDジョブがバックエンドを指定しないときのバックエンド (null、pcapfile、afpacket、pcap、afxdp、dpdk)。未設定なら Linux は afpacket、それ以外は pcap、使えなければ null。
dpdk_eal_argsstring[][]WPG_TX__DPDK_EAL_ARGSdpdk バックエンドの DPDK EAL 引数 (例: ["-a", "0000:00:04.0"])。指定がなければ wpg が -l <先頭の CPU> と --in-memory を加えます。EAL はプロセスごとに最初の dpdk ジョブで 1 度だけ起動するため、変更には再起動が必要です。
max_ratestringWPG_TX__MAX_RATEジョブが指定できる最大レート (100kpps、1Gbps)。レート指定のないジョブはこのレートで送出します。
prerender_max_bytesinteger268435456WPG_TX__PRERENDER_MAX_BYTESパケット数 × フレーム長がこのバイト数以下のストリームだけを事前生成 (送出前に全フレームを生成) し、超えるものは送出しながら生成します。0 は --plan prerender を指定しない限り事前生成しません。上限 1 TiB。wpg send --prerender-max-bytes で上書きできます。
prerender_max_packetsinteger100000000WPG_TX__PRERENDER_MAX_PACKETSパケット数がこの値以下のストリームだけを事前生成します。wpg send --prerender-max-packets で上書きできます。
ring_bytesinteger16777216WPG_TX__RING_BYTESワーカーごとの afpacket TX リング / afxdp UMEM のメモリ (バイト、1 MiB–1 GiB)。収まるようにリング深さを減らします。このメモリはロックされるため、大きな値では ulimit -l を引き上げてください。--ring-bytes で上書きできます。

設定例 (wpg config init)

有効な行はすべて組み込みの既定値と同じなので、編集するまで動作は変わりません。コメントアウトした行は省略可能なキーの例です。

# wpg.toml — Web Packet Generator configuration.
#
# Precedence (lowest first): built-in defaults < this file < environment variables
# (WPG_<SECTION>__<KEY>, e.g. WPG_SERVER__BIND=0.0.0.0:8080 or
# WPG_TX__ALLOWED_IFACES='["eth1"]') < command line options (wpg serve --bind ...).
# Unknown keys are rejected. Check a file with `wpg config validate`, print the
# effective configuration with `wpg config show`.

# Server state: user templates, favourites, job history, dry-run captures.
# Default: the OS data directory (Linux: ~/.local/share/wpg).
# data_dir = "/var/lib/wpg"

[server]
# Listen address. Without a password keep it on localhost.
bind = "127.0.0.1:8080"
# Public URL when running behind a reverse proxy.
# base_url = "https://wpg.example.net"
# Serve HTTPS with a self-signed certificate generated into <data_dir>/tls/
# (same as `wpg serve --tls`). Ignored when [server.tls] is set.
self_signed_tls = false
# Most packets one preview request may render (1-100000).
preview_max = 256
# Finished jobs listed on the Jobs screen (kept in memory, 1-100000) and kept in
# the database (1-10000000; older ones are deleted).
job_history = 100
job_history_db = 1000

# TLS certificate chain and private key (PEM) to serve HTTPS with.
# [server.tls]
# cert = "/etc/wpg/cert.pem"
# key = "/etc/wpg/key.pem"

[auth]
# Admin password. Without one (and without a user created on the first-run
# setup screen) the server only listens on localhost. Sources, highest first:
# `wpg serve --password`, `--password-file`, $WPG_PASSWORD, password_hash,
# password_file, the setup screen.
# argon2id hash of the admin password (`wpg config set-password` writes it):
# password_hash = "$argon2id$v=19$m=19456,t=2,p=1$..."
# Or a file holding the hash or the plain-text password:
# password_file = "/etc/wpg/password"
# Session lifetime in seconds (extended by every request).
session_ttl_secs = 86400

[templates]
# Read-only template libraries (Git checkouts etc.), scanned recursively for
# *.wpg.yaml / *.wpg.json and reloaded when files change.
library_paths = ["./templates"]
# Writable directory for templates created or imported in the GUI.
# Default: <data_dir>/templates
# user_dir = "/var/lib/wpg/templates"

[protocols]
# Directories of user-defined protocol files (*.yaml), loaded at startup.
# Changes need a restart.
# dirs = ["/etc/wpg/protocols.d"]

[tx]
# Interfaces jobs may send on; empty = all. The null backend and dry runs are
# not restricted.
allowed_ifaces = []
# Highest rate a job may request, e.g. "100kpps" or "1Gbps". Jobs without a rate
# are sent at this rate.
# max_rate = "100kpps"
# Backend when a job names none: null, pcapfile, afpacket, pcap, afxdp, dpdk.
# Default: afpacket on Linux, else pcap, else null.
# default_backend = "afpacket"
# DPDK EAL arguments for the dpdk backend (wpg adds "-l <first CPU>" and
# "--in-memory" unless given). EAL starts with the first dpdk job; changing them
# needs a restart.
# dpdk_eal_args = ["-a", "0000:00:04.0"]
# Streams are pre-rendered (every frame built before sending) when they have at
# most prerender_max_packets packets and packets * frame length is at most
# prerender_max_bytes (default 256 MiB, up to 1 TiB); larger ones are built on
# the fly. `wpg send --prerender-max-bytes / --prerender-max-packets` override.
prerender_max_bytes = 268435456
prerender_max_packets = 100000000
# Memory of one afpacket TX ring / afxdp UMEM per worker in bytes (1 MiB-1 GiB,
# default 16 MiB); --ring-depth is reduced to fit. Locked memory: raise
# `ulimit -l` / LimitMEMLOCK for large values.
ring_bytes = 16777216

[snmp]
# SNMP tool screen and API (Get / Walk / Set / traps, MIB upload).
enabled = true
# Trap / inform receiver started at boot, e.g. "0.0.0.0:162" (ports below 1024
# need root or CAP_NET_BIND_SERVICE). Empty: not started at boot (it can be
# started from the UI).
trap_listen = ""
# Directory of uploaded MIB files. Empty: <data_dir>/mibs
mib_dir = ""

[dhcp]
# DHCP screen and API (DHCPv4 / DHCPv6 server, Linux only). Pools and options
# are edited on the screen and kept in <data_dir>/dhcp.json.
enabled = true
# Interface the server answers on, e.g. "eth1". Empty: chosen on the screen
# among tx.allowed_ifaces. Ports 67 / 547 need root or CAP_NET_BIND_SERVICE.
iface = ""

[log]
# Filter directives (RUST_LOG overrides this), e.g. "info" or "wpg_tx=debug,info".
level = "info"
# "pretty" or "json".
format = "pretty"
# Also write to this file (its directory is created).
# file = "/var/log/wpg/wpg.log"
# Rotation of the file: "never", "hourly" or "daily".
rotation = "never"
# Keep at most this many rotated files.
# max_files = 7
# Colour the console output when it is a terminal.
ansi = true

[terminal]
enabled = false          # Web terminal (SSH / Telnet)
allowed_targets = []     # "host", "host:port" or CIDR; empty = any target
record_sessions = true   # keep session logs under <data_dir>/terminal-logs
idle_timeout_secs = 1800
max_sessions = 8

デプロイ (deploy.bat / deploy.ps1 / deploy.sh)

Status: draft

wpg を SSH で Linux ホスト (Ubuntu 20.04〜24.04、Debian。第一の対象は CML2 上の Ubuntu ノード) に入れるスクリプトです。Windows からは scripts\deploy.bat (中身は scripts\deploy.ps1)、Linux / macOS からは scripts/deploy.sh を使います。どちらもホスト側では同じスクリプト (scripts/lib/*.sh) を使うため、結果は同じです。

引数を覚える必要はありません。 引数なしで起動すると、ウィザードが必要なことを 1 つずつ日本語で聞きます (英語の環境では英語)。どの質問も Enter だけで [ ] 内の既定値を選べます。

自動実行もできます。 ウィザードの最後に保存できる回答ファイルを使うと、同じデプロイを質問なしで実行できます (定期アップグレード、複数台、CI)。自動実行 (無人実行) を参照してください。

ウィザードで入れる (おすすめ)

Windows

エクスプローラでリポジトリの scripts フォルダを開き、deploy.bat をダブルクリックします。PowerShell から実行してもかまいません。

.\scripts\deploy.bat           # または: powershell -ExecutionPolicy Bypass -File .\scripts\deploy.ps1

必要なもの: Windows 10 1809 以降 / Windows 11 に標準で入っている OpenSSH クライアント (ssh、scp、ssh-keygen) と tar.exe。OpenSSH クライアントが無い場合は「設定 > アプリ > オプション機能」で「OpenSSH クライアント」を追加します。Windows 上に Rust や Git は不要です (Git があれば、ソースのアップロードに git archive を使います)。

Linux / macOS

scripts/deploy.sh              # 引数なし = ウィザード (just deploy-wizard でも同じ)

sshpass が入っていれば SSH パスワードの入力に使います (無くても動きます)。

画面の例

初回 (Windows の PowerShell 5.1)。**** の部分は入力が表示されません。

wpg デプロイウィザード (Enter で [ ] 内の既定値を使います。Ctrl+C で中止)
接続先ホスト (IP アドレスまたはホスト名): 192.0.2.10
SSH ポート [22]:
SSH ユーザ名 [ubuntu]: cisco
SSH の認証方法:
  1) パスワード (初回だけ使い、デプロイ用の鍵を登録します)
  2) 既存の秘密鍵ファイル
番号を選んでください [1]:

[1] cisco@192.0.2.10 に接続
SSH パスワード (cisco@192.0.2.10): ********
  デプロイ用の鍵を作りました: C:\Users\you\.ssh\wpg_deploy_ed25519
  公開鍵をホストの ~/.ssh/authorized_keys に登録します (パスワードを使うのはこの 1 回だけです)。
  鍵でログインできるようになりました。次回からパスワードは不要です。
  OS: Ubuntu 24.04.1 LTS (x86_64)   sudo: password   wpg: -
wpg のバイナリの用意:
  1) ホスト上でソースからビルド (推奨。ホストにインターネット接続が必要。初回 10〜30 分)
  2) 手元の Linux 用バイナリファイルをアップロード
  3) GitHub Release からダウンロード (まだリリースがありません)
番号を選んでください [1]:
ソースコード:
  1) このパソコンのソース (C:\work\web-packet-generator) をアップロード
  2) GitHub から git clone
番号を選んでください [1]:
systemd サービスとしてインストールし、起動時に自動で開始しますか? [Y/n]:
Web UI の待ち受けアドレス:ポート (0.0.0.0 = すべて) [0.0.0.0:8080]:
送信を許可するインタフェース (tx.allowed_ifaces):
  1) ens2         UP       192.0.2.10/24  <- 管理用 (SSH 接続中)
  2) ens3         UP
  3) ens4         UP
番号をカンマ区切りで (例 2,3。all = すべて許可) [2,3]:
Web ターミナルを有効にしますか? (対応する wpg のみ) [y/N]:
SNMP トラップ受信 (UDP 162) を有効にしますか? (対応する wpg のみ) [y/N]: y
DHCP サーバーが応答するインタフェース (空 / - = 画面で選択。対応する wpg のみ): ens4
ens4 の固定 IP (address/len をカンマ区切り。例 192.168.100.1/24,2001:db8:1::1/64。空 / - = 設定しない): 192.168.100.1/24
sudo パスワード (Enter = SSH パスワードと同じ):
wpg の管理者パスワード (Web UI のログイン用): ********
もう一度入力してください: ********

確認
  接続先 : cisco@192.0.2.10 (port 22)
  バイナリ : ホスト上でビルド (このパソコンのソース: C:\work\web-packet-generator)
  サービス : systemd (wpg.service)
  待ち受け : 0.0.0.0:8080
  送信インタフェース : ens3,ens4
  管理者パスワード : 設定する
  Web ターミナル : 無効
  SNMP トラップ受信 : 有効 (UDP 162)
  DHCP サーバー : ens4 192.168.100.1/24
この内容で実行しますか? [Y/n]:
この設定を次回のために保存しますか? (パスワードは保存しません) [Y/n]:
設定を保存しました: C:\Users\you\AppData\Roaming\wpg\deploy.conf (パスワードは保存していません)
ログ: C:\Users\you\AppData\Local\wpg\deploy-logs\deploy-20261027-101500.log

[2/6] アップロード (cisco@192.0.2.10:/tmp/wpg-deploy.Xa81Qe)
[3/6] ビルドに必要なパッケージの導入 (apt)
  -> apt-get install build-essential pkg-config libpcap-dev curl git ca-certificates tar
[4/6] ホスト上でビルド (初回は 10〜30 分かかります)
  -> installing rustup (https://rustup.rs) into ~/.cargo
  -> installed trunk 0.22.1 (prebuilt)
  ...
  -> built wpg 0.1.0
[5/6] インストール (sudo)
  -> installed wpg 0.1.0 to /usr/local/bin/wpg
  -> setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/local/bin/wpg
  -> systemd unit wpg.service (re)started
[6/6] ヘルスチェック (http://127.0.0.1:8080/api/health)
  {"status":"ok","version":"0.1.0",...}

完了しました。ブラウザで開いてください:
  http://192.0.2.10:8080/

deploy.sh のウィザードも同じ質問をします (バイナリの用意に「このマシンでビルドしてアップロード」が加わります。sudo パスワードは接続の直後に聞きます)。

聞かれる項目

項目既定値補足
接続先ホスト前回の値IP アドレスまたはホスト名。
SSH ポート22
SSH ユーザ名ubuntusudo を使えるユーザ。
認証方法パスワードパスワードは 1 回だけ使い、デプロイ用の鍵を登録します (後述)。既存の鍵ファイルも選べます。鍵で入れるときは聞きません。
sudo パスワードSSH パスワードと同じNOPASSWD の sudo や root ログインなら聞きません。間違えると 3 回まで聞き直します。
バイナリの用意ホスト上でビルドホストがインターネットに出られないときは既定が変わります。下の「バイナリの用意」を参照。
サービスとして入れるはいsystemd の wpg.service。
待ち受けアドレス0.0.0.0:8080127.0.0.1:8080 にすると SSH トンネル経由でだけ使えます。
管理者パスワード(必須)Web UI のログイン (ユーザ admin) 用。2 回入力します。インストール済みなら Enter で変更しません。
送信インタフェース管理用以外のすべてホストの ip -br addr を番号付きで表示します。SSH に使っているインタフェースには「管理用」と出ます。all で制限なし。
Web ターミナル / SNMP トラップ受信いいえ対応するバージョンの wpg のときだけ有効になります (後述)。

2 回目以降

回答 (パスワード以外) は Windows では %APPDATA%\wpg\deploy.conf、Linux / macOS では ~/.config/wpg/deploy.conf に保存され、次回は最初に「前回の設定を使いますか?」と聞きます。Enter で前回と同じ内容になり、聞かれるのはパスワードだけです (鍵でログインできるので SSH パスワードは不要です)。デプロイが成功すると最後に、同じ内容を質問なしで実行するためのファイルを保存するかを聞きます (自動実行)。

wpg がすでに入っていて wpg.prev があると、最初にメニューが出ます。

wpg はインストール済みです (wpg 0.1.0)。何をしますか?
  1) インストール / アップグレード
  2) ロールバック (1 つ前のバイナリ wpg.prev に戻す)
  3) 中止

バイナリの用意

方法向いている場合必要なもの
ホスト上でソースからビルド (既定)ほとんどの場合。ホストの glibc に合ったバイナリができます。ホストからインターネット (apt、rustup、crates.io、GitHub) に出られること。メモリ 2 GiB 以上 (足りなければスワップ)、空きディスク 5 GiB 程度。
手元の Linux 用バイナリをアップロード別の Linux マシンでビルド済みのとき。wpg (ELF) ファイル。Windows の wpg.exe は使えません。ホストより新しい glibc でビルドしたものは動きません。
GitHub Release からダウンロードリリースが公開された後。手元のマシンからインターネット。現時点ではリリースはまだありません (ウィザードに「まだリリースがありません」と出ます)。
このマシンでビルド (deploy.sh のみ)手元が同じ CPU アーキテクチャの Linux のとき。Rust と trunk (従来の deploy.sh の動作)。

ホスト上でビルドするときは次を行います。

  1. root で build-essential、pkg-config、libpcap-dev、curl、git、ca-certificates を apt-get で入れます (dnf のディストリビューションでは相当するパッケージをできる範囲で入れます)。
  2. SSH ユーザで rustup (stable、minimal プロファイル、~/.cargo)、wasm32-unknown-unknown ターゲット、trunk (ビルド済みのものを取得。取れなければ cargo install trunk) を入れます。
  3. ソースを ~/wpg-build/src に用意します。既定はこのパソコンのソースのアップロードです (Git があれば git archive。コミットしていない変更も含みますが、Git 管理外のファイルは含みません。Git が無ければ tar.exe で target などを除いて固めます)。GitHub からの git clone (ブランチ / タグ指定) も選べます。
  4. scripts/build.sh --release でビルドします。~/wpg-build/target は次回も使うため、2 回目以降のビルドは速くなります。メモリが少ないホストでは並列数を自動で減らします。

1 回の実行で行うこと

  1. SSH 接続 (必要なら鍵の登録) と、ホストの情報の取得 (OS、CPU、sudo、インタフェース、インストール済みの wpg、インターネット接続)。
  2. ホストの一時ディレクトリ (/tmp/wpg-deploy.*、終了時に削除) へのアップロード。
  3. (ホスト上でビルドするとき) 依存パッケージの導入とビルド。
  4. インストール (scripts/lib/deploy-remote.sh を root で実行): バイナリを /usr/local/bin/wpg に置き (直前のものは wpg.prev)、setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip を付けます (setcap が無く apt-get があれば libcap2-bin を先に入れます)。サービスとして入れるときは、システムユーザ wpg、/etc/wpg/wpg.toml (無い場合のみ)、/etc/wpg/wpg.env、/etc/wpg/password を作り、wpg.service を (再) 起動します。ufw / firewalld が有効でポートが開いていなければ、開け方を表示します (ファイアウォールは変更しません)。
  5. ホスト上の wpg doctor の表示と、GET /api/health が応答するまでの待機 (最大 30 秒。応答しなければ journal の末尾を表示)。
  6. 開く URL の表示。

各ステップは [3/6] のように番号付きで色分けして表示され、すべてログファイルにも残ります (Windows: %LOCALAPPDATA%\wpg\deploy-logs\、deploy.sh のウィザード: ~/.local/state/wpg/)。失敗すると、失敗したステップ、直前の出力、対処のヒントを表示します。

コマンドラインで使う

deploy.sh

従来のオプションはそのまま使えます。

# ビルド、アップロード、setcap のみ (ホスト上で `wpg send` / `wpg serve` を自分で実行する)
scripts/deploy.sh ubuntu@192.0.2.10

# 全アドレスで待ち受け、ens3 でだけ送信を許可するサービスとしてインストール
scripts/deploy.sh ubuntu@192.0.2.10 --service --iface ens3 --password-file ./admin-password

# ホスト上でソースからビルドしてインストール (パスワードは 1 回だけ聞かれ、鍵が登録される)
scripts/deploy.sh ubuntu@192.0.2.10 --ask-password --sudo-password --build-on-host --service --iface ens3

# タスクランナー経由でも同じ
just deploy ubuntu@192.0.2.10

# 何も変更せず、実行されるコマンドだけを表示
scripts/deploy.sh ubuntu@192.0.2.10 --service --dry-run

--password-file には、1 行目に管理者パスワード (平文) または argon2id ハッシュを書いたローカルファイルを指定します。ホストには /etc/wpg/password (モード 0640、グループ wpg) として置かれます。指定しない場合、ホストにパスワードが既に無ければ (/etc/wpg/password、/etc/wpg/wpg.toml の password_hash / password_file、既存のユーザデータベースのいずれも無ければ)、ループバック以外のアドレスでサーバを起動することを拒否します。代わりに --bind 127.0.0.1:8080 と SSH トンネル (ssh -L 8080:127.0.0.1:8080 ubuntu@192.0.2.10) を使うか、隔離された検証ネットワークに限って --allow-insecure を使ってください。

オプション意味
(引数なし)、--interactiveウィザード。
--iface <name>ジョブが送信してよいインタフェース (複数指定可)。WPG_TX__ALLOWED_IFACES に書かれます。管理用インタフェースは含めないでください。
--servicewpg.service をインストール / 更新して再起動します。
--no-serviceサービスを入れません (--config の service=1 を打ち消します)。
--bind <addr:port>サービスの待ち受けアドレス (既定 0.0.0.0:8080)。
--password-file <file>サービスの管理者パスワード (または argon2 ハッシュ)。
--allow-insecureパスワード無しでループバック以外のアドレスで起動します (wpg serve --allow-insecure を実行する drop-in を追加)。
--binary <file>target/release/wpg の代わりにデプロイするバイナリ。
--target <triple>別ターゲット向けにビルドします。例: aarch64-unknown-linux-gnu (クロスリンカが必要)。
--build-on-hostホスト上でソースからビルドします。--source local (既定。このチェックアウトをアップロード) か --source git (--git-url、--git-ref。既定は GitHub の main)。
--release-tag <tag>GitHub Release (latest で最新) の Linux 用バイナリを使います。
--prefix <dir>ホスト側のインストール先 (既定 /usr/local)。
--port <n>、--ssh-opt <opt>SSH のポートと追加の -o オプション (例: --ssh-opt IdentityFile=~/.ssh/lab)。
--identity <file>使う SSH 秘密鍵。
--ask-passwordSSH パスワードを 1 回聞き、デプロイ用の鍵 ~/.ssh/wpg_deploy_ed25519 をホストに登録します。
--sudo-passwordsudo パスワードを先に聞き、sudo -S に標準入力で渡します (既定では sudo が SSH の端末で聞きます)。
--terminal、--snmp-trapWeb ターミナル / SNMP トラップ受信を有効にします (後述)。
--dhcp-iface <名前>DHCP サーバーが応答するインタフェースを固定します (/etc/wpg/wpg.env の WPG_DHCP__IFACE。--service と併用)。DHCP サーバー を参照。
--dhcp-iface-addr <アドレス/長さ>--dhcp-iface の固定 IP (複数可、カンマ区切り可。例 192.168.100.1/24,2001:db8:1::1/64)。/etc/netplan/90-wpg-<IF>.yaml を書いて netplan apply します。デフォルトルートのある IF には設定しません。
--no-templatesサンプルテンプレートを /usr/local/share/wpg/templates にコピーしません。
--no-healthcheckヘルスチェックを省略します。
--rollback/usr/local/bin/wpg と wpg.prev を入れ替えてサービスを再起動します。2 回実行すると元に戻ります。
--dpdk、--hugepages <n>DPDK 向けにホストを準備します (後述)。
--profile <file>、--lang <ja|en>、--log <file>ウィザードの回答ファイル、表示言語、ログファイル。
--dry-runコマンドを表示するだけで実行しません。
--config、--yes、--json、--skip-if-current、--check-config、--targets、--section、--parallel、--set自動実行用 (自動実行)。

deploy.ps1

ウィザードの質問はすべてパラメータでも渡せます。-HostName を付けるとウィザードは起動しません (足りないパスワードだけを聞きます。-Yes を付けると何も聞かず、足りなければすぐに失敗します)。

# ホスト上でビルドしてサービスとして入れる (質問なし。sudo パスワードは環境変数 WPG_DEPLOY_SUDO_PASSWORD など)
.\scripts\deploy.ps1 -HostName 192.0.2.10 -User cisco -Iface ens3,ens4 -Yes

# 手元の Linux 用バイナリを使う
.\scripts\deploy.ps1 -HostName 192.0.2.10 -User cisco -BinarySource file -Binary .\wpg

# GitHub の v0.2.0 タグからビルド
.\scripts\deploy.ps1 -HostName 192.0.2.10 -Source git -GitRef v0.2.0

# ロールバック
.\scripts\deploy.ps1 -HostName 192.0.2.10 -User cisco -Rollback
パラメータ意味
-HostName、-User、-Port、-Identity接続先、SSH ユーザ (既定 ubuntu)、ポート、既存の秘密鍵。
-SshPassword、-SudoPassword、-AdminPasswordSecureString ((Read-Host -AsSecureString) など)。省略すると必要なときに聞きます。
-BinarySource build|file|releaseホスト上でビルド (既定)、-Binary のファイル、GitHub Release (-ReleaseTag)。
-Source local|git、-GitUrl、-GitRefビルドするソース。
-Bind、-Iface待ち受けアドレス、送信を許可するインタフェース。
-NoServiceサービスを入れません (既定は入れます)。
-Terminal、-SnmpTrapWeb ターミナル / SNMP トラップ受信。
-DhcpIface、-DhcpIfaceAddrDHCP サーバーのインタフェースと固定 IP (--dhcp-iface / --dhcp-iface-addr と同じ)。
-Rollback、-NoTemplates、-NoHealthcheckdeploy.sh と同じ。
-ProfilePath、-Lang ja|en、-LogFile回答ファイル、表示言語、ログファイル。
-Interactive、-Yes、-DryRunパラメータを既定値にしてウィザードを起動 / 何も質問しない (確認もパスワードも) / 接続と確認だけ行い、ビルドとインストールはしない。
-Prefix、-AllowInsecureホスト側のインストール先、パスワード無しでの起動 (deploy.sh と同じ)。
-ConfigFile、-Json、-SkipIfCurrent、-CheckConfig、-Targets、-Section、-Parallel、-Set自動実行用 (自動実行)。

自動実行 (無人実行)

手で入れるときはウィザード、決まった構成を繰り返し入れるとき (定期アップグレード、複数台、CI) は 回答ファイル + --yes で、質問なしに最後まで実行できます。

いちばん簡単な方法: ウィザードで作る

ウィザードの最後 (デプロイが成功した後) に次のように聞かれます。

この設定で次回から自動実行するファイルを保存しますか? (パスワードは保存しません) [Y/n]:
保存先 [C:\Users\you\AppData\Roaming\wpg\deploy-192.0.2.10.conf]:
sudo パスワードを暗号化して保存しますか? (Windows の DPAPI。この Windows ユーザーがこの PC でだけ復号できます) [Y/n]:
保存しました: C:\Users\you\AppData\Roaming\wpg\deploy-192.0.2.10.conf (パスワードは平文では含みません)
次回からは、質問なしで次の 1 行で実行できます:
  powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\work\web-packet-generator\scripts\deploy.ps1" -ConfigFile "C:\Users\you\AppData\Roaming\wpg\deploy-192.0.2.10.conf" -Yes -SkipIfCurrent
定期実行の例 (タスク スケジューラ、毎週日曜 3:17。ログは %LOCALAPPDATA%\wpg\deploy-logs に残ります):
  schtasks /Create /TN "wpg deploy 192.0.2.10" /SC WEEKLY /D SUN /ST 03:17 /TR "..."

表示された 1 行をそのままコピーして使えます (deploy.sh では scripts/deploy.sh --config ~/.config/wpg/deploy-192.0.2.10.conf --yes --skip-if-current と cron の例が出ます)。SSH はウィザードが登録したデプロイ用の鍵で入るので、SSH パスワードは不要です。sudo にパスワードが要るホストでは、Windows なら上の質問で DPAPI で暗号化して保存でき、Linux / macOS では環境変数かパスワードファイル (後述) を使います。

回答ファイル

ウィザードが保存する deploy.conf と同じ形式です (キー=値 の行、# で始まる行はコメント)。手で書いてもかまいません。どちらのスクリプトでも同じファイルを読めます。

# deploy.wpg.conf
host=192.0.2.10
user=cisco
binary_source=build
source=git
git_ref=main
bind=0.0.0.0:8080
ifaces=ens3,ens4
service=1
sudo_password_file=/home/you/.config/wpg/sudo.pw
scripts/deploy.sh --config deploy.wpg.conf --yes                       # Linux / macOS
scripts/deploy.sh --config deploy.wpg.conf --check-config              # 読み込んだ設定を表示するだけ (接続しない)
.\scripts\deploy.ps1 -ConfigFile .\deploy.wpg.conf -Yes                 # Windows

ファイル内の相対パス (binary_file、identity、*_password_file など) は回答ファイルのあるフォルダから見たパスです。コマンドラインのオプションは回答ファイルより優先されます (--set key=value / -Set "key=value" で任意のキーを上書きできます)。知らないキーがあるとエラー (終了コード 1) になるので、書き間違いに気付けます。

キー既定値意味
host(必須)接続先。user@host の形も可。
userubuntuSSH ユーザ。
ssh_port (port)22SSH ポート。
identity(なし)使う SSH 秘密鍵。省略時はデプロイ用の鍵 (wpg_deploy_ed25519)、ssh-agent / 既定の鍵の順に試します。
binary_sourcebuildbuild (ホスト上でビルド)、file (binary_file をアップロード)、release (GitHub Release)。deploy.sh では local (このマシンでビルド) も可。
binary_filebinary_source=file のときの Linux 用バイナリ。
sourcelocalbuild のときのソース: local (このチェックアウトをアップロード) か git。
git_url、git_refGitHub、mainsource=git のときのリポジトリとブランチ / タグ / コミット。
release_taglatestbinary_source=release のときのタグ。
bind0.0.0.0:8080待ち受けアドレス。
ifaces(すべて)送信を許可するインタフェース (カンマ区切り)。
service1systemd サービスとして入れる。
terminal、snmp_trap0Web ターミナル / SNMP トラップ受信。
dhcp_iface、dhcp_iface_addr空DHCP サーバーのインタフェースと固定 IP (カンマ区切り)。
templates、healthcheck1サンプルテンプレートのコピー / ヘルスチェック。
allow_insecure0パスワード無しでループバック以外で待ち受ける。
prefix/usr/localホスト側のインストール先。
skip_if_current0--skip-if-current と同じ。
dpdk、hugepages0、1024DPDK の準備 (deploy.sh のみ)。
admin_password_file、ssh_password_file、sudo_password_fileパスワード (1 行目) を書いた、自分で作ったファイル。admin_password_file は argon2 ハッシュでも可。
admin_password_dpapi、ssh_password_dpapi、sudo_password_dpapiDPAPI で暗号化したファイル (deploy.ps1、Windows のみ。ウィザードが作ります)。
nameセクション名 / ホスト結果の表と JSON に出す名前。
parallel1複数台のとき、同時に入れる台数。
lang環境からja / en。

真偽値は 1 / 0 (yes / no、true / false も可) です。

パスワードの渡し方 (質問なしのとき)

方法SSHsudo管理者 (Web UI)
SSH 鍵 (おすすめ)デプロイ用の鍵 / identity= / ssh-agent--
環境変数WPG_DEPLOY_SSH_PASSWORDWPG_DEPLOY_SUDO_PASSWORDWPG_DEPLOY_ADMIN_PASSWORD
ファイル (自分で作る、chmod 600)ssh_password_file=sudo_password_file=admin_password_file=
DPAPI ファイル (Windows)ssh_password_dpapi=sudo_password_dpapi=admin_password_dpapi=
  • 上から順に探します。deploy.ps1 では -SshPassword などの SecureString パラメータが最優先です。
  • SSH パスワードは鍵でログインできないときだけ使い、そのときデプロイ用の鍵を登録します (次回からは不要)。sudo パスワードが無いときは SSH パスワードを試します。NOPASSWD の sudo や root ログインなら不要です。
  • 管理者パスワードは、初回のインストールでループバック以外 (0.0.0.0:8080 など) に待ち受けるときだけ必須です。2 回目以降は省略すると変更しません (指定すると毎回書き換えます)。
  • スクリプトがパスワードを平文でファイルに書くことはありません。 DPAPI ファイルは ConvertFrom-SecureString (鍵なし) の出力で、作った Windows ユーザーがその PC でだけ復号できます。タスク スケジューラでは同じユーザーで実行してください。
  • 必要なパスワードが見つからないときは、質問せずにすぐ失敗します (どの環境変数 / キーを設定すればよいかを表示し、終了コード 2 (SSH / sudo) または 1 (管理者パスワード))。--yes / -Yes が無くても、標準入力が端末でない (cron、パイプ、-NonInteractive) ときは質問できないので、--yes を付けるよう表示して終了コード 1 で終わります。

終了コード

コード意味
0成功。--skip-if-current で何もしなかったとき、--dry-run、--check-config も 0。
1使い方の誤り、回答ファイルの誤り、必要な設定や管理者パスワードが無い、--yes 無しで質問できない。
2接続 / SSH 認証 / sudo の失敗 (SSH / sudo のパスワードが無い場合を含む)。
3バイナリの用意 (ローカルのビルド、Release のダウンロード、ホスト上の依存パッケージ導入とビルド) の失敗。
4アップロードまたはインストールの失敗。
5ヘルスチェックの失敗 (インストールは済んでいます)。
6複数台のうち 1 台以上が失敗 (各ホストのコードは表と JSON にあります)。
130Ctrl+C などで中断 (deploy.sh)。

--json / -Json

標準出力に結果の JSON だけを出します (ログは標準エラーとログファイルへ)。1 台でも複数台でも同じ形です。

{"tool":"wpg-deploy","format":1,"status":"ok","exit_code":0,"dry_run":false,"message":"",
 "hosts":[{"name":"lab1","host":"192.0.2.10","user":"cisco","port":22,"status":"ok","exit_code":0,
  "failed_step":"","message":"","version_before":"wpg 0.1.0","version_after":"wpg 0.1.0",
  "source_id":"git:24d946f6614eecbff02ca481df380aafeb63f368","url":"http://192.0.2.10:8080/",
  "dry_run":false,"log":"/home/you/.local/state/wpg/deploy-20261027-031700-192.0.2.10.log",
  "started_at":"2026-10-27T03:17:00Z","duration_s":41}]}

ホストの status は ok、skipped (最新だったので何もしなかった)、dry-run、checked、aborted、failed のいずれかです。失敗すると failed_step (config、connect、sudo、binary、deps、build、upload、install、health) と message が入ります。

--skip-if-current / -SkipIfCurrent: 変わっていなければ何もしない

デプロイのたびに、ホストの /usr/local/share/wpg/deploy.stamp に「何をどの設定で入れたか」(ソースの識別子、設定、バイナリの SHA-256、日時。パスワードは含みません) を記録します。--skip-if-current を付けると、接続して次がすべて一致するときはビルドもインストールもせずに終了します (終了コード 0、status は skipped)。sudo パスワードも使いません。

  • ソースの識別子が同じ: source=git ならブランチ / タグが指すコミット (git ls-remote で解決)、source=local ならこのチェックアウトのコミット (コミットしていない変更があればその差分のハッシュも)、binary_source=file ならファイルの SHA-256、release なら Release のファイルの URL。
  • 設定 (bind、ifaces、service、terminal、snmp_trap、dhcp_iface、dhcp_iface_addr、templates、allow_insecure、prefix) が同じ。
  • インストール済みのバイナリが記録と同じ (ロールバックや手動の置き換えがあれば再デプロイします)。
  • サービスとして入れるときは wpg.service が動いていて、ヘルスチェックに応答する。

wpg --version はコミットを含まないため、この記録ファイルで判定します。判定できないとき (Git が無い、参照を解決できない) は警告を出して通常どおりデプロイします。なお、同じバイナリを入れ直したときは wpg.prev を上書きしません (1 つ前のバージョンが残ります)。

--dry-run / -DryRun (質問なし)

--yes と組み合わせると、接続してホストの情報を読み、パスワードがそろっているか (sudo のパスワードは実際に確認) を調べ、実行するはずのコマンドを表示します。ホストは変更しません (鍵の登録もしません)。CI で設定を確かめるのに使えます。接続せずに回答ファイルだけを確かめるには --check-config / -CheckConfig を使います。

複数台に入れる

回答ファイルに [host <名前>] のセクションを書くと、セクションごとに 1 台ずつ入れます。セクションの前に書いたキーは全台の共通の値で、セクション内の値が優先します (host= を省くとセクション名がホスト名になります)。

# lab.conf
user=cisco
binary_source=build
source=git
git_ref=v0.2.0
sudo_password_file=sudo.pw

[host r1]
host=192.0.2.11
ifaces=ens3

[host r2]
host=192.0.2.12
ifaces=ens3,ens4
bind=127.0.0.1:8080

ホストの一覧だけを別のファイルにすることもできます (--targets / -Targets。1 行 1 台、[user@]host[:port] の後に キー=値 を並べられます。相対パスはこのファイルから見たパス)。

# hosts.txt
cisco@192.0.2.11 ifaces=ens3
cisco@192.0.2.12:2222 ifaces=ens3,ens4
scripts/deploy.sh --config lab.conf --yes --parallel 2
scripts/deploy.sh --config common.conf --targets hosts.txt --yes --json > result.json
.\scripts\deploy.ps1 -ConfigFile .\lab.conf -Yes -Parallel 2

各ホストは別のプロセスで実行され (--parallel / -Parallel で同時に実行する台数を指定、既定 1)、ホストごとのログは ~/.local/state/wpg/deploy-<時刻>/ (Windows: %LOCALAPPDATA%\wpg\deploy-logs\deploy-<時刻>\) に残ります。最後に表を表示し、1 台でも失敗すれば終了コード 6 で終わります。

結果
  NAME HOST                     STATUS    EXIT VERSION      DETAIL
  r1   cisco@192.0.2.11         ok        0    0.2.0        git:5d0c1e2...
  r2   cisco@192.0.2.12         skipped   0    0.2.0        git:5d0c1e2...
  r3   cisco@192.0.2.13         failed    2                 cannot connect to cisco@192.0.2.13 (port 22): ssh: connect to host ...
成功 2 台、失敗 1 台

定期実行

Windows (タスク スケジューラ)

ウィザードが表示する schtasks の行をコマンド プロンプトに貼り付けます。手で作るときは次のとおりです (ログオンしていないときも実行するには /RU <ユーザー名> /RP を加えます。DPAPI ファイルを使うときは、ファイルを作ったユーザーで実行してください)。

schtasks /Create /TN "wpg deploy lab" /SC WEEKLY /D SUN /ST 03:17 ^
  /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\work\web-packet-generator\scripts\deploy.ps1 -ConfigFile C:\Users\you\AppData\Roaming\wpg\lab.conf -Yes -SkipIfCurrent"

結果はタスク スケジューラの「前回の実行結果」(終了コード) と %LOCALAPPDATA%\wpg\deploy-logs\ のログで確認できます。

Linux / macOS (cron)

# crontab -e
17 3 * * 0 /home/you/web-packet-generator/scripts/deploy.sh --config /home/you/.config/wpg/lab.conf --yes --skip-if-current >/dev/null 2>&1

sudo パスワードが要るときは、sudo_password_file= (自分で作り chmod 600) を回答ファイルに書くか、ホスト側でデプロイ用ユーザに NOPASSWD を設定してください (cron の環境では環境変数を使いにくいため)。

Linux (systemd ユーザタイマー)

# ~/.config/systemd/user/wpg-deploy.service
[Unit]
Description=wpg unattended deploy

[Service]
Type=oneshot
ExecStart=%h/web-packet-generator/scripts/deploy.sh --config %h/.config/wpg/lab.conf --yes --skip-if-current
# ~/.config/systemd/user/wpg-deploy.timer
[Timer]
OnCalendar=Sun 03:17
Persistent=true

[Install]
WantedBy=timers.target
systemctl --user daemon-reload && systemctl --user enable --now wpg-deploy.timer
journalctl --user -u wpg-deploy      # 実行結果

CI から (GitHub Actions の例)

SSH 鍵と sudo パスワードをリポジトリのシークレットに入れておきます。ホストの公開鍵を known_hosts に入れておくと、初回接続で鍵を自動で受け入れずに済みます。

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: deploy to the lab
        env:
          WPG_DEPLOY_SUDO_PASSWORD: ${{ secrets.LAB_SUDO_PASSWORD }}
          WPG_DEPLOY_ADMIN_PASSWORD: ${{ secrets.LAB_ADMIN_PASSWORD }}
        run: |
          install -m 700 -d ~/.ssh
          printf '%s\n' "${{ secrets.LAB_SSH_KEY }}" > ~/.ssh/lab_ed25519 && chmod 600 ~/.ssh/lab_ed25519
          printf '%s\n' "${{ secrets.LAB_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
          scripts/deploy.sh --config deploy/lab.conf --yes --skip-if-current --json \
            --set identity=$HOME/.ssh/lab_ed25519 --set source=git --set git_ref=${{ github.sha }} > deploy-result.json
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: deploy-result
          path: deploy-result.json

自動実行のオプション一覧

deploy.shdeploy.ps1意味
--config <file>-ConfigFile <file>回答ファイル。
--yes-Yes何も質問しない。
--json-Json標準出力に JSON の結果。
--skip-if-current-SkipIfCurrent最新なら何もしない。
--dry-run-DryRun変更せずに確認とコマンドの表示。
--check-config-CheckConfig回答ファイルを確かめて設定を表示 (接続しない)。
--targets <file>-Targets <file>ホストの一覧ファイル。
--section <name>-Section <name>回答ファイルの 1 つのセクションだけ。
--parallel <n>-Parallel <n>同時に入れる台数。
--set <key=value>-Set "key=value"回答ファイルのキーを上書き (複数可)。
--log <file>-LogFile <file>ログファイル (既定: ~/.local/state/wpg/、%LOCALAPPDATA%\wpg\deploy-logs\)。

セキュリティ

  • SSH パスワードは鍵の登録に 1 回だけ使います。 デプロイ用の鍵 (~/.ssh/wpg_deploy_ed25519、Windows では %USERPROFILE%\.ssh\wpg_deploy_ed25519、パスフレーズ無し) を作り、公開鍵をホストの ~/.ssh/authorized_keys に追記します。パスワードは sshpass (deploy.sh で入っていれば)、または SSH_ASKPASS の一時ヘルパー (OpenSSH 8.4 以降。パスワードは環境変数で渡し、ファイルには書きません。ヘルパーはすぐ削除します) で渡し、どちらも使えなければ ssh 自身がもう一度パスワードを聞きます。鍵が不要になったら、ホストの ~/.ssh/authorized_keys から wpg-deploy@... の行を削除してください。
  • sudo パスワードと管理者パスワードは ssh の標準入力で渡します (sudo -S、cat > /tmp/wpg-deploy.*/password)。コマンドラインやプロセス一覧、手元のディスクには現れません。保存する回答ファイルにもパスワードは入りません。
  • 初めて接続するホストの鍵は StrictHostKeyChecking=accept-new で自動的に受け入れます (変わった鍵は拒否します)。検証ネットワーク以外では、事前に ssh で一度接続して指紋を確認してください。
  • 管理者パスワードはホストに /etc/wpg/password (0640 root:wpg) として置かれ、wpg が起動時にハッシュ化します。
  • 自動実行のパスワードは、環境変数、自分で作るファイル、Windows では DPAPI で暗号化したファイルから読みます。スクリプトがパスワードを平文で保存することはありません (自動実行)。
  • 送信を許可するインタフェースから管理用インタフェースを外してください (ウィザードの既定はそうなっています)。試験トラフィックで SSH が切れることがあります。

Web ターミナルと SNMP トラップ受信

ウィザードで有効にする (--terminal / --snmp-trap、-Terminal / -SnmpTrap) と、/etc/wpg/wpg.toml に次を書きます。

[terminal]
enabled = true
allowed_targets = []

[snmp]
trap_listen = "0.0.0.0:162"
  • 書くのは このデプロイで新しく作った wpg.toml だけ です。既存の wpg.toml は変更せず、追記する内容と sudo systemctl restart wpg を表示します。
  • 古い wpg は知らないキーがあると起動しないため、入れたバイナリの wpg config validate がそのキーを受け付けるときだけ書きます。受け付けなければ警告を出して飛ばします。
  • trap_listen があると、UDP 162 (特権ポート) で待ち受けられるように wpg.service に drop-in (/etc/systemd/system/wpg.service.d/bind-service.conf、CAP_NET_BIND_SERVICE) を追加します。ufw が有効なら sudo ufw allow 162/udp を案内します。

ホストに置かれるもの

パス内容デプロイで書き換えるか
/usr/local/bin/wpg、wpg.prev現在と 1 つ前のバイナリする
/usr/local/share/wpg/templates/サンプルテンプレート (テンプレートライブラリ)する
/usr/local/share/wpg/deploy.stamp最後にデプロイしたソースと設定の記録 (--skip-if-current 用。パスワードは含まない)する
/etc/systemd/system/wpg.servicepackaging/systemd/wpg.service の unitする
/etc/systemd/system/wpg.service.d/allow-insecure.conf (--allow-insecure)、bind-service.conf (SNMP トラップ)する
/etc/wpg/wpg.envWPG_SERVER__BIND、WPG_TX__ALLOWED_IFACES、ライブラリのパス、パスワードファイルする
/etc/wpg/wpg.toml設定ファイル全体 (wpg config init)しない (初回のみ作成)
/etc/wpg/password管理者パスワード指定したときのみ
/var/lib/wpg/データディレクトリ: データベース、ユーザテンプレート、TLS 証明書しない
~/wpg-build/、~/.cargo/、~/.rustup/ (SSH ユーザ)ホスト上でビルドしたときのソース、ビルドキャッシュ、Rust ツールチェーンビルド時のみ

環境変数は wpg.toml より優先されます。wpg.env のキーはデプロイのオプションで変更し、それ以外は wpg.toml で設定してください。unit 自体については サービスとして動かす を参照してください。

--dpdk: ホストの準備のみ

--dpdk はホストを準備するだけです。dpdk バックエンドを使うには、--features dpdk 付きでビルドしたバイナリ (scripts/build.sh --dpdk。--build-on-host と組み合わせるとホスト上で --features dpdk でビルドします)、vfio-pci にバインドした NIC、tx.dpdk_eal_args の EAL 引数が必要です。DPDK / AF_XDP のセットアップ を参照してください。

--dpdk を付けると、スクリプトは次を行います。

  • 2 MiB の hugepage を --hugepages 枚 (既定 1024 = 2 GiB) すぐに確保し、起動時にも確保されるようにします (/etc/sysctl.d/80-wpg-hugepages.conf)。何もマウントされていなければ /dev/hugepages に hugetlbfs をマウントします。
  • vfio-pci をすぐに読み込み、起動時にも読み込まれるようにします (/etc/modules-load.d/wpg-dpdk.conf)。
  • IOMMU グループが無いときに警告します (仮想 IOMMU の無い CML2 の VM で典型的です)。

NIC を vfio-pci にバインドすることはしません。インタフェースがカーネルから外れ、SSH セッションが切れることがあるためです。dpdk-devbind.py で手動で行ってください。DPDK / AF_XDP のセットアップ を参照してください。

アップグレードとロールバック

同じ操作 (ウィザードなら「前回の設定を使いますか?」に Enter) を再実行するとアップグレードになります。新しいバイナリが古いものを置き換え、サービスが再起動し、設定とデータは残ります。アップグレード を参照してください。新しいバージョンに問題があれば、ウィザードのメニューで「ロールバック」を選ぶか、次を実行します。

scripts/deploy.sh ubuntu@192.0.2.10 --rollback

トラブルシューティング

症状対処
ssh / scp が見つかりません (Windows)「設定 > アプリ > オプション機能」で「OpenSSH クライアント」を追加します (管理者 PowerShell: Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0)。
接続できない / タイムアウトアドレス、ポート、ユーザ名を確認し、手動で ssh -p 22 user@host を試します。CML2 では管理用リンク (External Connector) が必要です。
公開鍵を登録できませんでしたパスワードの誤り、またはサーバでパスワード認証が無効 (PasswordAuthentication no)。既存の鍵ファイルを選ぶか、ホスト側で鍵を登録してください。
鍵でログインできませんサーバで公開鍵認証が無効、または ~/.ssh の権限が緩すぎます (chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys)。
sudo に失敗しましたsudo パスワードの誤り、またはユーザが sudo グループに入っていません (sudo usermod -aG sudo <user>)。
ステップ「パッケージの導入」で失敗ホストからインターネットに出られるか (プロキシなら /etc/apt/apt.conf.d/ と ~/.bashrc に設定)、apt が自動更新でロックされていないかを確認し、数分後に再実行します。
ステップ「ビルド」で killed / signal: 9メモリ不足です。スワップを追加して (sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile) 再実行します。
ビルドが毎回失敗するホスト上で rm -rf ~/wpg-build を実行してから再実行します。
the uploaded binary does not run on this host手元のバイナリがホストの glibc / CPU に合いません。ホスト上でのビルドを選びます。
ヘルスチェックが失敗ホストで sudo journalctl -u wpg -n 50。ポートの重複は sudo ss -ltnp。管理者パスワードが無いとループバック以外では起動しません。
ブラウザから開けないファイアウォール (sudo ufw allow 8080/tcp)、CML2 の外部接続、待ち受けアドレス (127.0.0.1 だと SSH トンネルが必要) を確認します。
does not support [terminal] / [snmp]入れた wpg がその機能より古いバージョンです。新しいソースでデプロイし直してください。
日本語が文字化けする (Windows)deploy.ps1 を編集して保存し直した場合は、UTF-8 (BOM 付き) で保存してください。

確認状況

deploy.sh は、Ubuntu 24.04 コンテナ (sshd、systemd の代わりに簡易な systemctl) に対して、ウィザード (パスワードでの鍵登録: sshpass と SSH_ASKPASS の両方、sudo パスワード、インタフェース選択、回答の保存と再利用、ロールバックのメニュー)、ホスト上でのビルド (このチェックアウトのアップロード、rustup と trunk の導入からヘルスチェックまで)、新しい wpg.toml への [terminal] / [snmp] の追記 (対応するバイナリを模したスタブ) と既存の wpg.toml を変更しないことを確認しました。従来の、systemd が動くコンテナでのインストール、パスワード無しでの拒否、--service とヘルスチェック、--rollback、--dpdk の確認結果はそのままです。自動実行は、同じ Ubuntu 24.04 コンテナ (2 つの sshd、それぞれ別のマウント名前空間で /usr/local、/etc/wpg、/var/lib/wpg を分離) に対して deploy.sh で確認しました: 回答ファイルと --yes での初回インストール (環境変数の SSH パスワードで鍵を登録、sudo と管理者パスワードは環境変数、sudo はパスワードファイルからも)、パスワードが足りないときに質問せずすぐ失敗すること (SSH 鍵もパスワードも無い: 2、sudo のパスワードが無い / 違う: 2、初回で管理者パスワードが無い: 1、端末でない標準入力で --yes 無し: 1)、--skip-if-current (変化なしで sudo パスワード無しでもスキップ、バイナリや設定の変更、ロールバックの後は再デプロイ)、--dry-run、--check-config、--json の出力 (python3 -m json.tool で検証)、複数台 (セクション 3 台のうち 1 台が接続できない: 表と JSON にホストごとの結果、終了コード 6。--parallel 2。--targets)、ウィザードの最後の自動実行ファイルの保存と、そのファイルでの再実行。deploy.ps1 / deploy.bat は Windows で実行していません (CI でパースと PowerShell 5.1 互換の構文チェックのみ。自動実行の部分も Windows では未確認です)。CML2 のノードや実機でもまだ確認していません。

サービスとして動かす

Status: draft

サンプルはリポジトリと各リリースアーカイブの packaging/ にあります。どれも、決まった場所の設定ファイル (WPG_CONFIG) と決まったデータディレクトリ (WPG_DATA_DIR) を使って wpg serve を実行します。先に wpg config init --path <file> で設定ファイルを作り、wpg config set-password --config <file> でパスワードを設定してください。ループバック以外のアドレスで待ち受けるサーバは、パスワードが無いと起動しません。

Linux: systemd

packaging/systemd/wpg.service は scripts/deploy.sh --service がインストールするものです。手動で入れる場合:

sudo useradd --system --home-dir /var/lib/wpg --shell /usr/sbin/nologin wpg
sudo install -m 0755 wpg /usr/local/bin/wpg
sudo install -d -m 0750 -o root -g wpg /etc/wpg
sudo wpg config init --path /etc/wpg/wpg.toml          # その後 bind や allowed_ifaces などを編集
sudo wpg config set-password --config /etc/wpg/wpg.toml
sudo chgrp wpg /etc/wpg/wpg.toml && sudo chmod 0640 /etc/wpg/wpg.toml
sudo install -m 0644 packaging/systemd/wpg.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now wpg
journalctl -u wpg -f

unit のポイント:

  • 特権の無いユーザ wpg で動きます。raw ソケットは AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN で得るので、サービス用にはバイナリへの setcap は不要です (NoNewPrivileges=yes の下ではファイルケーパビリティはどのみち無視されます)。
  • StateDirectory=wpg が wpg 所有の /var/lib/wpg を作ります。ProtectSystem=strict により、それ以外のファイルシステムはサーバから読み取り専用になります。
  • EnvironmentFile=-/etc/wpg/wpg.env でホストごとの WPG_* を上書きできます (deploy.sh が書きます)。
  • LimitMEMLOCK=infinity は AF_XDP バックエンド用です (5.11 より前のカーネルでは UMEM が RLIMIT_MEMLOCK に計上されます)。
  • RestrictAddressFamilies は IP と Unix ソケットに加えて AF_PACKET と AF_XDP を許可します。

待ち受けアドレスは wpg.toml の bind か wpg.env の WPG_SERVER__BIND= で変更し、sudo systemctl restart wpg を実行します。

macOS: launchd

packaging/launchd/io.github.seiyafunaokajp.wpg.plist はシステムデーモンです (root で動きます。ChmodBPF を設定していなければ /dev/bpf* に必要です。権限設定 を参照)。

sudo install -m 0755 wpg /usr/local/bin/wpg
sudo mkdir -p /usr/local/etc/wpg /usr/local/var/wpg /usr/local/var/log
sudo /usr/local/bin/wpg config init --path /usr/local/etc/wpg/wpg.toml
sudo /usr/local/bin/wpg config set-password --config /usr/local/etc/wpg/wpg.toml
sudo install -m 0644 packaging/launchd/io.github.seiyafunaokajp.wpg.plist /Library/LaunchDaemons/
sudo launchctl bootstrap system /Library/LaunchDaemons/io.github.seiyafunaokajp.wpg.plist
tail -f /usr/local/var/log/wpg.log

停止と削除は sudo launchctl bootout system/io.github.seiyafunaokajp.wpg です。KeepAlive により、サーバがエラーで終了すると再起動されます。ダウンロードしたバイナリは先に quarantine 属性を外してください。外さないと launchd が起動できません (macOS へのインストール の「リリースバイナリ: Gatekeeper と quarantine」を参照)。

Windows

wpg.exe はコンソールプログラムで、サービスコントロールマネージャ (SCM) のプロトコルに対応していません。そのため、単純な sc.exe create wpg binPath= "C:\...\wpg.exe serve" で登録したサービスはエラー 1053 で起動に失敗します。代わりに次のどちらかを使ってください。

タスクスケジューラ (標準機能)

packaging/windows/wpg-service.ps1 は、起動時に SYSTEM として wpg.exe serve を実行し、停止したら 1 分ごとに再起動するタスクを登録します。管理者として開いた PowerShell で実行します。

.\packaging\windows\wpg-service.ps1 -Action Install -Exe "C:\Program Files\wpg\wpg.exe"
.\packaging\windows\wpg-service.ps1 -Action Status
.\packaging\windows\wpg-service.ps1 -Action Stop
.\packaging\windows\wpg-service.ps1 -Action Uninstall

C:\ProgramData\wpg\wpg.toml が無ければ (wpg config init で) 作り、データは C:\ProgramData\wpg\data に置きます。スクリプトが作るディレクトリは SYSTEM と Administrators だけが開けます。C:\ProgramData の下に新しく作ったフォルダはすべてのユーザが読めますが、ここにはパスワードのハッシュ、データベース、TLS 鍵が入るためです (既存のディレクトリの権限は変えません)。ループバック以外のアドレスで待ち受ける前に、管理者として開いた PowerShell で & "C:\Program Files\wpg\wpg.exe" config set-password --config C:\ProgramData\wpg\wpg.toml でパスワードを設定してください。Npcap が無いときはスクリプトが警告します。

ラッパーで本物のサービスにする

sc.exe / services.msc で管理したい場合は、WinSW か NSSM でラップします。NSSM の例:

nssm install wpg "C:\Program Files\wpg\wpg.exe" serve
nssm set wpg AppEnvironmentExtra WPG_CONFIG=C:\ProgramData\wpg\wpg.toml WPG_DATA_DIR=C:\ProgramData\wpg\data
nssm set wpg AppDirectory C:\ProgramData\wpg\data
sc.exe start wpg
sc.exe query wpg

どちらの場合も Npcap が必要です (wpg doctor が確認します)。Windows Defender ファイアウォールで wpg.exe を許可するのは、ループバック以外で待ち受ける場合に限り、プライベートネットワークだけにしてください。

確認状況

systemd unit は、systemd が動く Ubuntu 24.04 コンテナで scripts/deploy.sh から起動しました (サーバは CAP_NET_RAW と CAP_NET_ADMIN だけを持つユーザ wpg で動き、/api/health に応答しました)。systemd-analyze verify も通ります。リリースのワークフローは、macOS 14 ランナーで Apple silicon 向けアーカイブから launchd デーモンを、Windows Server ランナーで Windows 向けアーカイブからタスクスケジューラのタスクを上記の手順どおりに登録し、/api/health を確認してから停止・削除します。Windows では設定ディレクトリを BUILTIN\Users が読めないことも確認します (リリース手順 の「CI で確認していること」)。どちらのジョブも通っています。再起動 (起動時トリガーと RunAtLoad そのもの)、NSSM / WinSW によるラップ、Windows での Npcap 経由の送信は確認していません。

Docker

Status: draft

リポジトリには multi-stage の Dockerfile と docker-compose.yml があります。ビルドステージ (rust:1-bookworm) は Trunk をダウンロードし、Web UI とリリースバイナリをビルドします。実行用イメージ (debian:bookworm-slim) に入るのは wpg、curl (ヘルスチェック用)、/usr/share/wpg/templates のサンプルテンプレートだけです。

ビルド

docker build -t wpg .
docker build -t wpg --build-arg FEATURES=pcap .     # libpcap バックエンド付き

ビルドにはインターネット接続が必要です (crates.io、GitHub 上の Trunk のリリース、Trunk がダウンロードする Tailwind CSS と wasm-bindgen)。TLS を中継するプロキシの内側では、プロキシの CA 証明書 (PEM) をビルドシークレットで、プロキシのアドレスを標準のビルド引数で渡します。証明書を信頼するのはビルドステージだけで、実行用イメージには入りません。

docker build -t wpg --secret id=ca_certs,src=/path/to/proxy-ca.pem \
  --build-arg HTTPS_PROXY=http://proxy.example:3128 .

Docker Hub の匿名 pull のレート制限にかかる場合は、--build-arg RUST_IMAGE=mirror.gcr.io/library/rust:1-bookworm --build-arg RUNTIME_IMAGE=mirror.gcr.io/library/debian:bookworm-slim のように別のレジストリのベースイメージを使えます。

実行

ホストのインタフェースで送信するには、ホストのネットワーク名前空間と 2 つのケーパビリティが必要です。それ以外はすべて外します。

docker run -d --name wpg --network host \
  --cap-drop ALL --cap-add NET_RAW --cap-add NET_ADMIN \
  -e WPG_PASSWORD='change me' \
  -e WPG_TX__ALLOWED_IFACES='["eth1"]' \
  -v wpg-data:/var/lib/wpg \
  wpg

Compose の場合 (WPG_PASSWORD、WPG_BIND、WPG_ALLOWED_IFACES、WPG_FEATURES を環境変数か .env ファイルから読みます):

WPG_PASSWORD='change me' WPG_ALLOWED_IFACES='["eth1"]' docker compose up -d --build
docker compose ps          # /api/health が応答すると "healthy" になる
docker compose logs -f wpg
設定イメージの既定値補足
WPG_SERVER__BIND0.0.0.0:8080--network host ではホストのポートです。ローカルに限るなら 127.0.0.1:8080。
WPG_PASSWORDなしループバック以外で待ち受けるときは必須で、無いとサーバは起動しません。平文または argon2id ハッシュ。Docker secrets では WPG_AUTH__PASSWORD_FILE=/run/secrets/... が使えます。
WPG_DATA_DIR/var/lib/wpg (ボリューム)データベース、ユーザテンプレート、TLS 証明書。
WPG_TEMPLATES__LIBRARY_PATHS["/usr/share/wpg/templates"]独自のライブラリをマウントしてパスを追加します。
WPG_TX__ALLOWED_IFACESすべてジョブが送信してよいインタフェース。

その他の設定は WPG_<SECTION>__<KEY> 変数で指定するか、wpg.toml をマウントして WPG_CONFIG を設定します。設定リファレンス を参照してください。

プロセスはコンテナ内では root で動きますが、持つのは CAP_NET_RAW と CAP_NET_ADMIN だけです。root 以外のユーザで動かすにはバイナリにファイルケーパビリティが必要で、コンテナのケーパビリティにその一部が無いと実行に失敗するため、イメージでは単純な構成にしています。

制限

  • Linux ホストを使ってください。macOS / Windows の Docker Desktop はコンテナを VM の中で動かすので、--network host は VM のネットワークになり、フレームは物理 NIC に届きません。
  • コンテナ内の wpg doctor はコンテナから見た状態 (ケーパビリティ、インタフェース) を報告します。イメージは dpdk feature なしでビルドします (両方のステージに DPDK のライブラリが必要になるため)。DPDK 用の hugepages と vfio-pci は、いずれにしてもホスト側で準備します。
  • --network host を使わない場合 (既定のブリッジネットワークと -p 8080:8080)、GUI は使えますが、ジョブはコンテナ自身の eth0 でしか送信できません。

確認状況

2026 年 10 月に次を確認しました (Docker 29.8、Linux 6.18 のホスト、追加 feature なしのイメージ)。

  • docker build が最後まで完了 (Trunk による Web UI と cargo build --release --locked)。実行用イメージはディスク上で約 170 MB (圧縮時 44 MB)。
  • docker run --network host --cap-drop ALL --cap-add NET_RAW --cap-add NET_ADMIN -e WPG_PASSWORD=... でヘルスチェックが healthy になり、/api/health と Web UI が応答。コンテナ内の wpg doctor は CAP_NET_RAW / CAP_NET_ADMIN 付きで raw ソケットが使えると報告。
  • コンテナ内で afpacket バックエンドの wpg send により lo へ 100 フレームを送出し、同じコンテナの wpg capture で受信。
  • --build-arg FEATURES=pcap のイメージには libpcap0.8 が入り、wpg doctor が検出し、wpg send --backend pcap で lo へ 50 フレームを送出。
  • docker compose up -d --no-build でサービスが healthy になり、WPG_PASSWORD でのログインが成功 (204)、誤ったパスワードは拒否 (401)。WPG_PASSWORD が無いと compose ファイルのメッセージで起動を拒否。

開発用サンドボックスのプロキシは HTTPS しか通さないため、apt-get の取得先だけを使い捨ての Dockerfile のコピーで https://deb.debian.org に変えました。それ以外はリポジトリの Dockerfile をそのまま使っています。Docker Desktop (macOS / Windows) は確認していません。

アップグレード

Status: draft

アップグレードでは wpg バイナリを置き換えてサーバを再起動します。設定、データベース、テンプレートはそのまま残ります。それぞれがバージョンを持っていて、自動で、またはコマンド 1 つで新しい形式に移行されます。

アップグレードの前に

  1. GitHub Release のページでリリースノートを読みます。

  2. 設定とデータディレクトリをバックアップします。データベースは WAL モードの SQLite なので、先にサーバを止めてください (または sqlite3 wpg.sqlite ".backup wpg.backup.sqlite" でコピーします)。

    sudo systemctl stop wpg
    sudo tar -C / -czf wpg-backup-$(date +%F).tar.gz etc/wpg var/lib/wpg
    
  3. 起動せずに、新しいバイナリで設定とテンプレートを確認します。

    ./wpg-new --version
    WPG_CONFIG=/etc/wpg/wpg.toml ./wpg-new config validate
    ./wpg-new template migrate --check /var/lib/wpg/templates /path/to/your/library
    

インストール方法ごとの手順

インストール方法アップグレードロールバック
scripts/deploy.sh新しいビルドで同じコマンドを再実行scripts/deploy.sh <host> --rollback
systemd (手動)sudo install -m 0755 wpg /usr/local/bin/wpg && sudo systemctl restart wpg古いバイナリを入れ直す
launchdsudo install -m 0755 wpg /usr/local/bin/wpg && sudo launchctl kickstart -k system/io.github.seiyafunaokajp.wpg古いバイナリで同じ操作
Windows のタスクwpg-service.ps1 -Action Stop、wpg.exe を置き換え、-Action Start古い wpg.exe で同じ操作
Docker Composegit pull && docker compose up -d --build (wpg-data ボリュームは残る)古いバージョンをチェックアウトして再ビルド
リリースアーカイブ新しいアーカイブを古いディレクトリに上書き展開 (macOS では quarantine 属性を再度外す)古いアーカイブを展開

Linux では、バイナリのファイルを置き換えるたびに setcap をやり直す必要があります (deploy.sh は自動で行います。systemd unit では不要です)。

移行されるもの

データベース (<data_dir>/wpg.sqlite)

ユーザ、セッション、ジョブ履歴です。スキーマのバージョンは schema_version テーブルに保存されています。起動時に、未適用のマイグレーションをそれぞれ別のトランザクションで順に適用します。手動の作業はありません。新しい wpg が書いたデータベースは “database schema version N is newer than this build supports” で拒否されるので、ダウングレードにはアップグレード前のバックアップが必要です。

設定 (wpg.toml)

未知のキーはエラーになるので、タイプミスが黙って無視されることはありません。新しいバージョンは既定値付きのキーを追加するだけなので、古い wpg.toml はそのまま使えます。ダウングレードした場合は、古いバージョンが知らないキーがあると起動を拒否します。wpg config validate がそのキーを示します。新しいキーとその説明は、wpg config init --path /tmp/wpg.toml で作ったファイルと比べると確認できます。

テンプレート (schema:)

テンプレートは必ず schema: <n> で始まります。テンプレートを読み込むとき (ライブラリ、ユーザテンプレート、バンドル、API)、wpg は古いバージョンをメモリ上で移行します。ファイルは書き換えません。GUI から保存したテンプレートは現在のバージョンで書かれます。バイナリが対応するより新しい schema: のテンプレートと、schema: の無いテンプレートは拒否されます (“unsupported template schema”)。

ディスク上のファイルを書き換えるには (Git で管理しているライブラリなど) wpg template migrate を使います。

wpg template migrate --check templates/        # 古いファイルを一覧。1 つでもあれば終了ステータス 1
wpg template migrate templates/                # 書き換え。元のファイルは <file>.bak に残す
wpg template migrate --no-backup a.wpg.yaml    # .bak を残さない

ディレクトリは *.wpg.yaml / *.wpg.json を再帰的に探します。書き換えたファイルは YAML のコメントが失われ、キーが正規の順序になるので、差分を確認してください。現在のバージョンのファイルには触れません。

現在のテンプレートスキーマは 1 で、これまでに存在するのはこのバージョンだけなので、移行するものはまだありません。この仕組みは、将来フォーマットを変えたときに保存済みのテンプレートが壊れないようにするためのものです。

開発者向け: テンプレートのフォーマットを変えるとき

古いテンプレートをそのまま読めなくなる変更 (キーの改名・移動、意味の変更) には、新しいスキーマバージョンが必要です。

  1. crates/wpg-template/src/lib.rs の SCHEMA_VERSION を上げます。
  2. MIGRATIONS にステップを追加します。バージョン n の文書をバージョン n + 1 に変換する (schema: n + 1 の設定も含む) fn(serde_yaml::Value) -> Result<serde_yaml::Value, TemplateError> です。MIGRATIONS[n - 1] が n を移行します。ステップは順に実行されるので、各ステップは隣のバージョンだけを知っていれば十分です。
  3. バージョン n のフィクスチャを読み込み、期待するバージョン n + 1 のテンプレートと比べるテストを追加し、フィクスチャは残しておきます。
  4. サンプルテンプレートを更新し (wpg template migrate templates/)、docs/schema/template.schema.json を再生成し (wpg template schema)、テンプレートスキーマのリファレンスを日英とも更新します。
  5. リリースノートに変更を書きます。

追加だけの変更 (既定値のある任意のキーを足すなど) には新しいバージョンは不要です。

データベースの変更も同じ考え方です。crates/wpg-server/src/db.rs の MIGRATIONS に SQL のマイグレーションを追加します。リリース済みのマイグレーションは編集しないでください。

DPDK / AF_XDP のセットアップ

Status: draft

afxdp バックエンドは実装済み (M8) ですが、任意機能です。 --features afxdp を付けてビルドしたときだけ有効になります (cargo build --release -p wpg-cli --features afxdp)。copy モードは lo と veth で動作を確認済み、zero-copy は実機 (物理 NIC) では未確認です。 dpdk バックエンド (M8) も任意機能 (--features dpdk) で、確認済みなのは DPDK の仮想デバイス (net_null、net_ring、net_pcap) のみです。物理 NIC と CML2 の virtio PMD は未確認です。

AF_XDP

仕組み

afxdp バックエンドは libbpf / libxdp を使わず、カーネルの ABI (<linux/if_xdp.h>、bpf(2)) を直接呼ぶ最小実装です。追加のビルド依存はありません。ワーカー (--workers) ごとに次を持ちます。

  • AF_XDP ソケット 1 つ。NIC のキュー 1 つに bind します。ワーカー i はキュー --queue + i を使います (既定は 0 から)。
  • UMEM (送出用のフレーム領域、最大 16 MiB)。NIC の NUMA ノードにページを割り当てます (mbind)。
  • TX リングと completion リング。フレームを UMEM のチャンクにコピーし、ディスクリプタを TX リングに積み、カーネルが求めたとき (XDP_USE_NEED_WAKEUP) だけ sendto で起こします。

copy / zero-copy の自動選択 (--xdp-mode)

モード動作
auto (既定)まず zero-copy を試し、だめなら copy モードに切り替えます
copy常に copy モード (XDP_COPY)。lo、veth を含むどのインタフェースでも動きます
zerocopyzero-copy (XDP_ZEROCOPY) のみ。使えなければエラー

多くのドライバ (i40e、ice、ixgbe、igc など) は、XDP プログラムが付いている間しか zero-copy 送出用の XDP リングを作りません。そこで auto / zerocopy は、何もしない 2 命令の XDP_PASS プログラムをドライバモードで付けてから zero-copy で bind します (bpf_link なので、バックエンドを閉じると外れます。すでに別の XDP プログラムが付いていればそのまま使います)。プログラムを読み込めない、ドライバが zero-copy の bind を拒否する、最初の wake-up が失敗する、のいずれかなら copy モードに切り替えます。どちらになったかは wpg bench / wpg send の backend 行に表示されます (AF_XDP zero-copy / AF_XDP copy mode、切り替えた場合は理由も)。

注意: ドライバによっては XDP プログラムの付け外しで NIC のキューを作り直し、リンクが一瞬落ちます。運用中のインタフェースでは --xdp-mode copy を使うか、事前に影響を確認してください。

要件

  • Linux カーネル 5.10 以降 (wpg doctor のチェック kernel.af_xdp)。--busy-poll は 5.11 以降。
  • 権限: copy モードは CAP_NET_RAW。zero-copy は加えて CAP_NET_ADMIN と CAP_BPF (5.8 より前は CAP_SYS_ADMIN)。
sudo setcap cap_net_raw,cap_net_admin,cap_bpf,cap_ipc_lock+ep "$(command -v wpg)"
  • 5.11 より前のカーネルでは UMEM が RLIMIT_MEMLOCK に計上されます。wpg はソフト上限をハード上限まで上げますが、足りなければ ulimit -l unlimited (systemd なら LimitMEMLOCK=infinity) を設定してください。
  • 1 つのキューに bind できる AF_XDP ソケットは 1 つです。使うキュー数ぶんのチャネルを用意します。キューが足りなければ wpg は ethtool -L の案内付きで失敗します。
ethtool -l ens3               # 現在値と最大チャネル数
sudo ethtool -L ens3 combined 4
wpg bench --backend afxdp -i ens3 --workers 4 --auto-pin
  • フレーム長の上限は UMEM のチャンク長です (MTU が 2030 以下なら 2048 B、それより大きければ 4096 B)。超えるフレームは dropped に数えます (ジャンボフレームに必要なマルチバッファ AF_XDP は使っていません)。

主なオプション

オプション意味
--backend afxdpAF_XDP で送出
--xdp-mode auto|copy|zerocopybind モード (上記)
--queue N先頭のキュー番号 (ワーカー i はキュー N+i)
--workers Nワーカー数 = 使うキュー数
--auto-pin / --pin-cores 2,3ワーカーのコア固定 (性能チューニング)
--ring-depth NTX リングのスロット数 (2 のべき乗に丸め、上限は UMEM 16 MiB から決まる)
--busy-pollSO_PREFER_BUSY_POLL / SO_BUSY_POLL を設定し、送出スレッド自身がドライバの NAPI を回す (5.11+)。wpg send では待ち方も busy-poll になる

対応 NIC (zero-copy)

AF_XDP の copy モードは、どのネットワークデバイスでも動きます。zero-copy はドライバの対応が必要です。以下はメインラインの Linux で AF_XDP zero-copy に対応している主なドライバで、カーネル版は対応が入ったおおよその版です。wpg ではどれも実機で確認していません。ディストリビューションのカーネルではバックポートの有無で変わるため、必ず wpg bench の表示で zero-copy になったかを確認してください。

ドライバNICzero-copy 対応 (目安)wpg での確認
i40eIntel X710 / XL710 / XXV7104.20未確認
ixgbeIntel 82599 / X520 / X540 / X5504.20未確認
mlx5_coreNVIDIA (Mellanox) ConnectX-4 Lx 以降5.3未確認
iceIntel E8105.5未確認
stmmacSynopsys DWMAC (組み込み SoC)5.13未確認
igcIntel I225 / I2265.14未確認
virtio_netKVM / CML2 の virtio-net新しいカーネル (6.x) で対応。それ以前は copy モード未確認
vethコンテナ / netnsなし (native XDP は可、送出は copy モード)copy モードで確認済み (4 キュー、2 ワーカー)
loループバックなし (copy モード)copy モードで確認済み

確認済みの範囲 (2026-10、Linux 6.18 のコンテナ、root): lo と veth での copy モード送出と受信側での到着、auto での zero-copy からの切り替え (veth には XDP_PASS プログラムがドライバモードで付き、zero-copy の bind が EOPNOTSUPP で拒否されて copy モードになる)、veth の 2 キューに 2 ワーカー。単体テストは cargo test -p wpg-tx --features afxdp (veth は WPG_AFXDP_VETH=vxa,vxb を付けたときだけ)。性能は docs/perf.md を参照。

DPDK

dpdk バックエンドは DPDK のポーリングモードドライバ (PMD) で送出します。NIC はカーネルから外れ、wpg 自身のスレッドがバッチごとのシステムコールなしで直接扱います。任意機能なので --features dpdk を付けてビルドします (DPDK の開発パッケージと libclang が必要。ビルドを参照)。

cargo build --release -p wpg-cli --features dpdk

確認済みの範囲 (2026-10、Ubuntu 24.04 + DPDK 23.11.4、hugepages と NIC のないコンテナ): --no-huge での EAL 起動、仮想デバイス net_null (wpg bench、2 ワーカー)・net_ring・net_pcap。テンプレートを net_pcap 経由で wpg send すると、pcapfile バックエンドと同じフレームが書き出されました。単体テストは CI で DPDK 24.11 と 23.11 に対して実行します。物理 NIC (vfio-pci)、hugepages、CML2 上の virtio PMD は未確認です。

仕組み

  • EAL (DPDK の環境層) は wpg のプロセスごとに 1 度だけ、最初の dpdk ジョブで起動します。引数は指定した EAL 引数に、上書きできる既定値 2 つを足したものです: -l <wpg が使える先頭の CPU> (メイン lcore のみ。送出ワーカーは wpg 自身のスレッドで、非 EAL lcore として DPDK に登録します) と --in-memory (/var/run/dpdk にファイルを作らない。--no-huge を指定したときは代わりに --no-shconf)。EAL はプロセス内で再起動できません。失敗したときや引数を変えたいときは wpg serve を再起動してください (wpg send / wpg bench は毎回新しいプロセスです)。
  • インタフェースには DPDK のポートを指定します: ポート番号 (0)、デバイス名 (バインドした NIC の PCI アドレス 0000:00:04.0)、または仮想デバイス。仮想デバイスは devargs 付きで書けて、初回に追加されます: net_tap0,iface=dtap0 (カーネルの TAP インタフェース。試験に便利)、net_pcap0,tx_pcap=/tmp/out.pcap (pcap ファイルに書き出す)、net_null0 (捨てる。ベンチマーク用)。見つからない名前は、EAL が見つけたポートの一覧付きでエラーになります。
  • ワーカー (--workers N) は 1 つのポートを共有します。ポートを --queue + N 本の TX キューで設定し、ワーカー i は TX キュー --queue + i で送ります。1 つのポートを同時に使えるジョブは 1 つです。ジョブが終わるとポートを停止します。
  • バッファ: ポートごとに NIC の NUMA ソケット上の mbuf プールを 1 つ作り、大きさは --ring-depth (キューあたりの TX ディスクリプタ数。ドライバの上下限に丸めます) と --batch から決めます。フレームは mbuf にコピーします (データ領域 2048 オクテット。それより長いフレームは dropped。ジャンボフレームは非対応)。TX リングが一杯なら最大 10 ms 再試行し、残りは dropped に数えます。ドライバが対応していれば MBUF_FAST_FREE を有効にします。
  • wpg send / wpg bench の backend 行に、DPDK のバージョン、ポート、ドライバ、キュー、ディスクリプタ数、プール、NUMA ソケット、リンク状態、EAL 引数の全体を表示します。

ホストの準備

scripts/deploy.sh <host> --dpdk [--hugepages N] が最初の 2 手順 (hugepages の確保と起動時の設定、hugetlbfs、vfio-pci、IOMMU の確認) を行います。NIC のバインドは行いません。scripts/deploy.sh によるデプロイ を参照してください。

  1. Hugepages (wpg doctor のチェック hugepages。未設定なら警告)。4 ワーカー・既定の --ring-depth 4096 でポート 1 つのプールは約 70 MiB、これにドライバの確保分が加わります。

    echo 1024 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
    grep Huge /proc/meminfo
    
  2. IOMMU と vfio: 物理マシンでは IOMMU を有効にし (カーネル引数 intel_iommu=on iommu=pt または amd_iommu=on)、sudo modprobe vfio-pci します。

  3. NIC のバインド。インタフェースはカーネルから (そして wpg ifaces から) 消えるので、ssh セッションが通っているインタフェースは絶対にバインドしないでください。

    dpdk-devbind.py --status                      # PCI アドレスと現在のドライバ
    sudo ip link set ens4 down
    sudo dpdk-devbind.py --bind=vfio-pci 0000:00:04.0
    # カーネルに戻す: sudo dpdk-devbind.py --bind=virtio-pci 0000:00:04.0 (または ixgbe、i40e など)
    

    NVIDIA / Mellanox ConnectX (mlx5) は例外で、カーネルのドライバのまま rdma-core 経由で DPDK から使います。バインドし直さないでください。

  4. 権限: root で実行します。一般ユーザーでの vfio には /dev/vfio/* の権限、CAP_IPC_LOCK / 大きな RLIMIT_MEMLOCK、hugepage のマウントへのアクセスが必要で、ここでは扱いません。

EAL 引数

wpg send / wpg bench では --eal-args (1 つの文字列を空白で分割)、wpg serve では wpg.toml の tx.dpdk_eal_args (設定リファレンス) または WPG_TX__DPDK_EAL_ARGS で渡します。よく使うもの:

引数意味
-a 0000:00:04.0この PCI デバイスだけを probe する (複数指定可)。指定しなければ DPDK ドライバにバインドされた NIC をすべて使う
-l 2メイン lcore (既定は wpg が使える先頭の CPU)。送出ワーカーはこれまでどおり --pin-cores / --auto-pin で固定
--socket-mem 512 / -m 512最初に確保する hugepage メモリ (MiB)
--vdev net_tap0,iface=dtap0起動時に仮想デバイスを作る (インタフェースに名前を書いても可。上記)
--file-prefix wpg--in-memory の代わりに共有のランタイムファイルを使う (dpdk-proc-info やテレメトリソケット用)
--log-level lib.eal:debug失敗したときに EAL のログを増やす
--no-huge -m 256hugepages なしで動かす (仮想デバイスのみ。物理 NIC には hugepages が必要)
sudo wpg bench --backend dpdk -i 0000:00:04.0 --eal-args "-a 0000:00:04.0" --workers 2 --auto-pin
sudo wpg send t.wpg.yaml --backend dpdk -i 0000:00:04.0 --eal-args "-a 0000:00:04.0" --rate 1Mpps

# NIC なし: tcpdump で見られる TAP インタフェース (root が必要)
sudo wpg send t.wpg.yaml --backend dpdk -i net_tap0,iface=dtap0 --count 10 &
sudo tcpdump -ni dtap0
# wpg.toml
[tx]
default_backend = "dpdk"
allowed_ifaces = ["0000:00:04.0"]
dpdk_eal_args = ["-a", "0000:00:04.0", "-l", "1"]

CML2 と virtio

CML2 の Ubuntu ノードのデータ用インタフェースは virtio-net デバイスで、DPDK は virtio PMD (net_virtio、標準の DPDK パッケージに含まれる) で扱います。

  • ゲストには通常 IOMMU がないため、vfio-pci はバインドを拒否します。vfio の no-IOMMU モード (バインド前に echo 1 | sudo tee /sys/module/vfio/parameters/enable_unsafe_noiommu_mode。DMA が隔離されないため “unsafe” ですが、検証用 VM なら許容範囲) か uio_pci_generic を使います。
  • 管理用インタフェース (通常 ens2) はカーネルに残し、データ用インタフェースだけをバインドします。
  • virtio PMD の TX キュー数は、ふつうノードの vCPU 数 / virtio のキューペア数までです。それを超える --workers はキュー数を示すエラーになります。
  • 性能は DPDK ではなく、ホストの vhost 経路と仮想リンクで頭打ちになります。DPDK に頼る前に同じリンクで afpacket と比べてください。CML2 では差が小さいことがよくあります。
  • 送出に NIC の MAC アドレスは関係ありません (送信元 MAC はテンプレートのもの)。送出だけならプロミスキャスモードも不要です。

制約

  • 送出のみ (wpg capture の DPDK 受信はなし)。
  • フレームは 2048 オクテットまで。マルチセグメント mbuf、TX のチェックサム / セグメンテーションオフロードは使いません (wpg が完成したフレームを作るため)。
  • 1 つのポートを同時に使えるジョブは 1 つ。EAL 引数はプロセスの間固定です。
  • DPDK は共有ライブラリ版のみ (PMD はプラグインとして読み込まれます)。

期待性能 (spec §2.2、実機では未計測): 物理 NIC で AF_XDP は 1 コアあたり数 Mpps、DPDK は 1 コアあたり 10 Mpps 以上。計測したら docs/perf.md のチェックリストで記録してください。

バインディングのビルド (dpdk-sys)

バインディングは dpdk-sys crate にあります (ADR-0004)。link feature (wpg-tx の dpdk feature が有効にします) を付けると、ビルドスクリプトが pkg-config で DPDK (libdpdk、23.11 以降。24.11 / 23.11 以外は警告付きでビルド) を探し、bindgen でバインディング (EAL、ethdev、mempool / mbuf、lcore、RTE_* 定数) を生成します。ヘッダ内で static inline になっている高速パスは、DPDK 自身の cflags でコンパイルした小さな C の shim で包みます (wpg_rte_eth_tx_burst、wpg_rte_pktmbuf_alloc、wpg_rte_errno など)。feature を付けなければ crate は空なので、通常のビルドに DPDK は要りません。

# Debian 13 (DPDK 24.11) / Ubuntu 24.04 (DPDK 23.11)
sudo apt install dpdk-dev libclang-dev pkg-config
cargo test -p dpdk-sys --features link     # バインディング + net_ring ポートでの EAL スモークテスト
cargo build -p wpg-tx --features dpdk      # バインディングをリンクした wpg-tx

ソースからビルドした DPDK (meson / ninja) を使う場合は、pkg-config と共有ライブラリの場所を指定します。

export PKG_CONFIG_PATH=/opt/dpdk-24.11/lib/x86_64-linux-gnu/pkgconfig
export LD_LIBRARY_PATH=/opt/dpdk-24.11/lib/x86_64-linux-gnu

DPDK 24.11 は、親ディレクトリが world-writable (/tmp など) な場所から PMD プラグインを読み込むことを拒否します。/opt や /usr/local にインストールしてください。スモークテストは EAL を --no-huge --no-pci で起動し、net_ring の仮想ポートを使うため、hugepages・NIC・root のいずれも不要です。CI (ジョブ dpdk) が両方の LTS で実行します。DPDK は共有ライブラリ版のみ対応です (PMD はプラグインとして読み込まれます)。バックエンド自体のテスト (cargo test -p wpg-tx --features dpdk --lib dpdk) も net_ring / net_pcap / net_null を使うため、hugepages・NIC・root なしで動きます。

CML2 での注意点

Status: draft

最初のデプロイ先は、virtio-net インタフェースを持つ Cisco CML2 上の Ubuntu ノードで、afpacket バックエンドが主経路です。このページでは準備と注意点をまとめます。

検証状況: wpg 自身の挙動 (doctor のチェック、エラーメッセージ、フラグ) はコードとコンテナ上での wpg 実行に基づきます。CML2 上での実測はまだ行っていません。 docs/perf.md の数値はすべて lo と null バックエンドで測ったもので、afpacket の上限の目安にすぎません。以下の CML2 固有の記述 (ブリッジの挙動、MAC フィルタ) は一般的な Linux/KVM の知識であり、お使いの CML2 バージョンでの確認が必要です。M2 の「CML2 上での実測」は未完了です。

前提条件 (Prerequisites)

  • virtio-net インタフェースが接続された Ubuntu ノード (22.04 以降、カーネル 5.15 以降推奨)。wpg doctor は TPACKET_V3 に 3.2 以上、AF_XDP に 5.10 以上を要求します。
  • pcap バックエンドも使う場合は --features pcap でビルドし、libpcap0.8 を入れます。afpacket にライブラリは不要です。
  • vCPU は 2 つ以上。送出は 1 本のビジーなスレッドなので、OS 用に 1 コア空けます。

ラボの組み方

最小の構成は、wpg を動かす Ubuntu ノード 1 台と試験対象のノードです。受信と照合 (受信と検証) も行うなら、受信用の Ubuntu ノードをもう 1 台置きます。

External Connector (NAT / ブリッジ) ── ens2 [Ubuntu: wpg] ens3 ── 試験対象 (IOSv、CSR1000v、XRv9k、FRR …) ── ens3 [Ubuntu: 受信側 (任意)]
  1. 管理用のリンク: Ubuntu ノードの最初のインタフェース (ens2) を External Connector につなぎます。バイナリのコピー (scripts/deploy.sh)、ssh、Web UI への接続にだけ使い、試験トラフィックは流しません。

  2. データ用のリンク: 2 番目以降 (ens3、ens4 …) を試験対象につなぎます。リンクの両端が起動していないとインタフェースは carrier なしのままです。

  3. ノードの大きさ: vCPU 2 以上 (--workers N なら N + 1 以上)、メモリ 2 GiB 以上。DPDK を使うなら hugepages のぶん (既定の 1024 ページで 2 GiB) を足します。

  4. 初期設定: Ubuntu ノードの Config (cloud-init の user-data) で、ssh 公開鍵と、必要なら ethtool、tcpdump、libpcap0.8 を入れておくと後が楽です。

    #cloud-config
    ssh_authorized_keys:
      - ssh-ed25519 AAAA... you@workstation
    packages: [ethtool, tcpdump]
    
  5. デプロイ: 手元のマシンから管理用アドレスに対して scripts/deploy.sh を実行します (scripts/deploy.sh によるデプロイ)。送信を許すインタフェースを --iface で限定してください。

    scripts/deploy.sh ubuntu@192.0.2.10 --service --iface ens3 --password-file ./wpg-password
    
  6. Web UI: パスワードを設定して 0.0.0.0:8080 で待ち受けるか、サービスを --bind 127.0.0.1:8080 にして ssh のポート転送 (ssh -L 8080:127.0.0.1:8080 ubuntu@192.0.2.10) で開きます (認証と TLS)。

権限: setcap か root

AF_PACKET ソケットには CAP_NET_RAW が必要です。root で実行するか、バイナリに一度だけ capability を付与します。

sudo setcap cap_net_raw,cap_net_admin+eip /usr/local/bin/wpg

これは wpg doctor が (実行中のバイナリの実パスで) 表示するヒントです。バックエンド自体が拒否された場合は次のメッセージが出ます: AF_PACKET needs CAP_NET_RAW: run as root or grant it with `sudo setcap cap_net_raw,cap_net_admin+ep $(command -v wpg)` 。ファイルを置き換えると capability は消えるため、コピーのたびに setcap をやり直します (scripts/deploy.sh が行います)。systemd では file capability の代わりに AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN を使います。nosuid でマウントされたファイルシステム上では capability は無効です。

インタフェースの選び方

$ wpg ifaces
NAME  IDX  MAC                IPV4       IPV6  MTU    STATE         SPEED  DRIVER
lo    1    -                  127.0.0.1  -     65536  up, loopback  -      -
ifb0  2    66:00:97:e0:50:14  -          -     1500   down          -      -
ifb1  3    62:7f:e1:7b:e9:80  -          -     1500   down          -      -
eth0  4    02:fc:00:00:00:01  192.0.2.2  -     1400   up            -      virtio_net

(上の一覧は開発用コンテナのもので、CML2 のものではありません。) 状態が up で、ドライバが virtio_net で、試験したいリンクにつながっているインタフェースを選びます。ssh セッションが通っている管理用インタフェースでは送出しないでください。CML2 上の Ubuntu では名前は通常 ens2、ens3 などで、CML2 トポロジ上のインタフェース順に並びます。CML2 の UI に表示される MAC と照合して確認します。MTU 列は最大フレームサイズを決めます (後述)。インタフェースは carrier 付きで up である必要があり、CML2 で未接続のインタフェースは carrier なしのままです。

wpg doctor による確認手順

$ wpg doctor
wpg doctor: environment check

✓ Raw sockets are available  [caps.raw_socket]
    euid/elevated=true CAP_NET_RAW=yes CAP_NET_ADMIN=yes bpf_writable=n/a
✓ At least one usable network interface is up  [iface.any_up]
    eth0
✓ Kernel supports AF_XDP (5.10 or newer)  [kernel.af_xdp]
    kernel 6.18.44-fc-v49 (need >= 5.10.0)
✓ Kernel supports TPACKET_V3  [kernel.tpacket_v3]
    kernel 6.18.44-fc-v49 (need >= 3.2.0)
! No hugepages configured (only needed for the DPDK backend)  [hugepages]
    0 x 2048 kB (0 free), 0 x 1048576 kB (0 free)
    → Reserve hugepages and bind the NIC to DPDK: echo 1024 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages ; sudo dpdk-devbind.py --status (then: --bind=vfio-pci <PCI address>)
- Not applicable on this operating system  [npcap]
- Not applicable on this operating system  [backend.pcap]
✓ libpcap is available  [pcap_lib]
    /usr/lib/x86_64-linux-gnu/libpcap.so

5 ok, 1 warning(s), 0 failure(s)

(要約行は Fluent メッセージで多言語化されています。ここでは英語の実出力を載せています。) afpacket で重要なのは caps.raw_socket (なければ fail)、iface.any_up、kernel.tpacket_v3 です。hugepages の警告は DPDK を使わない限り想定内です。wpg doctor --json でスクリプト向けに同じ一覧を得られます。続いて、ホストに影響しない順で動作確認します。

wpg send tpl.wpg.yaml --backend pcapfile -i /tmp/out.pcapng   # ドライラン: pcapng に書くだけで送出しない
wpg bench --backend afpacket -i eth0 --duration 5             # 64 バイトを無制限で送出します
wpg send tpl.wpg.yaml -i eth0 --backend afpacket --rate 10kpps --count 1000

最初は低い --rate から始めてください。wpg bench は CML2 のリンクへ全速力で送ります。

プロミスキャスモードと MAC 制限

wpg は送出専用で、afpacket ソケットはプロトコル 0 で作られるため何も受信しません。したがって 送信ノードでプロミスキャスモードは不要 です。制約は経路側にあります。

  • CML2 ノード間の内部リンク は CML2 ホストが実装する仮想リンクです。ノードのインタフェースに割り当てられた MAC 以外を送信元にしたフレームは、フィルタされたり、学習が期待どおりに行われなかったりする可能性があります。送信元 MAC を偽装するフレーム (ARP スイープ、多数のクライアント MAC を使う DHCP 負荷) が相手に届かない場合は、まずインタフェース本来の MAC を送信元にして試し、それでも届くなら CML2 リンクが残りを落としている可能性を疑います。これは CML2 のバージョンごとに確認が必要です。
  • External connector (CML2 ホストのネットワークや物理 NIC へのブリッジ): ホストのブリッジや上流スイッチが port security や MAC 学習数制限を掛けている場合があります。多数 MAC の高レート送出は物理スイッチの CAM テーブルを溢れさせるため、隔離したセグメントでのみ使ってください。
  • 受信側 (CML2 のルータや tcpdump を動かす別の Ubuntu ノード) は、宛先 MAC が自分でない場合にだけプロミスキャスが必要です: sudo ip link set ens3 promisc on。
  • wpg は、テスト権限のあるラボ環境でのみ使用してください。法的注意を参照。

MTU とジャンボフレーム

afpacket のリングはスロットの大きさをインタフェースの MTU (上限 9216) から決め、スロットより大きいフレームは別の通常ソケットから送出されます。送るフレーム長は FCS を除く Ethernet ヘッダ + ペイロードなので、1514 バイトのフレームには MTU 1500 が必要です。上の例では virtio インタフェースの MTU が 1400 で、1514 バイトのフレームはカーネルに拒否され (EMSGSIZE)、dropped に数えられます。wpg ifaces で MTU を確認し、テンプレートのフレームを MTU + 14 以下にするか、両端の MTU を上げます (sudo ip link set ens3 mtu 9000)。ジャンボフレームは経路上のすべての CML2 リンクと相手ノードが対応している必要があり、CML2 のバージョンやノード種別に依存します。

virtio 上で期待される afpacket 性能

CML2 上では未計測です。手元にあるのは docs/perf.md の lo のベースラインで、64 バイトフレーム・1 スレッドで約 1.4–1.9 Mpps、律速は loopback の受信経路です。virtio-net ではゲストからホストへの経路 (virtio TX キュー、CML2 ホストの vhost スレッド、仮想リンク) が律速になるため、lo の値を下回り、ホストに強く依存すると見込まれます。試す価値のある調整は順に --qdisc-bypass、--batch を大きくする、--pin-core、--no-tx-ring との比較です。結果は docs/perf.md のチェックリストに沿って記録してください。

--qdisc-bypass

--qdisc-bypass は PACKET_QDISC_BYPASS を設定し、qdisc 層を経由しません。lo では 64 バイトのスループットが約 30% 向上しました。代償として、そのインタフェースの tc シェーピング、優先制御、netem がこのトラフィックに効かなくなり、qdisc の統計 (tc -s qdisc) に載らず、デバイスキューが満杯のときは qdisc で待たずにカーネルが ENOBUFS を返して破棄します。wpg は短時間リトライしたうえで dropped に計上します。netem で障害を模擬する場合は使わないでください。

受信側の GRO / TSO / チェックサムオフロード

オフロードが変えるのは、受信側に 見える ものであって、wpg が送ったものではありません。GRO / LRO が有効だと、Linux の受信側の tcpdump は TCP ストリームで MTU を超える結合フレームを表示することがあります。正確に観測するには sudo ethtool -K ens3 gro off lro off で無効にします。wpg はチェックサム込みでフレームを自分で組み立てるので、送信ノードのチェックサムオフロードは影響しません (意図的に壊したチェックサムはそのまま送られます)。virtio ゲストの送信側キャプチャで “incorrect checksum” と出るのはカーネル自身のスタックが作ったパケットだけで、wpg のフレームではありません。現在の設定は ethtool -k で確認します。

CML2 でのバックエンドの選び方

バックエンドCML2 (virtio-net) での使いどころ準備
afpacket既定。まずこれを使います。 追加の準備が要らず、管理用インタフェースと共存できますCAP_NET_RAW (上記)
afxdpafpacket で頭打ちのとき比べてみる価値があります。virtio-net の zero-copy は新しいカーネルが必要で、多くの場合 copy モードになり、afpacket との差は小さくなります--features afxdp でビルド、カーネル 5.10 以上、キュー数 (ethtool -L) (AF_XDP)
dpdkvirtio PMD でインタフェースをカーネルから外して使います。律速はホストの vhost 経路なので、効果は環境次第です--features dpdk でビルド、hugepages、vfio の no-IOMMU モードか uio_pci_generic (CML2 と virtio)
pcap他の OS と同じ手順で試したいときだけ--features pcap でビルド、libpcap0.8

どのバックエンドでも、送る前に --backend pcapfile でフレームを確かめ、低い --rate から始めます。性能を比べるときは同じリンクで wpg bench を順に実行し (性能チューニング)、結果を docs/perf.md のチェックリストに沿って記録してください。

トラブルシューティング

症状想定される原因対処
AF_PACKET needs CAP_NET_RAW ... / EPERM / caps.raw_socket が fail権限がないroot で実行するか sudo setcap cap_net_raw,cap_net_admin+eip $(command -v wpg)。バイナリ入れ替え後は再実行。nosuid マウント上では無効
ENOBUFS、または dropped が 0 でないTX キューが満杯: 仮想リンクか vhost が送出レートより遅い。約 100 ms リトライして破棄--rate を下げる、--batch を小さくする、--qdisc-bypass を外す、相手とリンク速度を確認、--no-tx-ring と比較
特定サイズのフレームだけ dropped になるMTU より大きいフレーム (EMSGSIZE)wpg ifaces の MTU を確認し、フレームを小さくするか両端の MTU を上げる
“interface not found” / ENODEV名前の誤り、または名前が変わったwpg ifaces。eth0 形式と ens3 形式の違いに注意
iface.any_up が “none up with carrier” と警告インタフェースが down、または CML2 のリンクが未接続/未起動sudo ip link set ens3 up。ノードを起動し、CML2 トポロジでリンクを確認
送信側は packets を数えるが相手に届かないリンクの取り違え、CML2 リンクの MAC フィルタ、VLAN 不一致、受信側が promisc でないまず送信ノードのインタフェースで、次に相手でキャプチャ。本来の送信元 MAC で試す。ip link set ... promisc on
lo のベースラインよりはるかに遅いvirtio/vhost の限界、vCPU が他の処理と共有ノードに 2 vCPU 以上、--pin-core、性能チューニング参照
指定したレートに届かない経路の持続可能な上限を超えている。wpg send の出力の精度も参照レートを下げる。性能チューニング参照

相互接続確認

Status: draft

templates/interop/ のテンプレートで、wpg が組み立てたパケットを相手のルータが正しく受け取るかを確かめます。wpg はステートレスな送出器なので (TCP セッションやデータベース同期はしない)、各シナリオは「相手側で観測できる状態の変化」1 つを確かめるものです。

検証状況: 下表の 7 シナリオは、FRR 8.4.4 に対して scripts/interop/frr-netns.sh (ネットワーク名前空間 + veth、afpacket で送出) で確認済みです (2026-10-12、すべて PASS)。IOS-XR / Junos の設定例と確認コマンドは一般的な知識に基づくもので、実機・CML2 での確認はまだしていません。 結果が異なった場合は issue で知らせてください。

シナリオ

テンプレート送るもの相手側で期待する状態
ospfv2-hello-2way相手のルータ ID を載せた OSPFv2 Hello (優先度 0)、10 秒間隔ネイバー 2-Way/DROther (Full にはならない)
ripv2-response-route198.51.100.0/24 (メトリック 1) と 203.0.113.0/25 (メトリック 5) の RIPv2 Response、30 秒間隔RIB に R 経路 (メトリック +1)
isis-l2-lan-hello-up相手の MAC を IS Neighbors TLV に載せた L2 LAN IIH (優先度 0、MTU までパディング)、3 秒間隔L2 隣接 Up
vrrpv3-preempt優先度 200 の VRRPv3 広告 (VRID 5)、1 秒間隔相手が Backup。止めると約 3.6 秒で Master に戻る
pim-hello-neighborPIMv2 Hello (ホールドタイム 105 秒、DR 優先度 0)、30 秒間隔PIM ネイバー一覧に wpg
ldp-link-helloLDP リンク Hello (224.0.0.2、ホールドタイム 15 秒)、5 秒間隔LDP ディスカバリに Link (TCP セッションは張らない)
bfd-session-up状態 Down → (相手の Discriminator を入れて) 状態 Up の BFD 制御パケット、300 ms 間隔BFD セッション Up。止めると検出時間 (約 0.9 秒) 後に Down

アドレスは既定で wpg が 10.99.0.1、相手が 10.99.0.2/24 です。違う場合は --var で変えます (各テンプレートの variables 参照)。どのテンプレートも --var src_mac=<送出インタフェースの MAC> を渡すと分かりやすくなります。

BFD は 2 段階です。まず --var state=down で数パケット送ると相手が Init になるので、相手の Local Discriminator を確認して --var peer_discriminator=<値> で状態 Up を送り続けます。

FRR で一括確認する (Linux 1 台)

sudo apt install frr iproute2       # frr サービスは起動しなくてよい
cargo build -p wpg-cli
sudo scripts/interop/frr-netns.sh   # 全シナリオを実行して PASS / FAIL を表示

スクリプトは名前空間 wpgfrr を作り、veth (wpg0 ⇔ frr0) の向こうで FRR のデーモン (zebra、ospfd、ripd、isisd、vrrpd、pimd、ldpd、bfdd) を直接起動し、各テンプレートを wpg send --backend afpacket で送って vtysh の出力を確かめます。終了時に後片付けします。--keep で環境を残せば sudo ip netns exec wpgfrr vtysh -N wpg で中を見られます (--down で削除)。

出力例:

PASS  OSPFv2 neighbor 2-Way
PASS  RIPv2 routes installed
PASS  IS-IS L2 adjacency Up
PASS  VRRPv3 peer is Backup
PASS  PIM neighbor
PASS  LDP link discovery
PASS  BFD session Up

FRR 側の設定は次のとおりです (スクリプトが投入)。VRRP は FRR の要件として、仮想 MAC 00:00:5e:00:01:05 を持つ macvlan vrrp4-2-5 を作っています。

router ospf
 ospf router-id 10.99.0.2
 network 10.99.0.0/24 area 0
router rip
 version 2
 network 10.99.0.0/24
router isis 1
 net 49.0001.0000.0000.0002.00
 is-type level-2-only
interface frr0
 ip router isis 1
 ip pim
 vrrp 5 version 3
 vrrp 5 priority 100
 vrrp 5 ip 10.99.0.254
mpls ldp
 router-id 10.99.0.2
 address-family ipv4
  discovery transport-address 10.99.0.2
  interface frr0
bfd
 peer 10.99.0.1 interface frr0
  receive-interval 300
  transmit-interval 300

CML2 / 実機で確認する

  1. wpg を動かす Ubuntu ノードの送出インタフェースと、相手ルータのインタフェースを同じセグメントにつなぎます (CML2 での注意点 の準備を先に)。
  2. 相手に下の設定を入れます (インタフェース名は環境に合わせる)。
  3. シナリオごとに wpg send templates/interop/<名前>.wpg.yaml -i <インタフェース> --backend afpacket --var src_mac=<MAC> ... を実行し、確認コマンドで状態を見ます。IS-IS は --var peer_mac=<相手の MAC>、BFD は上記の 2 段階が必要です。

確認コマンド

シナリオFRRIOS-XR (未確認)Junos (未確認)
OSPFv2show ip ospf neighborshow ospf neighborshow ospf neighbor
RIPv2show ip route ripshow route ripshow route protocol rip
IS-ISshow isis neighborshow isis adjacencyshow isis adjacency
VRRPv3show vrrp 5show vrrpshow vrrp
PIMshow ip pim neighborshow pim neighborshow pim neighbors
LDPshow mpls ldp discoveryshow mpls ldp discoveryshow ldp neighbor
BFDshow bfd peers briefshow bfd sessionshow bfd session

IOS-XR の設定例 (未確認)

interface GigabitEthernet0/0/0/0
 ipv4 address 10.99.0.2 255.255.255.0
router ospf 1
 router-id 10.99.0.2
 area 0
  interface GigabitEthernet0/0/0/0
router rip
 interface GigabitEthernet0/0/0/0
router isis 1
 is-type level-2-only
 net 49.0001.0000.0000.0002.00
 address-family ipv4 unicast
 interface GigabitEthernet0/0/0/0
  address-family ipv4 unicast
router vrrp
 interface GigabitEthernet0/0/0/0
  address-family ipv4
   vrrp 5 version 3
    priority 100
    address 10.99.0.254
multicast-routing
 address-family ipv4
  interface GigabitEthernet0/0/0/0
   enable
router pim
 address-family ipv4
  interface GigabitEthernet0/0/0/0
mpls ldp
 router-id 10.99.0.2
 interface GigabitEthernet0/0/0/0
router static
 address-family ipv4 unicast
  192.0.2.0/24 10.99.0.1 bfd fast-detect minimum-interval 300 multiplier 3

Junos の設定例 (未確認)

set interfaces ge-0/0/0 unit 0 family inet address 10.99.0.2/24 vrrp-group 5 virtual-address 10.99.0.254 priority 100
set interfaces ge-0/0/0 unit 0 family iso
set interfaces ge-0/0/0 unit 0 family mpls
set interfaces lo0 unit 0 family iso address 49.0001.0000.0000.0002.00
set protocols vrrp version-3
set protocols ospf area 0 interface ge-0/0/0.0
set protocols rip group wpg neighbor ge-0/0/0.0
set protocols isis interface ge-0/0/0.0 level 1 disable
set protocols pim interface ge-0/0/0.0
set protocols mpls interface ge-0/0/0.0
set protocols ldp interface ge-0/0/0.0
set routing-options static route 192.0.2.0/24 next-hop 10.99.0.1 bfd-liveness-detection minimum-interval 300 multiplier 3

制約 / 対象外

  • ステートフルな手順は扱いません (非ゴール): OSPF は Full にならず (優先度 0 の DROther で止める)、LDP / BGP の TCP セッション、IS-IS の LSP フラッディング、BFD 状態機械の自動追従はしません。BGP は TCP が必要なため対象外です。
  • RIP の経路は最後の Response から 180 秒でタイムアウトします。継続するには送出を続けます。
  • IPv6 のシナリオ (OSPFv3、RIPng、MLD、VRRPv3 for IPv6) は、確認に使った環境で IPv6 が無効だったため含めていません。
  • VRRP の送信元 MAC は仮想 MAC 00:00:5e:00:01:<VRID> です。VRID を変えるときは src も合わせて変えてください。

性能チューニング

Status: draft

まず wpg bench で計測し、docs/perf.md のベースライン (lo、null、WSL2 上の veth / dummy で計測。実 NIC は未計測。WSL2 では afpacket が 1 コア 2–3 Mpps) と比較します。特記しない限り、以下のフラグは wpg send と wpg bench の両方にあります。CLI リファレンスを参照してください。

進め方

1 度に 1 つずつ変え、毎回 wpg bench で測ります (64 バイト、--duration 10 (秒) 程度)。

  1. 上限を知る: wpg bench --backend null で、送出経路を除いたフレーム生成の上限を測ります。実インタフェースでの値がこれに近ければ、律速は wpg 側です。
  2. afpacket の基本: --qdisc-bypass (tc を使わない場合)、--batch を 64 / 128 / 256 / 512 で比較、--no-tx-ring と比較。
  3. コアの固定: --pin-core (1 ワーカー) か --auto-pin。NIC の割り込みと同じ NUMA ノードに置き、governor を performance に (下の「IRQ アフィニティと CPU governor」)。
  4. ワーカーを増やす: --workers 2、4 … とキュー数まで増やし、伸びが止まる点を探します。
  5. バックエンドを変える: それでも足りなければ afxdp (--xdp-mode と --busy-poll)、次に dpdk (DPDK / AF_XDP のセットアップ)。仮想 NIC (CML2 など) では差が小さいことが多いので、CML2 での注意点 も参照してください。
  6. レートの精度を詰める: 目標レートで wpg send し、最終レポートの達成率と遅れを見て --wait / --clock を調整します (下の「レート精度」)。
  7. 記録する: 環境 (CPU、NIC とドライバ、カーネル、コマンド、wpg bench --json の出力) を docs/perf.md のチェックリストに沿って残します。

コア pin: --pin-core

--pin-core <CORE> は送出スレッドを 1 つの CPU コアに固定します (Linux)。スケジューラによる移動を防ぎ、キャッシュを温かく保ちます。NIC の割り込みを処理していないコアを選び、できれば NIC と同じ NUMA ノードのコアにします (lscpu、/sys/class/net/<if>/device/numa_node)。そのコアには他の仕事を載せないでください (残りは isolcpus や taskset で分離)。

バッチサイズとリング深さ

  • --batch <N>: send_batch 1 回でバックエンドに渡すフレーム数。大きいほどシステムコールが減ります (既定は wpg send が 64、wpg bench が 256)。大きすぎるとレート制御の粒度が粗くなります。64、128、256、512 で試します。
  • --ring-depth <N>: afpacket の TX リングのスロット数 (既定 4096)。リング (afxdp では UMEM) 全体は --ring-bytes / tx.ring_bytes が上限 (既定 16 MiB) で、lo (16 KiB スロット) では実効 1024 になります。深いリングはバーストを吸収しますが、持続レートは上がりません。
  • --burst <N> (wpg send): レート制御の 1 回の許可で連続送出するフレーム数。

メモリの上限

既定値は多くのホストに合っています。次の場合だけ引き上げてください。どれも wpg.toml のキー (設定リファレンス) があり、wpg send ではコマンドラインでも上書きできます。

  • tx.prerender_max_bytes (256 MiB) と tx.prerender_max_packets (1 億)、--prerender-max-bytes / --prerender-max-packets: 両方の上限に収まるストリームは送出前にすべて生成し (--plan auto)、超えるものは送出しながら生成します。フィールドをその場で書き換えられないテンプレートは事前生成のほうが高いレートが出るため、そうしたストリームが上限をわずかに超え、ホストのメモリに余裕があるときに引き上げます。複数のジョブを同時に動かす小さなホストでは引き下げます。
  • tx.ring_bytes (16 MiB)、--ring-bytes: ワーカーごとの afpacket TX リング / afxdp UMEM のメモリ。ジャンボフレームや長いバーストで 16 MiB より深いリングが要るときに --ring-depth と合わせて引き上げます。このメモリはロックされるため、ulimit -l (systemd では LimitMEMLOCK) も合わせて引き上げてください。
  • server.preview_max (256): 1 回のプレビューで生成できる最大パケット数。1 回のリクエストでストリームの先まで見たいときに引き上げます。リクエストごとにその数をサーバーで生成します。
  • server.job_history (100) と server.job_history_db (1000): ジョブ画面に出す終了済みジョブ数と、データベースに残す数。

リングと sendmmsg: --no-tx-ring

afpacket の既定は TPACKET_V3 の TX リングです。フレームを共有スロットにコピーし、バッチごとに send() を 1 回呼んで送出を起動します。--no-tx-ring は代わりに sendmmsg を使います (リングを確保できない場合の自動フォールバックでもあります)。lo では両者の差は数 % 程度で (release で ring 1.44、sendmmsg 1.50 Mpps)、他のドライバでは結果が変わり得るため両方を測ってください。bench の表示にはどちらのモードかが出ます。

--qdisc-bypass

qdisc 層を通らず、lo で約 30% 高速になりますが、そのトラフィックには tc のシェーピングや netem が効かなくなります。CML2 での注意点を参照。

レート精度: 待ち方 (--wait) とクロック (--clock)

レート制御はトークンバケットです (wpg send)。待ち方は --wait で選びます。

--wait動作CPU
hybrid (既定)期限が遠い間は sleep、最後の 50 マイクロ秒は busy-spin待ち時間に比例して少し
sleepsleep のみ最小
spinbusy-spin のみ1 コアを使い切る
busy-pollspin しながらバックエンドの後処理 (afxdp の completion リング回収、ドライバの起動) も行う。--busy-poll を付けると既定になる1 コアを使い切る

精度のための工夫 (M8):

  • 送出スレッドのタイマスラックを 50 マイクロ秒から 1 マイクロ秒に下げます (PR_SET_TIMERSLACK、Linux。sleep を使う待ち方のとき)。
  • sleep の寝過ごしを学習します。実際に何マイクロ秒遅れて起きたかの移動平均を取り、次の sleep をその分だけ短くします (残りは spin で詰めます)。
  • クロックに TSC を使います (--clock auto、既定)。x86_64 で TSC が invariant (CPUID、または Linux の constant_tsc と nonstop_tsc) なら rdtsc を直接読み、起動時に一度だけ Instant と突き合わせて周波数を求めます。1 回の読み取りが数 ns で済むので、spin の 1 周が短くなり、期限からの遅れが半分程度になります。--clock monotonic で従来の Instant に戻せます。TSC が使えない環境では自動で monotonic になります。

lo のコンテナでの計測結果 (前後比較を含む) は docs/perf.md の「レート制御の精度」にあります。要点: 1 kpps の hybrid で平均の遅れが 74.5 から 10–15 マイクロ秒、sleep では 62–121 から 2–44 マイクロ秒に減りました。中央値の遅れは spin 系で 0.1 マイクロ秒前後 (TSC で 0.03–0.06)。最大値 (数ミリ秒) は共有ホストの vCPU が奪われることによるもので、待ち方では消せません。精度が必要なら --pin-core / --auto-pin と isolcpus を併用してください。

フレーム間隔が待ちの分解能より短い場合、制御は複数フレームをまとめて許可する (--burst) ので、平均 レートは目標に沿いますが個々の間隔は揃いません。ifg=<時間> はバースト 1 を強制します。達成レートが指定より低い場合は経路側が限界で、停止後の追い付きバーストは 10 ms 分に制限されるため、詰まりのあとに一気に送り出すことはありません。wpg send の最終レポートに達成率と遅れ (最大、平均) が、--json には p50 / p99 (p50_jitter、p99_jitter) と TSC を使ったか (tsc) が含まれます。

マルチキュー・マルチコア送出 (--workers)

--workers N は N 個の送出ワーカーを起動します。ワーカーごとにスレッド、バックエンドのインスタンス (afpacket はソケットと TX リング、afxdp はソケットと UMEM、dpdk は共有ポートの TX キュー) を持ち、ストリームとレートを N 等分します (--rate 1Mpps --workers 4 なら 1 ワーカー 250 kpps)。カウンタは合算され、最終レポートにワーカーごとの内訳が出ます。pcap と pcapfile は 1 ワーカーのみです。

キューへの割り当て:

  • afxdp: ワーカー i は NIC のキュー --queue + i に bind します。キュー数は ethtool -L <if> combined N で用意します (DPDK / AF_XDP)。
  • dpdk: ポートを --queue + N 本の TX キューで設定し、ワーカー i は TX キュー --queue + i で送ります。mbuf プールは NIC の NUMA ソケットに置きます (DPDK)。
  • afpacket: キューを直接は選べません。カーネルが送出 CPU からキューを決めます。XPS (/sys/class/net/<if>/queues/tx-<n>/xps_cpus) が設定されていればその対応表に従い、なければ --qdisc-bypass 時は「CPU 番号 mod キュー数」になります。ワーカーを別々のコアに固定すれば、別々のキューに分散します。
# 4 キューの NIC に 4 ワーカー、NIC と同じ NUMA ノードのコアに自動で固定
wpg bench --backend afxdp -i ens3 --workers 4 --auto-pin
wpg send tpl.wpg.yaml -i ens3 --backend afpacket --qdisc-bypass --workers 4 --pin-cores 2,3,4,5

NUMA 配慮 (--auto-pin)

  • --auto-pin はワーカーを NIC の NUMA ノード (/sys/class/net/<if>/device/numa_node) のコアに順に固定します。プロセスに許可されたコア (taskset / cgroup の cpuset) だけを使い、コア 0 (割り込みや雑務が集まりがち) は最後に回します。NUMA 情報がない環境 (仮想 NIC、1 ノードのマシン) では許可されたコアを順に使います。--pin-cores を指定した場合はそちらが優先です。
  • ワーカーは固定したあとで自分のフレームバッファを確保するので、Linux の first-touch によりメモリはそのコアのノードに置かれます。
  • afxdp の UMEM は NIC のノードに割り当てます (mbind(MPOL_PREFERRED))。backend の表示に NUMA node N と出ます。
  • 割り込み (TX 完了) も同じノードのコアに寄せてください (下の「IRQ アフィニティ」)。

IRQ アフィニティと CPU governor

  • NIC の割り込みを分散または固定します: cat /proc/interrupts | grep <if>、echo <mask> | sudo tee /proc/irq/<n>/smp_affinity。手動で固定する場合は irqbalance を止めます。送出スレッドと TX 完了割り込みは同じ NUMA ノードに置きます (同じコアである必要はありません)。
  • governor は performance にします: sudo cpupower frequency-set -g performance。VM では governor はホストが制御するため、CML2 ホストの管理者に確認してください。
  • レイテンシのスパイクが出る場合は深い C-state を無効にし、pin したコアの SMT 兄弟には負荷を載せません。

認証と TLS

管理パスワード

管理アカウントは admin の 1 つです。パスワードは次のうち最初に設定されているものを使います (優先度の高い順)。

  1. wpg serve --password <PASSWORD>。プロセス一覧で他のユーザから見えるため、試用時のみにしてください。
  2. wpg serve --password-file <FILE>。ファイルには平文パスワードか argon2 ハッシュを書きます。
  3. 環境変数 WPG_PASSWORD (平文か argon2 ハッシュ)
  4. wpg.toml の auth.password_hash。wpg config set-password がパスワードを尋ねてこのキーに書き込みます。スクリプトでは --stdin を使います。
  5. wpg.toml の auth.password_file (平文か argon2 ハッシュ)
  6. 上のいずれも無い場合は、初回アクセス時のセットアップ画面

平文のパスワードは起動時に argon2id (19 MiB、2 パス。OWASP 推奨値) でハッシュ化し、<data_dir>/wpg.sqlite に保存します。設定したパスワードを変えると、次回の起動時に既存のセッションはすべて無効になります。

パスワードが無い間

パスワードが設定されるまでは次のように動作します。

  • /api/health、/api/version、/api/auth/*、/api/docs 以外の API はすべて 401 setup_required を返します。
  • wpg serve はループバック以外のアドレスで待ち受けず、終了コード 2 で終了します。--allow-insecure を付けると待ち受けますが、大きな警告をログに出し、サーバに到達できる誰もがパスワードを設定できる状態になります。
  • --allow-insecure を付けない限り、セットアップ画面はサーバ自身 (ループバック) からのリクエストしか受け付けません。
wpg serve                                  # 127.0.0.1:8080 を開いてパスワードを設定
wpg config set-password                    # または先に wpg.toml へハッシュを保存
wpg serve --bind 0.0.0.0:8080 --tls        # 以後は任意のアドレスで待ち受け可能

セッションと CSRF

  • ログイン後は wpg_session Cookie でセッションを識別します。値はランダムな 256 ビットのトークンで、HttpOnly; SameSite=Strict (HTTPS では Secure も) を付けて発行します。データベースにはトークンの SHA-256 だけを保存します。
  • セッションの有効期間は auth.session_ttl_secs (既定 24 時間) で、リクエストのたびに延長されます。
  • POST、PUT、DELETE のリクエストは、セッションの CSRF トークンを X-CSRF-Token ヘッダで送る必要があります。トークンは GET /api/auth/status と、スクリプトから読める wpg_csrf Cookie で受け取れます。ログインとセットアップには CSRF トークンは不要ですが、Content-Type: application/json のリクエストしか受け付けません。
  • WebSocket (/api/ws、Web ターミナルの /api/terminal/ws) の接続にもセッション Cookie が必要です。Origin が別ホストを指す接続は拒否します。Web ターミナルの安全策は Web ターミナル を参照してください。

API: GET /api/auth/status、POST /api/auth/setup {password, confirm}、POST /api/auth/login {password, username?}、POST /api/auth/logout。詳しくは API リファレンス を参照してください。

API トークン

スクリプト、CI ジョブ、wpg remote は、セッションの代わりに API トークンで認証します。

# サーバ上で実行 (稼働中でも可)。標準出力にはトークンだけを出力
wpg config token create ci --expires-days 90
# または Web UI の「設定」→「API トークン」

export WPG_SERVER=https://wpg.example.net:8080 WPG_TOKEN=wpg_...
wpg remote jobs start examples-arp-sweep --backend null --count 100 --wait
curl -H "Authorization: Bearer $WPG_TOKEN" "$WPG_SERVER/api/jobs"
  • トークンは wpg_ に 16 進 64 桁 (ランダムな 256 ビット) を続けたものです。表示するのは作成時の 1 回だけです。データベースには SHA-256 と、見分けるための先頭 12 文字 (wpg_ と 16 進 8 桁) だけを保存します。トークンは十分に長いランダム値なので高速なハッシュで足ります。argon2 にすると API リクエストのたびに約 19 MiB と数十ミリ秒かかります。
  • Authorization: Bearer <トークン> を付けたリクエストは、トークンを作成したユーザとして、そのユーザの役割で動作します。細かいスコープはありません。CSRF トークンは不要で、Cookie も発行しません。
  • Authorization ヘッダがあるリクエストでは、セッション Cookie を見ません。誤った、期限切れの、または失効したトークンには 401 unauthorized を返します。失敗はクライアントのアドレスごとの ログインのレート制限 に数えます。
  • 有効期限は 1〜3650 日、または無期限です。パスワードを変えてもトークンは有効なままです。失効 (Web UI、wpg config token revoke <id>、DELETE /api/tokens/{id}) はトークンを削除し、次のリクエストから拒否します。
  • トークンではトークンを管理できません。Bearer のリクエストには /api/tokens が 403 forbidden を返します。作成と失効はセッション (Web UI) か、サーバ上の wpg config token で行います。admin はすべてのユーザのトークンを、その他のユーザは自分のトークンだけを表示・失効できます。
  • トークンの作成、失効、拒否は監査ログに記録します。最終使用日時は最大 1 分に 1 回記録します。

API: GET /api/tokens、POST /api/tokens {name, expires_in_days?} ({token, secret} を返す)、DELETE /api/tokens/{id}。

wpg remote はサーバ証明書を検証します。自己署名証明書のサーバには --insecure を付けてください。

ログインのレート制限

ログインの失敗はクライアントのアドレスごとに 1 分あたり 5 回まで許可します。それを超えるとそのクライアントは 1 分間ロックアウトされます。ロックアウトが繰り返されるたびに時間は 2 倍になり、最大 15 分です。ロックアウト中のログインには 429 rate_limited を返し、details.retry_after_secs と Retry-After ヘッダで待ち時間を示します。

すべてのログイン試行を login_attempts テーブルに記録し、30 日間保持します。リバースプロキシの後ろでは、全クライアントがプロキシのアドレスを共有します。

監査ログ

ログイン、ログイン失敗、ログアウト、セットアップ、API トークンの作成・失効・拒否、ジョブ操作 (作成、開始、一時停止、再開、停止、削除) は、ユーザ名とクライアントのアドレスを付けて wpg::audit ターゲットでログに記録します。これらのイベントだけを出力するには RUST_LOG=wpg::audit=info を指定します。

TLS

  • wpg serve --tls (または server.self_signed_tls = true) を指定すると、自己署名の ECDSA 証明書を <data_dir>/tls/ に生成し、次回以降の起動でも再利用します。証明書の有効期間は 800 日で、期限の約 1 か月前に作り直します。対象は localhost、127.0.0.1、::1、bind アドレス、ホスト名です。起動時に SHA-256 フィンガープリントを表示するので、ブラウザに表示される値と照合してください。
  • 自前の証明書を使うには wpg.toml に [server.tls] cert = "...", key = "..." (PEM ファイル) を指定します。自己署名証明書より優先されます。
  • TLS のポートでは平文の HTTP に応答せず、HTTPS へのリダイレクトもしません。

リバースプロキシ (nginx、Caddy) を使う場合は、wpg を 127.0.0.1 で待ち受けさせ、TLS はプロキシで終端します。/api/ws の WebSocket アップグレードも転送してください。

セキュリティヘッダ

すべての応答に Content Security Policy を付けます (default-src 'self'。スクリプトはサーバからのものと 'wasm-unsafe-eval'、起動用インラインスクリプトのハッシュのみ許可。インラインスタイル許可。connect-src 'self' ws: wss:。frame-ancestors 'none')。あわせて X-Content-Type-Options: nosniff、X-Frame-Options: DENY、Referrer-Policy: no-referrer、制限的な Permissions-Policy も付けます。/api/docs の Swagger UI には、インラインスクリプトを許可する緩いポリシーを適用します。

Web ターミナル (SSH / Telnet)

wpg の画面から、試験対象の機器に SSH / Telnet で接続できます。パケットを送りながら対向機器のカウンタやログを確認するときに、Tera Term などの端末ソフトや踏み台サーバを別に用意する必要がありません。接続は wpg サーバから張るので、作業用 PC から機器に直接届かないラボ (CML2、EVE-NG、閉域の実機ラボ) でも使えます。設計の背景は ADR-0011 にあります。

有効にする

Web ターミナルは既定で無効です。wpg.toml に [terminal] セクションを書き、サーバを再起動します。

[terminal]
enabled = true                                 # Web ターミナル (SSH / Telnet)
allowed_targets = ["10.0.0.0/8", "*.lab.example", "console-srv:2001"]
record_sessions = true                         # <data_dir>/terminal-logs にセッションログを残す
idle_timeout_secs = 1800                       # 無操作で切断するまでの秒数 (0 = 切断しない)
max_sessions = 8                               # 全ユーザ合計の同時セッション数
キー既定値内容
enabledfalseWeb ターミナルを有効にする
allowed_targets[]接続を許可する宛先。空の場合はすべて許可
record_sessionstrueセッションログを許可する (false でサーバ側のログを無効化)
idle_timeout_secs1800入出力が途絶えてから切断するまでの秒数。0 で無効
max_sessions8同時に開けるセッション数

環境変数でも指定できます (例: WPG_TERMINAL__ENABLED=true、WPG_TERMINAL__ALLOWED_TARGETS='["10.0.0.0/8"]')。設定は wpg config validate で確認できます。allowed_targets を空のまま、ループバック以外のアドレスで待ち受けると警告が出ます。

allowed_targets の書き方

書き方意味
r1、r1.lab.exampleそのホスト名 (大文字小文字は区別しない)。ポートは問わない
r1:22そのホスト名の 22 番ポートだけ
*.lab.examplelab.example のサブドメインすべて
192.0.2.10、192.0.2.10:2001その IP アドレス (とポート)
[2001:db8::1]:830IPv6 アドレスとポート
10.0.0.0/8、2001:db8::/32アドレス範囲 (CIDR)

ホスト名の規則は利用者が入力した名前と照合します。アドレスと CIDR の規則は、名前解決した結果のアドレスと照合し、許可されたアドレスにだけ接続します。照合したアドレスにそのまま接続するので、DNS を後から書き換えて許可範囲を迂回することはできません。

使い方

サイドバーの ターミナル (ショートカット g c) を開きます。

  1. 接続フォームでプロトコル (SSH / Telnet)、ホスト、ポート (省略時は 22 / 23)、SSH のユーザ名を入力します。
  2. SSH の認証方式を選びます。
    • パスワード: 入力したパスワードで認証します。空欄にすると、サーバのプロンプト (keyboard-interactive やパスワード入力) をダイアログで表示します。ネットワーク機器でよくある keyboard-interactive の「Password:」プロンプトには、入力したパスワードで自動的に応答します。
    • 秘密鍵: OpenSSH 形式、PEM、PuTTY の .ppk を貼り付けるか、ファイルから読み込みます。パスフレーズ付きの鍵にも対応します。
  3. 接続 を押すと新しいタブが開きます。複数のタブを同時に開け、他の画面に移動してもセッションは維持されます。

プロファイルを保存 で、プロトコル、ホスト、ポート、ユーザ名、認証方式、ログ設定をブラウザ (localStorage) に保存できます。パスワード、秘密鍵、パスフレーズは保存しません。

初めて接続する SSH ホスト

初めての SSH ホストでは、ホスト鍵のアルゴリズムと SHA-256 フィンガープリント (SHA256:...) を表示します。正しい値と一致することを確かめてから接続してください。正しい値は、たとえば次の方法で得られます。

  • 対象ホスト上で ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub を実行する。

  • 信頼できる経路の端末で ssh-keyscan -p 22 ホスト | ssh-keygen -lf - を実行する。

  • ネットワーク機器では、機器が表示する公開鍵 (Cisco IOS の show crypto key mypubkey rsa など) を OpenSSH 形式にして ssh-keygen -lf に渡す。機器によっては MD5 や 16 進表記で表示するため、形式をそろえて比較します。

  • 信頼して保存: 鍵をサーバの <data_dir>/terminal/known_hosts (OpenSSH の known_hosts 形式) に保存して接続します。次回からは確認なしで接続します。

  • 今回のみ接続: 保存せずに接続します。作り直すことの多いラボ機器に向きます。

  • キャンセル: 接続しません。

保存済みの鍵と異なる鍵が提示されると、中間者攻撃の可能性があるため接続を拒否し、提示された鍵と保存済みの鍵を表示します。機器の交換や鍵の再生成など心当たりがある場合は、画面下の 既知のホスト から該当ホストの鍵を削除し、再接続して新しい鍵を確認します。ssh-keyscan で取得した行を known_hosts に追記しておくこともできます。

踏み台を経由する (ProxyJump)

接続フォームの 踏み台 (ProxyJump) で 踏み台を追加 を押し、経由する SSH サーバを近い順に入力します (最大 4 台)。OpenSSH の ssh -J ops@bastion,ops@inner admin@r1 と同じ動きで、手で ssh を打たずに 1 回で奥の機器につながります。

ブラウザ ── wpg サーバ ──SSH── 踏み台 1 ──SSH── 踏み台 2 ──SSH / Telnet── 機器
  • wpg サーバは踏み台 1 にだけ直接接続します。踏み台 2 と機器へは、手前の踏み台に開いた direct-tcpip チャネル (OpenSSH の -W / ProxyJump と同じ仕組み) を通ります。踏み台側の sshd で AllowTcpForwarding が有効である必要があります。
  • 各段のホスト鍵は、直接接続と同じように初回に確認ダイアログが出ます。ダイアログとログインプロンプトには、どの段のホストかが表示されます。
  • 各段のログインは、パスワードか秘密鍵を段ごとに指定します。パスワードを空にすると、その段でプロンプトを表示します。秘密鍵とパスワードはプロファイルに保存しません (踏み台のホスト、ポート、ユーザ名は保存します)。
  • 最終的な宛先は SSH でも Telnet でも構いません。踏み台の奥にあるコンソールサーバの Telnet ポートにも、そのまま接続できます。
  • 失敗した場合、どの踏み台で起きたかがエラーに表示されます (例: 「踏み台 10.0.0.1:22 で発生」)。
  • 監査ログとステータス (GET /api/terminal/status) には経由した踏み台 (via) が記録されます。

許可リストとの関係: allowed_targets は、踏み台を含むすべての段に適用されます。1 段目の踏み台は wpg サーバで名前解決して照合します。2 段目以降と最終的な宛先は踏み台側で名前解決されるため、ホスト名ならホスト名のエントリ (r1.lab、*.lab.example)、IP アドレスならアドレスや CIDR のエントリで照合します。名前で指定した宛先は CIDR のエントリでは許可されません。

Telnet

Telnet では、サーバから要求されたときだけオプションを交渉します (ECHO、SGA、NAWS によるウィンドウサイズ通知、端末タイプ XTERM-256COLOR、BINARY)。wpg からは交渉を始めないので、ターミナルサーバの生 TCP ポート (CML2 や EVE-NG のコンソール) にも余計なバイトを送りません。Enter は NVT の規則どおり CR NUL として送ります。

コピーと貼り付け

操作方法
コピー範囲を選択 (既定で自動コピー)、Ctrl+Shift+C、Ctrl+Insert
貼り付け右クリック / 中クリック、Ctrl+Shift+V、Shift+Insert、Ctrl+V
検索ツールバーの検索欄 (Enter で次、Shift+Enter で前)

複数行を貼り付けるときは、行数と内容を表示して確認します (設定で無効にできます)。行ごとの待ち時間 を設定すると、1 行ごとに指定ミリ秒待って送ります。入力バッファが小さい機器のコンソールに設定を流し込むときに使います。ファイル送信 はテキストファイルの内容を同じ確認のあとに送ります。

ブラウザのクリップボード API は HTTPS か localhost でしか使えません。HTTP で別ホストから使う場合、右クリックでの貼り付けはできないので Ctrl+V か Shift+Insert を使ってください (コピーは動作します)。

文字サイズ、スクロールバック行数、自動コピー、右クリック貼り付け、貼り付け確認、行ごとの待ち時間は ターミナル設定 で変更でき、ブラウザに保存されます。

セッションログ

record_sessions = true の場合、接続時に「サーバにセッションログを記録する」を選ぶと (既定でオン)、接続先から受信した内容を <data_dir>/terminal-logs/ に記録します。ファイル名は 20261027-101500_ssh_r1.lab_22_ab12cd34.log の形式 (UTC 時刻、プロトコル、ホスト、ポート、セッション ID) です。

  • 記録するのは接続先からの出力だけで、キー入力は記録しません (エコーされない入力、たとえばパスワードは残りません)。
  • 既定でエスケープシーケンスを取り除いたプレーンテキストで記録します (Tera Term の「プレーンテキスト」相当)。取り除かない場合は cat で色付きのまま再生できます。
  • ツールバーの ログ開始 / ログ停止 で途中から記録したり止めたりできます。再開すると新しいファイルになります。
  • 1 ファイルは 256 MiB で記録を止めます (セッションは続きます)。
  • セッションログ の一覧からダウンロード、削除できます。記録中のログは削除できません。
  • ログは自動では削除されません。保持期間は運用で管理してください (ファイルは所有者のみ読み書きできる権限 0600 で作成します)。

サーバにログを残さない場合でも、バッファを保存 でブラウザ上のスクロールバックをテキストファイルとして保存できます。

セキュリティ

Web ターミナルを有効にすると、wpg サーバは試験ネットワークへの踏み台になります。次の点に注意してください。

  • 接続先を絞る: allowed_targets に試験対象のアドレス範囲だけを書きます。空のままにすると、wpg にログインできる全員が、サーバから届く任意のホスト (管理ネットワークや社内のサーバを含む) に接続できます。
  • HTTPS を使う: パスワードや秘密鍵はブラウザから wpg サーバへ送られます。localhost 以外で使う場合は wpg serve --tls か証明書を設定し、HTTPS で接続してください (認証と TLS)。
  • パスワードは保存しない: wpg はパスワード、秘密鍵、パスフレーズをディスクに保存しません。接続処理の間だけメモリに置きます。ブラウザのタブは再接続のために入力内容をメモリに保持しますが、タブを閉じると消えます。
  • 監査ログ: セッションの開始・終了・拒否を wpg::audit ターゲットで記録します (wpg のユーザ、クライアントのアドレス、接続先、ログイン名、終了理由、送受信バイト数、ログファイル名)。RUST_LOG=wpg::audit=info で監査イベントだけを出力できます。ホスト鍵の保存・削除、ログの削除も記録します。
  • 権限: ログインしているユーザだけが使えます。WebSocket は同一オリジンからの接続だけを受け付けます (server.base_url を設定したリバースプロキシ経由を含む)。viewer ロール (P1) のユーザは使えません。
  • 無操作タイムアウトと同時セッション数: 放置されたセッションは idle_timeout_secs で切断します。max_sessions で同時セッション数を制限します。
  • 古い暗号方式: 古いネットワーク機器と接続できるよう、SHA-1 の鍵交換や CBC 暗号も最下位の優先度で提示します。相手がより安全な方式を持たない場合にだけ使われます。

リバースプロキシ

リバースプロキシの後ろに置く場合は、/api/ws と同様に /api/terminal/ws の WebSocket アップグレードも転送してください。nginx の例:

location /api/terminal/ws {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_read_timeout 3600s;
}

proxy_read_timeout は idle_timeout_secs より長くしてください。

API

メソッドパス内容
GET/api/terminal/status設定 (有効 / 無効、許可リスト) と実行中のセッション
GET/api/terminal/wsセッションの WebSocket (無効時は 403 terminal_disabled)
GET/api/terminal/logsセッションログの一覧
GET / DELETE/api/terminal/logs/{name}ログのダウンロード / 削除
GET/api/terminal/known-hosts保存済みのホスト鍵
DELETE/api/terminal/known-hosts/{host}/{port}ホスト鍵の削除

WebSocket では最初に {"type":"connect","protocol":"ssh","host":"r1","username":"admin","password":"...","cols":120,"rows":40} を送ります。サーバは state、host_key、auth_prompt、connected、record、error、closed を JSON で、端末の出力をバイナリフレームで返します。キー入力はバイナリフレーム (または {"type":"input","data":"..."}) で送ります。詳細は API リファレンス の TerminalClientMessage / TerminalServerMessage を参照してください。

トラブルシュート

表示原因と対処
「このホストはサーバの接続許可リストにありません」allowed_targets に宛先を追加し、サーバを再起動します
「ホスト鍵が変わっています」機器の鍵が変わりました。正当な変更なら 既知のホスト から古い鍵を削除します
「SSH エラー: No common … algorithm」機器と共通の暗号方式がありません。機器側で新しい方式 (aes-ctr、ecdh、ed25519 など) を有効にしてください
「ログインに失敗しました」ユーザ名、パスワード、鍵を確認します。鍵認証が無効な機器もあります
踏み台で「接続できませんでした」(踏み台 … で発生)踏み台から宛先に届かないか、踏み台の sshd で AllowTcpForwarding no になっています
右クリックで貼り付けできないHTTP で別ホストから使っています。Ctrl+V / Shift+Insert を使うか、HTTPS にします
表示が崩れるウィンドウサイズを変えると機器に通知されます。Telnet で NAWS に対応しない機器では terminal length 0 などで調整してください

受信と検証

Status: draft

wpg は送出だけでなく、受信側の簡単な確認もできます (v1 は最小構成です)。

  • 受信カウンタ: 受信フレーム数・バイト数・pps / bps と、フィルタに一致したフレームの数とレート
  • tcpdump 風のフィルタ式による一致判定
  • 最初の N フレームの表示 (Hex とデコード結果)
  • 一致したフレームの pcapng 保存
  • 送出時に埋め込んだシグネチャの照合による、ロス・順序逆転・重複・遅延の概算

CLI は wpg capture、Web UI は「受信」画面、API は /api/captures です。

受信バックエンド

バックエンドOS内容
afpacketLinuxAF_PACKET raw ソケットで受信します。-i any で全インタフェース。CAP_NET_RAW が必要です (権限設定)。自ホストが送出したフレーム (PACKET_OUTGOING) は既定で数えないため、lo で送受信しても 1 フレームは 1 回だけ数えられます。--include-outgoing で送出側も数えます。カーネルでのドロップ数 (PACKET_STATISTICS) を dropped に表示します。
pcap全 OSlibpcap / Npcap。--features pcap でビルドしたときのみ使えます。送出フレームの除外 (pcap_setdirection) は Windows では効きません。
pcapfile全 OSpcap / pcapng ファイルを、記録時刻のまま受信したものとして再生します。インタフェースの代わりにファイルパスを指定します。実機 NIC なしの確認や、別の場所で取ったキャプチャのオフライン照合に使います。再生は一瞬で終わるため、pps / bps は「処理速度」になります。
null全 OS何も受信しません (テスト用)。

フィルタ

フィルタは tcpdump / BPF の一部を、バックエンドに関係なくユーザ空間で評価します。空のフィルタは全フレームに一致します。キーワードは大文字小文字を区別しません。

書き方意味
and / &&、or / ||、not / !、( )論理演算 (優先順位は not > and > or)
ether [src|dst] host <MAC>、ether src <MAC>送信元 / 宛先 MAC (00:11:22:33:44:55、0011.2233.4455)
ether proto <番号|ip|ip6|arp|vlan|mpls|lldp|pppoe>EtherType (VLAN タグの種別も含めて判定)
broadcast、multicast (ether を前に付けても可)宛先 MAC が全 1 / マルチキャスト
vlan [<ID>]802.1Q / 802.1ad タグがある (ID 指定時はいずれかのタグがその ID)
mplsMPLS (0x8847 / 0x8848)
ip、ip6、arp、rarpL3 の種別
tcp、udp、sctp、icmp、icmp6トランスポートの種別
ip proto <番号|名前>、ip6 proto …、proto …IP プロトコル番号 (ospf、gre、pim、vrrp などの名前も可)
[src|dst] host <アドレス>、src <アドレス>IPv4 / IPv6 アドレス (ARP の送信元 / 対象アドレスも対象)
[src|dst] net <アドレス/長さ>、net <アドレス> mask <マスク>ネットワーク
[tcp|udp|sctp] [src|dst] port <番号>ポート
[tcp|udp|sctp] [src|dst] portrange <下限>-<上限>ポート範囲
less <n>、greater <n>、len <|<=|>|>=|==|!= <n>フレーム長 (FCS なし)
wpg (signature)wpg のシグネチャを含むフレーム

例: udp dst port 5001 and wpg、vlan 100 and not arp、ip6 and net 2001:db8::/32。

tcpdump との違い:

  • vlan の後ろでもオフセットはずれません。どのプリミティブも VLAN タグの内側を見ます。
  • host / net は ARP のアドレスにも一致します。
  • ip[0] & 0xf のようなバイトオフセット式はありません。
  • 判定はユーザ空間で行うため、受信した全フレームがユーザ空間にコピーされます。

文法エラーは位置付きで報告されます (wpg capture は終了コード 2、API は 400、Web UI は入力欄に表示)。

シグネチャ

wpg send --signature (ジョブでは "signature": true、Web UI の新しいジョブのフォームの 詳細設定 にあるチェックボックス) を指定すると、送出する各フレームの 末尾 24 オクテット にシグネチャを書き込みます。

オフセット長さ内容
04magic 57 50 47 01 ("WPG" + 版 1)
44ストリーム ID (ビッグエンディアン)
88ストリーム内の連番 (0 から)
168送出時刻 (Unix エポックからのナノ秒)
  • 上書きするのはペイロード (または Ethernet のパディング) だけです。Ethernet / 802.1Q / 802.1ad / IPv4 / IPv6 (拡張ヘッダ) / UDP / TCP / ICMP / ICMPv6 のヘッダを読み、その後ろに 24 オクテット以上ないフレームはそのまま送り、統計の unsigned (CLI の「未署名」) に数えます。シグネチャを使うときは、ペイロードを 24 オクテット以上にしてください。
  • UDP / TCP / ICMP / ICMPv6 のチェックサムは差分更新 (RFC 1624) するので、受信側で不正なチェックサムにはなりません。IPv4 の UDP チェックサムが 0 (未計算) の場合は 0 のままです。OSPF や GRE のチェックサムなど、それ以外のチェックサムは更新しません。
  • ストリーム ID は --stream-id (既定 0) + ストリーム番号です。複数ストリームのジョブでは、ストリームごとに別の ID になります。
  • 連番はストリームごとに、全ワーカーを通して 0 から振られます。送出時刻はバッチ単位で取ります。

受信側はフレームの末尾 92 オクテット以内で magic を探すため、受信時に付いた Ethernet パディングや FCS があっても見つけられます。

照合結果の読み方

--verify (API / Web UI では verify) を付けると、フィルタに一致したフレームのシグネチャをストリームごとに集計します。

項目意味
receivedそのストリーム ID で受信したフレーム数
seq first–last受信した最小・最大の連番
lost(最大 − 最小 + 1) − 受信した連番の種類数。概算です。最小より前 (受信開始前に送られた分) と、集計時点でまだ届いていないフレームは数えません。
reorderedそれより大きい連番の後に届いたフレーム
duplicates直近 65536 連番以内で 2 回目に届いた連番 (それより古い重複は reordered に数えます)
latency min / avg / max受信時刻 − 送出時刻
jitter連続するフレームの遅延の差の絶対値の平均

遅延は送信側と受信側の時計が一致している場合だけ意味があります (同一ホスト、または PTP / NTP で同期したホスト)。負の値は時計がずれていることを示します。遅延にはカーネルのネットワークスタックとバッチ処理の時間も含まれます。

例

同一ホストの lo で試す (Linux)

# 端末 1: 受信 (1000 フレーム受けたら終了)
wpg capture -i lo -f "udp port 5001 and wpg" --count 1000 --verify -w rx.pcapng
# 端末 2: 送出
wpg send templates/examples/eth-ipv4-udp-range.wpg.yaml -i lo --backend afpacket \
  --count 1000 --rate 50kpps --signature --stream-id 9

受信側の出力例:

#   0  12:54:03.823537753    106 B  ethernet2 / ipv4 / udp / raw  [wpg stream 9 seq 0]
...
matched    1000 pkts  106000 bytes
saved      1000 pkts to rx.pcapng
signed     1000 with a signature, 0 without
stream 9     received 1000  seq 0-999  lost 0 (0.000%)  reordered 0  duplicates 0
             latency min 96.4 µs  avg 190.5 µs  max 829.9 µs  jitter 5.6 µs

2 台のホストで試す

受信側で wpg capture -i eth1 --verify -f "udp and wpg" を先に起動し、送信側で wpg send … --signature を実行します。遅延を見る場合は両ホストの時計を PTP などで同期してください。ロスと順序の確認には時計の同期は不要です。

NIC なしで試す (全 OS)

wpg send templates/examples/eth-ipv4-udp-range.wpg.yaml --backend pcapfile -i tx.pcapng \
  --count 500 --signature
wpg capture --backend pcapfile -i tx.pcapng --verify

別の場所 (スイッチのミラーポートなど) で取ったキャプチャも、同じ方法でオフライン照合できます。

Web UI

「受信」画面でバックエンド、インタフェース、フィルタ (入力中に検査されます)、件数・時間の上限、表示する先頭フレーム数、保存ファイル名、シグネチャ照合の有無を指定して開始します。実行中はカウンタとレートが WebSocket でリアルタイムに更新され、ストリームごとの照合結果、先頭 N フレームの一覧 (選んだフレームの Hex とデコード結果) を表示します。保存した pcapng は終了後にダウンロードできます。

pcapfile バックエンドのファイルと保存先は、サーバのデータディレクトリの captures/ 以下のファイル名で指定します (ジョブのドライラン出力もここに書かれます)。

制約

  • フィルタはユーザ空間で評価し、afpacket は 1 フレームごとに recvfrom を呼ぶため、数十万 pps を超える受信には向きません。高レートの計測では、受信カウンタを NIC やスイッチの統計と併用してください。
  • 保存する pcapng のタイムスタンプはマイクロ秒単位です。
  • 本格的なキャプチャ機能 (リングバッファ、ファイル分割、カーネル BPF) は対象外です。

SNMP ツール

Status: draft

wpg には、パケット生成とは別に SNMP マネージャが入っています (Web UI の「SNMP」画面、API は /api/snmp)。機器のカウンタを読みながら負荷をかける、トラップが飛ぶか確かめる、といった検証を wpg だけで行えます。設計は ADR-0010 を参照してください。

  • Get / GetNext / GetBulk / Walk / Set (SNMPv1 / v2c / v3)
  • SNMPv3 USM: noAuthNoPriv / authNoPriv / authPriv、認証 MD5 / SHA-1 / SHA-224 / SHA-256 / SHA-384 / SHA-512、暗号 DES / AES-128 / AES-192 / AES-256。エージェントの Engine ID は自動で検出します
  • トラップ / インフォームの送信と受信
  • MIB のアップロードと、名前・列挙値・表示ヒント・単位を使った読める表示
  • やり取りした SNMP データグラムの pcap / pcapng 保存

画面

画面は 3 つのタブに分かれます。ヘッダの「pcap 保存」はすべてのタブに共通です。

操作

  1. 宛先 (ホスト、ポート、バージョン、v1 / v2c はコミュニティ、v3 はユーザー・セキュリティレベル・プロトコル・パスフレーズ) を入力します。よく使う宛先は「プロファイルを保存」でブラウザに保存できます。コミュニティとパスフレーズはプロファイルにもサーバにも保存されません。
  2. OID 欄にオブジェクト名か OID を入力します。読み込み済み MIB の名前が補完されます (ifDescr.1、IF-MIB::ifTable、sysUpTime.0、1.3.6.1.2.1.1)。スペース区切りで複数指定できます。「MIB ツリーから選ぶ」を開くと、ツリー (全体、またはモジュールごと) のチェックボックスで OID 欄に追加・削除できます。スカラーには .0 が付きます。
  3. Get / GetNext / GetBulk / Walk を押します。ボタンの下に各操作の説明があります。
    • Get: 指定したインスタンスの値。スカラーは sysDescr.0、表の列は ifDescr.1 のように INDEX まで指定します。sysDescr や ifTable のままだと noSuchObject が返ります (結果欄にその旨を表示します)。
    • GetNext: 各 OID の次のインスタンス 1 件。
    • GetBulk (v2c / v3): 各 OID の後ろを「最大繰り返し数」件ずつ 1 リクエストで返します。サブツリーの終わりでは止まらないので、指定した OID の外の値も含まれます。
    • Walk: 各 OID のサブツリーをすべて、指定した順に辿ります。v2c / v3 では GetBulk、v1 では GetNext で進み、サブツリーの終わり・endOfMibView・増えない OID で止まります。sysDescr.0 のようなインスタンスを指定すると Get の結果になります。「Walk 上限」はすべての OID の合計です。

結果欄には要求した OID を表示します。

結果は「名前・型・値」の表で表示します。値は MIB を使って整形します。

元の値表示
ifOperStatus の 1up(1)
MacAddress (1x:)00:1b:21:aa:bb:cc
DateAndTime2026-10-27,13:5:9.4,+9:0
TimeTicks 123456781d 10:17:36.78 (12345678)
hrMemorySize 80488048 KBytes (UNITS)
OID 値IF-MIB::ifIndex

「生の値」にチェックを入れると MIB を使わない値を表示します。Walk の結果に概念表 (ifTable など) が含まれていれば、INDEX をキーにした行 × 列の表で表示します (「表形式」で切り替え)。表に入らない値 (interfaces を Walk したときの ifNumber.0 など) は表の上に一覧で表示します。

「自動更新」を選ぶと、最後の読み取り操作をその間隔で繰り返します。Counter32 / Counter64 は前回との差から毎秒のレートを計算し、スパークラインで推移を表示します (Counter32 の折り返しも考慮します)。

Set は「Set」欄に OID・型・値を並べます。型 auto は MIB から型を決め、down のような列挙ラベルも受け付けます。MIB にないオブジェクトは型 (net-snmp と同じ i u c C t a o s x d n) を選んでください。エージェントのエラー (notWritable、wrongType など) は結果欄に表示します。

トラップ

  • 受信: 待ち受けアドレス (既定 0.0.0.0:162)、受け付けるコミュニティ (空ならすべて)、v3 ユーザーを指定して「開始」します。受信した通知は一覧にすぐ表示され (WebSocket の snmp_trap イベント)、トラップ OID と各バインディングを MIB の名前で表示します。インフォームには自動で応答します。コミュニティ違いや認証失敗のメッセージも、エラー付きで一覧に出ます。
  • 送信: 操作タブの宛先設定で、トラップ OID (linkDown など) とバインディング (1 行に「オブジェクト 値」か「オブジェクト 型 値」) を送ります。v1 では RFC 3584 に従って Trap-PDU に変換します。「インフォーム」にすると応答を待ちます。v3 トラップでは wpg 側が権威エンジンになります。

MIB

MIB ファイル (.mib .txt .my) をドラッグ & ドロップするか「ファイルを選択」でアップロードします。ファイルは <data_dir>/mibs (設定 snmp.mib_dir) に保存され、すぐに読み込まれます。モジュール一覧には読み込み状態を表示します。

  • 読み込み済み: 問題なし
  • 問題ありで読み込み: 一部の定義が解決できない、IMPORTS 先のモジュールがない、など。足りないモジュール名を表示するので、それもアップロードしてください (ベンダ MIB は CISCO-SMI のような共通モジュールに依存することが多いです)
  • 使用不可: 何も解決できない

ベンダ MIB によくある崩れ (コメント行、知らないマクロ、IMPORTS 漏れ、壊れた定義) は警告として記録し、残りは使えるようにします。アップロードしたモジュールは削除できます (同じファイルに含まれるモジュールごと削除)。同梱モジュールは削除できませんが、同名の新しい版をアップロードすると置き換わります。

MIB ツリーではノードを展開して、説明・構文・アクセス・列挙値・INDEX などを確認できます。「表示するモジュール」でアップロードした MIB (または同梱 MIB) を 1 つ選ぶと、そのモジュールで定義されたオブジェクトだけを、モジュールの最上位ノードから表示します (1.3.6.1 から辿る必要はありません)。モジュール一覧の虫眼鏡ボタンでも切り替えられます。「リクエストで使う」で操作タブの OID 欄に入り (スカラーは .0 付き)、Get (スカラーのみ) / GetNext / Walk ボタンでは操作タブに移ってそのまま実行し、結果欄までスクロールします。

同梱 MIB: SNMPv2-SMI / TC / CONF / MIB、RFC1155-SMI、RFC-1212、RFC-1215、RFC1213-MIB、IANAifType-MIB、IF-MIB、INET-ADDRESS-MIB、IP-MIB、HOST-RESOURCES-MIB、SNMP-FRAMEWORK-MIB、SNMP-USER-BASED-SM-MIB、UUID-TC-MIB、IANA-ENTITY-MIB、ENTITY-MIB (RFC から抽出した IETF の MIB モジュール)。

pcap 保存

ヘッダの「pcap 保存」をオンにすると、以降に wpg が送受信するすべての SNMP データグラム (リクエスト、応答、トラップ、インフォーム) を記録します。.pcap / .pcapng でダウンロードでき、Wireshark で SNMP として表示できます。データグラムは通常の UDP ソケットで送受信しているため、Ethernet / IP / UDP ヘッダは実際のアドレスとポートで合成し、MAC アドレスはプレースホルダ (02:00:00:00:00:01 が wpg 側、02:00:00:00:00:02 が相手) です。記録はメモリ上で最大 10 万フレームまで保持します。

設定

[snmp]
enabled = true        # SNMP ツール画面と API
trap_listen = ""      # 例 "0.0.0.0:162"。空なら起動時は受信しない (画面から開始できる)
mib_dir = ""          # 既定 <data_dir>/mibs

trap_listen を設定すると、起動時にトラップ受信を開始します (起動時の受信器はコミュニティ制限なし・v3 ユーザーなし。必要なら画面から開始し直してください)。

UDP 162 の権限

1024 未満のポートで待ち受けるには root か CAP_NET_BIND_SERVICE が必要です。

sudo setcap cap_net_bind_service=+ep "$(command -v wpg)"

権限がない場合は 0.0.0.0:1162 などで待ち受け、機器のトラップ送信先ポートをそこに向けてください。権限不足で開始できないときは、その旨のエラーを表示します。

制限

  • 受信器は SNMPv3 の時刻窓 (notInTimeWindow) を検査しません。遅れたメッセージも表示するためです。noAuthNoPriv の v3 メッセージは任意のユーザー名で受け付けます。
  • v3 のパスフレーズは 8 文字以上が必要です (RFC 3414 の推奨と多くの機器の制限)。
  • MIB パーサは名前と型を引くためのもので、SMI の厳密な検証器ではありません。

DHCP サーバー

Status: draft

wpg には試験用の DHCP サーバーが入っています (Web UI の「DHCP」画面、API は /api/dhcp)。wpg のホストを試験対象 (ルーター、CPE、端末) と直結し、相手にアドレスやプレフィックスを配れます。設計は ADR-0012 を参照してください。

  • DHCPv4: アドレスプール、サブネットマスク・ルーター・DNS・ドメイン名・NTP、固定割り当て (MAC → IP)、リレー (giaddr / option 82)
  • DHCPv6: アドレス (IA_NA)、プレフィックス委任 (IA_PD)、DNS サーバー / ドメイン検索リスト、Rapid Commit
  • ルーター広告 (RA): ホストに DHCPv6 を使わせる M / O フラグ、任意のオンリンクプレフィックス
  • インタフェースの固定 IP (画面からは一時的に、デプロイ時は netplan で永続的に)
  • リース表とやり取りのログ

Linux でのみ動作します。

インタフェースを決める

DHCP は指定した 1 つのインタフェースからだけ応答します (ソケットを SO_BINDTODEVICE でそのインタフェースに縛ります)。管理用のインタフェースには出しません。

デプロイ時に固定するのが基本です。

scripts/deploy.sh user@host --service --iface ens3 \
    --dhcp-iface ens3 --dhcp-iface-addr 192.168.100.1/24,2001:db8:1::1/64
  • --dhcp-iface ens3: /etc/wpg/wpg.env に WPG_DHCP__IFACE=ens3 を書きます。画面ではインタフェースを変更できなくなります。サービスには CAP_NET_BIND_SERVICE (ポート 67 / 547) のドロップインが付きます。
  • --dhcp-iface-addr: そのインタフェースの固定 IP です。/etc/netplan/90-wpg-ens3.yaml を書いて netplan apply します (DHCP クライアントと RA の受け入れは無効になります)。デフォルトルートのあるインタフェースには書き込みません。元に戻すにはこのファイルを消して sudo netplan apply してください。

Windows からは deploy.ps1 -DhcpIface ens3 -DhcpIfaceAddr 192.168.100.1/24 です。回答ファイルでは dhcp_iface= / dhcp_iface_addr= です。

wpg.toml で直接指定することもできます。

[dhcp]
enabled = true
iface = "ens3"

iface が空のときは、画面で tx.allowed_ifaces に含まれるインタフェースから選びます。

画面

状態

インタフェース、DHCPv4 のサーバー識別子、DHCPv6 のサーバー DUID、wpg が付与したアドレス、受信 / 送信の数を表示します。ヘッダの「保存して起動」で設定を保存してサーバーを起動 (動作中なら再起動) し、「停止」で止めます。動作中に wpg を再起動すると、サーバーも自動で再開します。

設定

インタフェースのアドレス (固定 IP): 192.168.100.1/24, 2001:db8:1::1/64 のように書くと、サーバーの起動時にインタフェースに付与し (リンクも up にします)、停止時に wpg が付けた分だけ削除します。再起動 (OS) をまたいで残したい場合はデプロイ時の --dhcp-iface-addr を使ってください。最初の IPv4 アドレスが DHCPv4 のサーバー識別子になります (「サーバー識別子」欄で上書きできます)。

DHCPv4: 範囲の先頭 / 末尾、サブネットマスク、リース時間 (T1 / T2 はその 1/2 と 7/8)、ルーター、DNS サーバー、ドメイン名、NTP サーバー。リストはカンマかスペースで区切ります。固定割り当ては 1 行に MAC IP (範囲外のアドレスも可) です。

DHCPv6: 「アドレス (IA_NA)」は範囲から 1 つずつ、「プレフィックス委任 (IA_PD)」はプールのプレフィックス (例 2001:db8:100:: / 40) を委任長 (例 56) で区切って順に配ります。推奨有効期間と有効期間 (T1 / T2 は推奨有効期間の 1/2 と 4/5)、DNS サーバー、ドメイン検索リスト、ADVERTISE の優先度、Rapid Commit を設定します。

ルーター広告: ホストは RA の M フラグ (アドレス) か O フラグ (その他の設定) を見て初めて DHCPv6 を使います。リンク上に RA を出すルーターがなければ「ルーター広告を送る」を有効にしてください。M フラグは IA_NA が有効なとき、O フラグは常に立てます。オンリンクプレフィックスを書くと Prefix Information を付け、「SLAAC」で A フラグも立てます。ルーター寿命を 0 にすると、デフォルトルーターにはなりません。

リース

割り当て中・提示中・辞退 (DECLINE、使用中と報告されたアドレス) のリースを表示します。削除すると wpg 側の記録が消えます (クライアントは次の更新まで使い続けます)。期限切れのリースは自動で消えます。

アクティビティ

要求と応答 (DISCOVER → OFFER、SOLICIT → ADVERTISE、RA の送信など)、応答しなかった理由 (プール枯渇、別サーバーを選択、未知のサーバー識別子) を新しい順に表示します。

権限

処理必要な権限
ポート 67 / 547 で待ち受けCAP_NET_BIND_SERVICE
RA の送信 (生 ICMPv6)CAP_NET_RAW
インタフェースへのアドレス付与CAP_NET_ADMIN

deploy.sh が入れる systemd サービスはすべて持っています (--dhcp-iface を指定したとき、または SNMP トラップの設定があるとき bind-service.conf ドロップインが付きます)。手動で動かす場合は sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/local/bin/wpg を実行してください。

制限と注意

  • 同じリンクに別の DHCP サーバーがあると競合します。試験用インタフェースでのみ使ってください。
  • DHCPv4 の応答は、リレー経由ならリレーへ、更新中のクライアントにはユニキャスト、それ以外はブロードキャストで送ります。
  • DHCPv6 のリレーメッセージ (RELAY-FORW) には応答しません。
  • 静的な DHCPv6 割り当て (DUID → アドレス) はありません。

crate 構成

リポジトリは crates/ 配下の Cargo workspace です。ユーザーに見える文字列は locales/、サンプルは templates/、ドキュメントは docs/、E2E テストは e2e/ と、いずれも crates/ と同じ階層に置かれます。

クレート一覧

クレート役割wasm32
wpg-coreプロトコル定義 IR、パケットの合成・解析、フィールドジェネレータ、lint 診断 (diag::keys)。OS 非依存○
wpg-protocols組み込みプロトコル定義 (Ethernet 〜 IS-IS / CLNP)。Rust マクロで wpg-core の IR にコンパイルされる○
wpg-i18nFluent ベースの i18n (ja / en / zh-CN / zh-TW / ko / de / fr / es)。locales/<lang>/main.ftl を include_str! で埋め込む○
wpg-templateテンプレートファイル形式 (.wpg.yaml / JSON)、スキーマのバージョン管理と (デ)シリアライズ
wpg-tx送信バックエンド (null、pcap、AF_PACKET、AF_XDP、DPDK) を TxBackend トレイトの裏に置く
wpg-rx受信側カウンタと簡易検証 (v1 は最小限)
wpg-sysOS の情報: ネットワークインタフェース、権限、カーネル、hugepages、Npcap / libpcap 検出、doctor チェック
wpg-logロギング設定: tracing サブスクライバ (pretty / JSON)、ローテーションログ、ライブ配信用のブロードキャストシンク
wpg-serverWeb UI を組み込んだ axum の HTTP / WebSocket サーバ
wpg-cliコマンドライン本体 (serve、send、render、import、template、doctor など)。成果物は wpg バイナリ
wpg-webLeptos (CSR) の Web UI。Trunk で WASM にコンパイルする○
dpdk-sysDPDK (24.11 / 23.11 LTS) の生の FFI。bindgen で生成し、インラインの高速パス (rte_eth_tx_burst、rte_pktmbuf_alloc など) と rte_errno は C の shim (wpg_ 接頭辞) で包む。link feature を付けたときだけ中身が入る (wpg-tx の dpdk から有効化)。ADR-0004
wpg-testutilテスト補助: pcap / pcapng の読み書き、16 進ヘルパー、golden ファイルの突合 (非公開)

さらに wpg-golden-tests が golden pcap のバイト突合と tshark 突合を担います (cargo test -p wpg-golden-tests)。

wasm32 制約

wpg-core・wpg-protocols・wpg-i18n・wpg-web は Web UI のためにブラウザ (wasm32-unknown-unknown) でもビルドできる必要があります。この 4 クレートではファイル I/O やスレッド、OS 依存のクレートを使わないでください。CI と just check-wasm が次を実行して保証します。

cargo check -p wpg-core -p wpg-protocols -p wpg-i18n --target wasm32-unknown-unknown

送信や OS の情報取得 (wpg-tx、wpg-sys) はネイティブ専用です。合成・解析ロジックを足すときは、OS 非依存の wpg-core に置けないか先に検討してください。

プロトコルの追加手順

コアのプロトコルは Rust マクロ (crates/wpg-protocols/src/) で定義し、同一の IR にコンパイルされます。IR から合成、解析、GUI エディタ、リファレンスドキュメントが生成されます。新しいプロトコルには、定義、Fluent 文字列、サンプルテンプレート、golden pcap、可能であれば tshark 突合テストが必要です。これにより、プロトコル追加のコストを一定に保ちます。

手順

  1. 定義する。 crates/wpg-protocols/src/ の該当モジュール (例: アプリ層なら app.rs) にマクロでプロトコルを足し、カタログに登録します。フィールドには desc = "key" で Fluent キーを付けます。近似に逃げる前に、下の「定義の部品」で表現できないか確認してください。
  2. Fluent 文字列を足す。 プロトコル名と各フィールドの desc キーを locales/*/main.ftl の全言語に追加します (i18n 文字列の追加手順)。
  3. サンプルテンプレートを置く。 templates/protocols/<group>/ に .wpg.yaml を 1 つ以上追加します。descriptions の ja / en と protocol: / layer: タグを付けます。samples.rs のテストが、全プロトコルにサンプルがあること、整形式サンプルが同じスタックに読み戻せることを検査します。
  4. golden を再生成する。 just golden-update で tests/golden/*.hex / *.pcap を作り直し、差分を確認します。.hex / .pcap は手で編集しないでください。
  5. 突合する。 tshark があれば WPG_TSHARK=1 cargo test -p wpg-golden-tests -- --ignored で Wireshark と突き合わせます。
  6. 補足ドキュメントを更新する。 近似が残る場合やカプセル化が特殊な場合は docs/{ja,en}/src/protocols/ に ja / en そろえて追記します。
  7. リファレンスを再生成する。 just docs-gen でプロトコルリファレンスなどを作り直してコミットします (下の「リファレンスドキュメント」)。
  8. プッシュ前のチェック (CLAUDE.md) をすべて通します。
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace --no-fail-fast
cargo check -p wpg-core -p wpg-protocols -p wpg-i18n --target wasm32-unknown-unknown

定義の部品

近似 (opaque なバイト列や Manual 固定) に逃げる前に、次の部品で表現できないか確認してください。

目的部品例
要素数フィールドauto = count(list_field) (リスト要素・TLV 値の中でも可。count(list_field, adjust = -1) で「最後の要素の位置」)IGMPv3 num_group_records、VRRP count_ip_addrs、SRH last_entry
一部を除いたチェックサムauto = checksum(kind, coverage, exclude = [field])OSPFv2 authentication、LSA ls_age
後続の可変長フィールドのオクテット数auto = size(field) (リスト要素・TLV 値の中でも可)IS-IS のサブ TLV 長
ceil(ビット数 / 8) オクテットのプレフィックスbytes(from = len, adjust = 7, div = 8) (Length::FromField { div })IS-IS 拡張 IP / IPv6 到達性
可変長要素 N 個のリストLength::Count { field }IS-IS の省略可能なサブ TLV ブロック (S ビット)
可変長フィールドの後、ヘッダ長フィールドの位置で終わる領域Length::UntilOffset { field, unit, adjust } (終わりは field * unit + adjust)長さ指示子までの CLNP / ES-IS オプション、SRH の TLV (hdr_ext_len * 8 + 8)、GTPv2-C の IE (長さは 5 オクテット目から: adjust = 4)、RTCP (ワード数 − 1: unit = 4, adjust = 4)
末尾の N オクテットを残す領域Length::ToEndExcept { octets }ICV の前までの MACsec セキュアデータ
終端オクテット列で終わるテキスト / リストLength::Until { terminator } (bytes: 終端まで、値は終端を含まない。list: 要素の先頭が終端になるまで)SIP の CRLF で終わる行と空行、null オクテットで終わる RTCP SDES 項目
TLV の型と長さの間にある値オクテットTlvDef::head_octetsSCTP チャンクのフラグ
N オクテット境界まで詰める TLV 項目 (詰め物は長さに含めない)TlvDef::align (unpadded_last: 最後の項目は外側の項目が詰める)SCTP のチャンク・パラメータ・エラー原因
同じタイプで値によってレイアウトが変わる TLV 項目TlvVariant::when_value_starts / when_value_len (タイプを共有するバリアント。判別条件のないものが既定)AFI / SAFI ごとの BGP MP_REACH_NLRI、3 / 4 オクテットの OSPF SR の SID、EVPN の IPv4 / IPv6 IP Prefix ルート
長さが型より前にある TLV 項目TlvDef::len_first (head_octets / long_length とは併用不可)RSVP オブジェクト (長さ、Class-Num、C-Type)
長さの直後にあり長さに数えない TLV の値オクテットTlvDef::uncounted_octets (ヘッダを含まない長さのときのみ)GTPv2-C IE のスペア / インスタンスのオクテット
End 項目で終わり、その後に詰め物が続く TLV 列Length::UntilTlv { type_value } (tlv フィールドのみ)CFM、802.3ah OAM の TLV (End TLV 0)
TLV の長さを広げるタイプのフラグTlvDef::long_length (TlvLongLength { flag, len_bits }。値が長すぎると自動で付く)BGP の Extended Length パス属性
指定 PDU 長まで埋め草 TLV で埋めるTlvDef::fill (TlvFill { variant, until })IS-IS Hello の Padding TLV
NUL 終端文字列cstring 型TFTP filename / mode
長さ指示子付き OSI アドレスnsap 型 (長さオクテットは自動)CLNP / ES-IS / IS-IS の NSAP・NET
送信元ポートでも demuxBinding::alt_fieldUDP / TCP の src_port
ペイロード先頭ビットで demuxBinding::peek (Peek { on, bits, table }。skipping(n) で先頭 n ビットを飛ばしてから読む)MPLS、GTP-U、OSI (NLPID)、IPv6 ルーティングタイプ (skip = 16)
上位層チェックサムの宛先を置き換えるルーティングヘッダProtocolDef::final_destination (FinalDestination { list, when }: when が 0 以外のとき list の要素 0 を疑似ヘッダの宛先に)SRv6 SRH
長さだけが違うメッセージBindingEntry::with_min_lenIGMPv3 / MLDv2 クエリ
同じ番号でレイアウト違いBindingEntry::reparsingVRRPv2/v3、HSRPv1/v2、TFTP

評価順などの詳細は仕様 docs/spec/02-packet-builder.md の「次プロトコルの選択」を参照してください。

リファレンスドキュメント

プロトコルリファレンス は定義から自動生成します。just docs-gen (cargo run -p wpg-cli -- docs gen) を実行して結果をコミットしてください。新しいプロトコル、フィールド、バインディング、サンプルテンプレートは自動で反映され、フィールド説明は desc = "..." の Fluent キー (ja / en) から取ります。手書きの補足は docs/{ja,en}/src/protocols/ に書き、プロトコル ID をバッククォートで書けば (`isis_l1_lsp`)、生成ツールが双方向のリンクを張ります。コミット済みのページが古いと、テスト generated_docs_are_up_to_date (wpg-cli) が失敗します。

i18n 文字列の追加手順

ユーザーに見える文字列は、サーバ・CLI・Web UI (エラーメッセージを含む) のいずれでも直書きせず、Fluent のキーにします。文字列は wpg-i18n クレートが扱い、locales/<lang>/main.ftl の Fluent ファイルから include_str! で埋め込まれます (ブラウザでも動くようファイル I/O はありません)。対応言語は日本語 (ja)・英語 (en)・中国語簡体字 (zh-CN)・中国語繁体字 (zh-TW)・韓国語 (ko)・ドイツ語 (de)・フランス語 (fr)・スペイン語 (es) の 8 つです。

マニュアル (mdBook) と wpg docs gen が生成するリファレンス、同梱テンプレートの説明 (meta.descriptions) は日本語と英語だけです。テンプレートに表示言語の説明が無いときは英語の説明を表示します。

キーを追加する

  1. locales/*/main.ftl の すべて (8 言語) に、同じキーで 1 行ずつ足します。英語が基準かつフォールバックです。プレースホルダ ({ $name }) とバッククォートで囲んだコード・ID は翻訳せずにそのまま残します。

    # locales/en/main.ftl
    send-done = Sent { $packets } packets in { $elapsed }
    
    # locales/ja/main.ftl
    send-done = { $packets } パケットを { $elapsed } で送信しました
    
    # locales/de/main.ftl (zh-CN / zh-TW / ko / fr / es も同様)
    send-done = { $packets } Pakete in { $elapsed } gesendet
    
  2. コードから参照します。引数が無ければ t、あれば t_args を使います。

    #![allow(unused)]
    fn main() {
    use wpg_i18n::{t, t_args, FluentArgs, Locale};
    
    let s = t(locale, "error-not-found");
    
    let mut args = FluentArgs::new();
    args.set("packets", 1022);
    args.set("elapsed", "0.5s");
    let s = t_args(locale, "send-done", &args);
    }

未定義のキーは、英語へ、最後はキー名そのものへフォールバックします。{ $name } のプレースホルダ名は呼び出し側との契約なので、翻訳で変えないでください。

キーの集合を揃える

すべての言語の .ftl は 同じキー集合 でなければなりません。wpg-i18n のユニットテストがこれを検査し、どれかの言語にキーが欠けていたり、英語に無いキーがあったりすると失敗します。

cargo test -p wpg-i18n

これが仕様 (docs/spec/11-risks.md) の「i18n 抜け漏れ 0 (lint)」にあたります。専用の wpg サブコマンドはありません。同じテストで、プロトコルカタログのフィールド説明キーがすべて存在すること、使われていないキーが無いこと (no_unused_keys: どのソースからも参照されないキーは削除します。実行時に接頭辞から組み立てる docgen-* と rtcp-* は対象外) も検査します。CI では cargo test --workspace の一部として走ります。GUI の E2E (just e2e、e2e/README.md) はブラウザ上での言語切替も確認します。

プロトコル名・フィールド説明

プロトコル定義 (wpg-protocols) のフィールドに付ける desc = "key" は Fluent キーです。プロトコルを足したら、その desc キーをすべての言語の .ftl に追加します (CONTRIBUTING.ja.md の「プロトコルの追加」、プロトコルの追加手順)。

#![allow(unused)]
fn main() {
// crates/wpg-protocols/src/app.rs
op: enum(8) { 1 => boot_request, 2 => boot_reply } = 1, desc = "dhcp-op";
}
# locales/*/main.ftl
dhcp-op = ...

診断 (diag-*)・lint (lint-*) のメッセージも同じ仕組みです。引数名 ({ $field } など) は wpg-core の diag::keys との契約です。

言語を追加する

  1. locales/<tag>/main.ftl を作り、全キーを翻訳します (<tag> は BCP 47 の言語タグ。例: pt-BR)。
  2. wpg-i18n の Locale に変種を追加し、Locale::ALL・as_str()・source()・from_langid (Accept-Language や LANG からの判定) に足します (crates/wpg-i18n/src/lib.rs の doc コメント参照)。
  3. 言語名のキー ui-lang-<tag> (その言語自身での名前。例: ui-lang-pt-br = Português (Brasil)) をすべての .ftl に足し、crates/wpg-web/src/i18n.rs の locale_label_key に対応を追加します。ヘッダと設定画面の言語メニューに自動で並びます。
  4. cargo test -p wpg-i18n -p wpg-web でキーの抜けが無いことを確認します。

言語の判定は、Web UI では保存済みの設定、なければブラウザの navigator.languages、API では Accept-Language、CLI では LC_ALL / LC_MESSAGES / LANG の順です。中国語は文字体系と地域で振り分け、zh-Hant・zh-TW・zh-HK・zh-MO は繁体字、それ以外の zh は簡体字になります。対応していない言語は英語になります。

リリース手順

バージョン

ワークスペースは単一バージョンです (Cargo.toml の [workspace.package] version。各クレートは version.workspace = true)。セマンティックバージョニング に従い、v1.0 までは破壊的変更があり得ます。

リリース判定 (ゲート)

タグを打つ前に、次がすべて緑であることを確認します。普段の「プッシュ前のチェック」(CLAUDE.md) に加えて、プロトコルとセキュリティ、ドキュメントのゲートがあります。

# プッシュ前のチェック
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace --no-fail-fast
cargo check -p wpg-core -p wpg-protocols -p wpg-i18n --target wasm32-unknown-unknown

# プロトコル (golden pcap と tshark 突合)
cargo test -p wpg-golden-tests
WPG_TSHARK=1 cargo test -p wpg-golden-tests -- --ignored

# セキュリティ (just audit / just deny)
cargo audit
cargo deny check

ROADMAP.ja.md の v1.0 リリース判定 (M12) では、これに加えて次を満たします。

  • P0 + P1 プロトコルの golden pcap と tshark 突合がすべて緑。
  • 3 OS でビルド・起動・pcap バックエンド送出が確認できている。
  • GUI の E2E (just e2e) が緑、i18n の全言語の抜け漏れが 0 (cargo test -p wpg-i18n)。
  • UI を変えたときは docs/{ja,en}/src/images/ のスクリーンショットとビルダーの GIF を just screenshots で再生成する (コミット前に目で確認)。
  • ドキュメントが ja / en そろっており、docs/build.sh が通る。
  • CHANGELOG.md が更新されている。

手順

  1. ゲートをすべて通す (上記)。
  2. CHANGELOG.md の Unreleased の項目を新しいバージョンの節 (## [X.Y.Z] - YYYY-MM-DD) に移し、前回のタグ以降の変更を Conventional Commits から補う。アップグレード時の注意 (テンプレートスキーマ、データベース、設定の変更。アップグレード を参照) も書く。
  3. Cargo.toml のワークスペースバージョン (と [workspace.dependencies] の内部 wpg-* の version) を上げ、Cargo.lock を更新する (cargo check)。
  4. release: vX.Y.Z でコミットし、注釈付きタグ vX.Y.Z を打つ (git tag -a vX.Y.Z -m "wpg X.Y.Z")。
  5. タグをプッシュする (git push origin vX.Y.Z)。.github/workflows/release.yml がアーカイブをビルドし、SHA256SUMS を書き、自動生成のノート付きで GitHub Release を作成するので、その後ノートを編集する。ハイフンを含むタグ (v1.0.0-rc.1) はプレリリースになる。タグがワークスペースのバージョンと一致しないと scripts/release.sh が失敗する。

ワークフローを手動実行 (workflow_dispatch) したとき、またはパッケージングに関わるファイル (scripts/release.sh、scripts/smoke-archive.sh、scripts/build.ps1、packaging/、Docker のファイル、ワークフロー自身、Npcap の読み込みコード) を変える PR では、何も公開せずにアーカイブをビルド・テストしてワークフローの artifact として残します。パイプラインの確認に使ってください。

バイナリ配布

リリースは .github/workflows/release.yml がビルドします。各ターゲットをそれぞれのランナーで scripts/release.sh がビルドして scripts/smoke-archive.sh で確認し、さらに各 OS でアーカイブを試すジョブ (下記) が走ります。ほかのジョブがすべて通ると、最後のジョブがすべてのアーカイブと SHA256SUMS ファイルを付けた GitHub Release を公開します。リリースビルドの trunk はワークフローでバージョンを固定しているので、同じタグを再実行しても同じ Web UI がビルドされます。

ターゲット

アーカイブランナーfeature補足
wpg-<ver>-x86_64-unknown-linux-gnu.tar.gzubuntu-22.04(なし)glibc 2.35 でリンクするので、Ubuntu 22.04 / Debian 12 以降で動きます。afpacket で送信するので libpcap は不要です
wpg-<ver>-aarch64-apple-darwin.tar.gzmacos-14pcapApple シリコン。libpcap は macOS に標準で入っています
wpg-<ver>-x86_64-apple-darwin.tar.gzmacos-14 (クロス)pcapIntel Mac
wpg-<ver>-x86_64-pc-windows-msvc.zipwindows-latestpcapNpcap が無くても起動します。送信には Npcap が必要です

各アーカイブには、wpg / wpg.exe (Web UI を組み込み済み)、README.md、README.ja.md、CHANGELOG.md、2 つのライセンス、templates/、packaging/ (systemd、launchd、Windows サービスのサンプル) が入ります。macOS と Windows は libpcap / Npcap でしか送信できないため、この 2 つは pcap feature 付きでビルドします。Windows では release.sh が wpcap.lib をリンクするために Npcap SDK (バージョンと SHA-256 はスクリプトに固定、target/ にキャッシュ) をダウンロードします。SDK は同梱しません。wpg.exe は wpcap.dll を遅延ロードする (crates/wpg-cli/build.rs) ので、Npcap の無いマシンでも起動し、wpg doctor を実行できます。署名と公証はしていません。利用者が行う手順は macOS と Windows のインストールページを参照してください。

CI で確認していること

ジョブ確認内容
build (<target>)scripts/smoke-archive.sh: .sha256 ファイル、アーカイブの中身、wpg --version、wpg doctor --json、wpg render、wpg serve が /api/health に応答し組み込みの UI を返すこと (クロスビルドの Intel macOS 版は中身のみ)
macOS (launchd, pcap)Apple シリコン版のアーカイブと launchd デーモンを サービスとして動かす のとおりに入れて /api/health を確認し、削除する。続けて feth ペアの片側で --backend pcap により 16 フレーム送信し、もう片側で wpg capture --backend pcap により受信する
Windows (scheduled task, no Npcap)wpg doctor が npcap チェックを失敗にすること、wpg send --backend pcap がクラッシュせずに「Npcap is not installed」で止まること、packaging\windows\wpg-service.ps1 でタスクを登録・起動 (/api/health で確認)・停止・削除できること、C:\ProgramData\wpg と wpg.toml を BUILTIN\Users が読めないこと
Windows (build.ps1)Npcap SDK を C:\Npcap-SDK に置いて (pcap が自動で付く) scripts\build.ps1 を実行し、できたバイナリを動かす
Docker (compose)docker compose up --build --wait、コンテナの /api/health と wpg doctor

ランナーには Npcap を無人インストールできない (サイレントインストールは OEM 版のみ) ため、Npcap 経由の送信は CI では確認できません。リリース前に Windows 実機で手動確認してください。

ローカルでアーカイブを作る

scripts/release.sh                                    # ホストのターゲット、dist/ に出力
scripts/release.sh --target x86_64-apple-darwin       # クロスターゲット (そのリンカ / SDK が必要)
scripts/release.sh --skip-frontend --features pcap    # crates/wpg-web/dist を再利用
scripts/smoke-archive.sh dist/wpg-*.tar.gz            # または: just smoke-archive <archive>
scripts/release.sh --checksums dist                   # dist/ のすべての SHA256SUMS

--skip-frontend を付けない限り trunk (cargo install trunk --locked) が必要です。crates/wpg-web/dist/index.html が無いとパッケージ化を拒否するので、Web UI の無いリリースが出ることはありません。Windows では Git Bash から実行します (7z か zip を使います)。

cargo-dist を使わない理由

ロードマップでは cargo-dist を予定していました。小さなスクリプトにしたのは、wpg では cargo build の前に Trunk でフロントエンドをビルドする必要があり (UI は rust-embed で組み込まれる)、アーカイブにはバイナリの横にテンプレートとサービスファイルを入れるためです。cargo-dist でも独自のビルド前ステップと include で両方できますが、生成されたワークフローは cargo-dist を更新するたびに再生成が必要です。release.sh はローカルでも CI でも同じスクリプトです。インストーラ (shell / PowerShell / Homebrew / MSI) は作りません。必要になったら cargo-dist を再検討してください。

署名

まだ行っていません。macOS の利用者は quarantine 属性を外す必要があります (macOS へのインストール)。Windows では SmartScreen が不明な発行元として警告することがあります (Windows へのインストール)。署名と公証には Apple Developer ID とコード署名証明書が必要ですが、プロジェクトはまだ持っていません。

FAQ / トラブルシュート

困ったときはまず wpg doctor を実行してください。権限・インタフェース・カーネル・hugepages・Npcap / libpcap を 1 行ずつ診断し、OS 別の対処コマンドを表示します。wpg doctor --json はスクリプト向けに同じ内容を返し、チェックが fail のとき終了ステータスは 0 以外です。

wpg doctor のチェック

チェック id未達のときの状態意味と対処
caps.raw_socketfail (Windows は Npcap の管理者専用モードしだい)raw ソケットの権限。Linux は CAP_NET_RAW / root、macOS は BPF アクセス、Windows は Npcap が管理者専用モードのときだけ管理者昇格。権限設定
iface.any_upwarnloopback 以外のインタフェースが carrier 付きで up。ケーブル / リンクを確認
kernel.af_xdpwarnAF_XDP バックエンド用にカーネル 5.10 以降
kernel.tpacket_v3warnカーネル 3.2 以降。なければ afpacket は sendmmsg にフォールバック
hugepageswarnHugepages の設定。DPDK バックエンドでのみ必要
npcapfail / warn (Windows のみ)Npcap が導入され、wpcap.dll が System32\Npcap か System32 にあるか。他 OS では skip
backend.pcapfail (Windows、macOS)この wpg に pcap バックエンド (pcap feature) が組み込まれているか。Windows と macOS で送信できるのはこのバックエンドだけです。Windows で Npcap SDK なしでビルドするとここが fail になるので、SDK を C:\Npcap-SDK に展開して scripts\build.ps1 をもう一度実行します (Windows へのインストール)。macOS では scripts/build.sh をもう一度実行します。Linux では skip
pcap_libwarnlibpcap が見つかること (pcap バックエンドで必要)。Windows と、バックエンドを組み込んでいないときは skip
webui.embeddedwarnwpg より先に Web UI がビルドされていたか。そうでなければ wpg serve は仮のページを表示します。scripts/build.sh (Windows は scripts\build.ps1) をもう一度実行します

各結果は ok / warn / fail / skip (この OS では対象外) のいずれかです。

よくある質問

送信が「permission denied」で拒否されます

生ソケットの送信には権限が必要です。wpg doctor を実行し、caps.raw_socket の行に表示されるコマンド (Linux なら sudo setcap cap_net_raw,cap_net_admin+ep $(command -v wpg) など) を実行してください。file capability はバイナリを置き換えると失われます。権限設定 を参照してください。

目標レートに届きません

  • average が目標を下回り dropped が多いときは、バックエンドが追い付いていません。--burst を上げる、afpacket で --qdisc-bypass を使う、--workers を増やす (1 ワーカー = 1 コア) を試してください。性能チューニング。
  • --rate 50% は、リンク速度の分かる実インタフェースが必要です。lo では Cannot determine the link speed になります。絶対値 (1Gbps など) を指定してください。
  • null バックエンドの unlimited は、フレームを作る速さの測定であり、ネットワークの数値ではありません。

送信せずに確認したい

--backend null (作って数えるだけ)、または --backend pcapfile -i out.pcapng (ファイルに書き出し) で予行演習できます。wpg render FILE -o out.pcapng も送信せず pcapng を書き出します。

テンプレートのエラーを送信前に見つけたい

wpg template lint FILE が、未知のフィールド・範囲外の値・ジェネレータの書式誤り・長さ / チェックサムの不一致を報告します。わざと壊したテンプレート (templates/malformed/) は警告 (diag-*) 止まりで、送信はできます。

インポートしたテンプレートは元のキャプチャと同じですか

wpg import → wpg render の往復はバイト単位で一致します (タイムスタンプは wpg が独自に付けるため異なります)。diff <(tshark -r a.pcapng -x) <(tshark -r b.pcapng -x) で確認できます。

Wireshark で確認したい

golden pcap の tshark 突合は WPG_TSHARK=1 cargo test -p wpg-golden-tests -- --ignored です。自分のキャプチャは tshark -r out.pcapng -V で、チェックサムが [correct] になることなどを確認できます。

ユーザー向けの文字列が英語のままです

言語は、GUI は設定画面、CLI は LANG / LC_MESSAGES / LC_ALL 環境変数 (POSIX の優先順)、API は Accept-Language ヘッダで切り替わります。文字列が未翻訳なら英語にフォールバックします。キーを足す手順は i18n 文字列の追加手順 を参照してください。

ここに無い問題は、wpg doctor --json の出力を添えて issue で報告してください。項目は報告に応じて追加します。

法的注意

責任ある利用

wpg は、ネットワークの検証・試験を目的としたツールです。使用してよいのは、自分が所有するネットワーク、または明示的に試験の許可を得たネットワークだけです。

本ツールはステートレスに任意のフレームを高速に送出でき、ARP / ND スイープ、SYN / MAC フラッド、不正なフレームなど、運用中のネットワークを乱し得るトラフィックを生成できます。許可なくこれらを他者のネットワークや機器に対して行うことは、多くの国・地域で違法です。利用に伴う責任はすべて利用者が負います。

  • 新しいテンプレートは、送信前に必ず予行演習用のバックエンド (--backend null、または -i out.pcapng を指定した pcapfile) で確認してください。
  • 本番ネットワークから隔離したラボで試験してください (CML2 などの仮想環境が有用です。CML2 での注意点)。
  • 管理者設定の [tx] max_rate と allowed_ifaces で、使えるレートとインタフェースを制限できます (設定リファレンス)。

攻撃ツール化を目的とする変更は受け付けません (CONTRIBUTING.ja.md「責任ある利用」)。

ライセンス

本ソフトウェアは MIT または Apache-2.0 のデュアルライセンスで、どちらかを選んで利用できます。コントリビューションは、別段の表明がない限り同じデュアルライセンスで提供されたものとみなします (Developer Certificate of Origin。git commit -s で sign-off してください)。

第三者コンポーネント

依存クレートはそれぞれのライセンスに従います。一覧とライセンスポリシーは cargo deny check (deny.toml) で検査しています。

Web ターミナルの画面には xterm.js と、その fit / web-links / search アドオン (いずれも MIT ライセンス) を同梱しています。著作権表示とライセンス本文は crates/wpg-web/vendor/xterm/LICENSE にあり、wpg の配布物では /xterm/LICENSE として配信されます。

Windows の送信に使う Npcap は本ソフトウェアには同梱されず、利用者が npcap.com から入手し、同社の規約のもとでインストールする必要があります。再配布には別途ライセンスが必要な場合があります。

免責

本ソフトウェアは、MIT / Apache-2.0 ライセンスに定めるとおり「現状のまま」提供され、明示黙示を問わずいかなる保証もありません。