Lightning Networkプロトコルのモニタ

こんにちは。
今回はLightning NetworkプロトコルをWireSharkでモニタするツールの紹介をします。

lightning-dissector
https://github.com/nayutaco/lightning-dissector

image

Lightning Network BOLTのプロトコル開発を行っていると、デバッグ情報としてログをいろいろと出力させることが多くなります。
そうすると、実際にネットワークでやりとりしているプロトコルデータが埋もれてしまって見づらくなったり、送信と受信が交差するようなタイミングではログの情報が順番に出力されているかどうか確信が持てないなど、不都合な場合が出てきます。

そういうとき、第3者の目線で確認したくなるものです。
lightning-dissectorはパケットキャプチャリングツールであるWireSharkのプラグインで、Lightning Networkのプロトコルを解析します。


インストールなどは、GitHubのREADMEを参照してください。

デバッグ用のツールですので、実行するノードや環境の設定が必要です。
例えばptarmiganの場合、こちらを参照しながら設定するとよいでしょう。

  • ビルド時に、ENABLE_DEVELOPER_MODEを1にする
  • ptarmdを実行する前に、環境変数LIGHTNINGKEYLOGFILEにログファイルの場所を設定する
  • WireSharkの設定で、ログファイルの場所を設定する(Edit > Preferences > Protocols > LIGHTNING)

image

ポートは9735番を見に行くようになっています。
別のポート番号にしている場合は、「Analyze > Decode as…」でポート番号を読み替えるように設定しましょう。

ノード接続前にWireSharkを起動し、それから相手ノードと接続するとよいでしょう。
Flow Graphを使うと、目視でメッセージの流れが分かって便利なこともあります。

image

現在のところ、ptarmiganとeclairは本体にマージされていて、c-lightningは有志の方が作られたようです(まだ不十分の模様)。
自作のノードに対応したい場合は、こちらを参照してkey logファイルを出力すればよいでしょう。


以上、Lightning Networkのプロトコル開発用のツール紹介でした。