こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
パケット可視化ツール 「Blinking Packet」
概要
LEDテープを用いて、イーサネットなどに流れるパケットを可視化するツール、「Blinking Packet」を製作した。マシン(ラズベリーパイ)にBlinking Packetをインストールし、指定したネットワークインターフェイスから送受信されるパケットデータを、あたかもLEDテープ上に流れるように演出することによって、そのパケットを可視化することができる。
先行製品
既存のプロダクトとして、イルミパケット ( URL: https://github.com/souring001/illumi-packet ) が存在する。この製品でも同様にLEDテープを用いてパケットを可視化していおり、LEDの色はパケットの最高層のプロトコルのもとで分けられている。そのため、例えばHTTPの下層にTCPやIP、Ethernetがある場合でも、TCPやIPの部分は可視化されない。そこで、本製品では、送受信されるパケットのプロトコルごとに色をつけて可視化することで、パケットを階層的に可視化できるようにした。
また、Blinking Packetでは、Androidアプリから特定のパケットを送信させるととができるため、能動的な通信によるパケット観測も可能にしている。
システム概要
本システムは大きく分けて2つの機構から構成される。
LED点灯部分
1つ目は、インターフェイスに送受信されるパケットを読み取り、そのパケットのプロトコルに従ってLEDテープを点灯させる部分である。点灯する色は、以下の表の通りである。
プロトコル | 色 | インターネット・プロトコル・スイート |
MAC(Ethernet) | 茶 | リンク層 |
ARP | 桃 | リンク層 |
IPv4/IPv6 | 水 | インターネット層 |
ICMP/ICMPv6 | 白 | インターネット層 |
TCP | 緑 | トランスポート層 |
UDP | 赤 | トランスポート層 |
DNS | 橙 | アプリケーション層 |
HTTP | 青 | アプリケーション層 |
その他 | 黄 | NA |
パケットが実際に送信されている様子を以下に表す。画像は1枚目がTCPを、2枚目がARPを可視化したものである。
パケットが送信されたのを観測すると、送信したマシン側からパケットを模した光がLEDテープにそって流れる。同様に、受診されると、受信したマシンに向かって光が流れる。なお、光の流れる速度と比べて、実際にパケットが送信される速度は一瞬であり、可視部分はあくまでパケットが送受信をされたことを表すだけであることに注意してほしい。
パケット送信部分
2つ目は、指定されたパケットを送信する機構である。送信機構では、Androidアプリケーションから Ping(ICMP)、HTTPリクエスト(TCP-HTTP)、名前解決(UDP-DNS)を送信する要求をマシンにすることが可能になっている。これにより、能動的にパケットを送信できるため、特定パケットの観測がよりしやすくなる。
総括
本製品「Blinking Packet」では、特定ネットワークインターフェイスに流れるパケットをもとに、LEDテープを光らせ、パケットを可視化するツールであった。既存製品と異なり、パケットの階層構造全体を可視化したり、能動的にパケットを送信させる機構をもたせたりと、独自の部分も多くある。
今後の展望として、パケットフィルターの実装や、可視化/送信可能なプロトコルを増やすなどのことが考えられる。
コメント