パケットレコーダー「Sonarman」をRaspberryPi 3に移植してみました
「Sonarman」とは?
「機械学習による警告機能」と「遠隔での高い操作性」が特徴のパケットキャプチャ装置です。 一定期間のパケットを保存しておくことにより、ネットワークのトラブルシューティングを強力に支援します。
システム障害の原因が分からないなどの理由で「再現待ち」ステータスで障害票が積み残ることがありますが、そんな負の遺産を一掃するために開発された製品です。
システム管理者の切実な願い
圧倒的感謝
小学館コロコロコミックス『ドラえもん のび太のドラビアンナイト』より引用
「Sonarman」について詳しくはこちらをご参照ください。
今回の挑戦
x64アーキテクチャからARMへの移植作業として、Cで書いたDPIプログラムのクロスコンパイルと細かいバージョンが異なるパッケージ間の調整作業がメインでした。少々戸惑うこともありましたが、現時点で確認できている範囲では概ね問題なく動作しています。
以下に作業を通して感じたこと、考えたことなどを、書き留めておこうと思います。
メリット
HWの調達コストが劇的に下がった
広く流通しているシングルボードコンピュータであるRaspberryPiの採用でHWの入手性が大きく向上しました。 また、原価も大幅に下げられたので、拠点等、複数の計測箇所に安価に設置することが可能になります。 営業的な視点で言うと、原価が広く知られているというのは良いことなのか?という気は非常にしていますが。。
コアが増えた
既存の2コア->4コアになりました。 ただし、メニーコアのメリットを十分享受できる構造のアプリケーションではないため、コア増による速度向上はあまりありません。 動作の安定性には寄与していると思います。
発熱が減った
さすがの低消費電力。発熱は劇的に少なくなりました。これは大きなメリットです。
GPIOによる応用の余地が広がった
不正なパケットによる緊急事態に音を鳴らしたりLEDを光らせるなどのアクションを取らせることができます。 たとえば「IPアドレスの重複を検知して光る箱」を作ることができます。 何の意味があるかはさておき、面白い使い方を考えてみようと思います。
小型化
大分小さくなり、非常に満足しています。 現行機種の約4分1のサイズです。
省スペース電源
USB電源になりますので、省スペースになりました。スイッチやサーバから給電するようなことも可能になるかもしれません。
その他
現行機種の「Sonarman」はシリアルで設定するのですが、シリアルケーブルを持っていないというお客さんも普通にいらっしゃいますので、「HDMIを挿せば普通のPC」というのは、かなりユーザーフレンドリーです。(RaspberryPiもシリアル接続できます)
デメリット
性能
あまり速くないです。50Mバイトのパケットキャプチャを読んで、機械学習など諸々の処理を行うのに300秒ほどかかるケースがちらほら。キャプチャの内容によって処理速度が異なってくるのであまり単純な比較はできませんが速くはないです。 したがって警告などのリアルタイム性はそれなりです。 実運用での経験から言えば上記の制約はそれほど重要ではないですが。
Ethernetポート数
3ポートから1ポートに減りました。 唯一のRJ45ポートはキャプチャ用にせざるをえませんので、操作用のインタフェースはWiFiになります。 どうしても必要なときにはUSBで増設することも可能です。 実際の設置で発生していた、UTPケーブルを挿し間違えてキャプチャが取れなかったという悲しい事故は減るはずです。
容量
キャプチャを格納するDISKの容量は増設に頼ることになります。 128GのUSB小型フラッシュメモリをマウントして使います。 アマゾンで3000円くらいなので非常に安価ですが、 USBが2.0ということもあり、速度としてはそれなりかと。
感想
全体として、かなり満足感があります。 正直、もうこれでいいじゃん的な何かです。 価格も含めて良く知られているプラットフォームであるということもあり、 購入/評価の敷居が下がることを期待しています。 開発用途には非常に便利ではないかと思います。
IoTというキーワードは、今まであまり意識していなかったのですが、 安価なレコーダーを潤沢に設置することで、「数で押す」という戦い方が出来るような気がしています。 結果として障害に関するトレーサビリティが劇的に向上するため、 システム管理者にとっては嬉しいことではないかと思います。
「ピンチに頼れる飛び道具」として小型化と大幅なコスト削減を実現した、新型「Sonarman」にご期待ください!