パケットキャプチャファイルシステム
パケットキャプチャシステムの興味深く不明確な問題のひとつはすべてのデータを保管するファイルシステムにあるエンジニアリングです。標準のEXT4 / XFS / JFS /の中から好きなファイルシステムを選べば良いと思うかもしれませんが、パケットロスをひき起こす書き込みパフォーマンスが持続する保証はないため、これは大変重大な赤信号です。
シーケンシャル書き込みパフォーマンス
標準ファイルシステムを使用する問題はディスク上のブロックの物理的な場所をコントロールすることができない点です。またlinuxファイルシステムはディスク上の物理セクターにリニアブロックをマッピングします。これはかびのように集まって成長する大規模なフラグメンテーションの原因になり、ほとんどの場合は不可能に近い定期的なデフラグが必要になります。最終的にフラグメンテーションは非常に大きくなり、ディスク上に書き込んだデータはドライブ上でバラバラになり、買ったばかりのファイルシステムでベンチマークしたパフォーマンスは失われます。。。よくあることですね、本当に最悪です。
ブロックがディスク上で実際どのようにマッピングされるかのアイデアを得るために、日本人の研究グループがすべての主張名Linuxファイルシステムのアクセスパターンを研究しました。この調査はシーケンシャル書き込みパフォーマンスの持続性についてではないですが、フレッシュインストールしたUbuntu上でファイルシステムの物理的アクセスパターンを示します。
すべてのパターンはこちら: https://www.kernel.org/doc/ols/2011/ols2011-suzaki.pdf
上図のアクセスパターンはEXT3ファイルシステムです。そこら中に散らばっています。
上図のアクセスパターンはEXT4ファイルシステムです。分布がEXT3に比べて大きく改善されていることがはっきりと分かります。
JFSファイルシステムてはある意味バラバラに爆弾のように飛散した分布です。
そしてチャンピオンのXFSファイルシステム。これはすべての標準ファイルシステムの中で最高の分布スキーマです。もし自作のパケットキャプチャシステムを作るならXFSが一番の選択肢です。
そして最後に上図のパターンがReiserファイルシステムです。ディスク検索数を最大化しパフォーマンスを最小化しています!強いて言うならば小さなファイルの容量効率を最大にするよう設計されています。
シーケンシャル書き込みパフォーマンス
もし上記の標準ファイルシステムの使用の危険性でも怖くない場合は、ノーシーケンシャル書き込みアクセスの継続書き込みスループットに驚くはずです。(研究開発作業中100Gbpsパケットキャプチャシステムのデータより)
以下のグラフは単一の1TBファイルを書き込んで生のハードウェアパフォーマンスをテストしています。しかしフラグメントファイルシステムををレプリカするには1MBから1TBの書き込みデータ(X軸)ごとに書き込みヘッドが検索(ジャンプ)する必要があります。Y軸はGbps単位での最終1TB書き込みデータです。これはシーケンシャルディスクアクセスを維持することが高いパフォーマンスを維持するのに非常に重要であることを示します。
上図の一番左端で、非常に多くフラグメントされたシステムでは10Gbpsの持続スループットも出ないことが分かります。フラグメントが少なくなっていくにつれて持続スループットが70Gbpsを少し下回るぐらいで維持されることが分かります。そして0%フラグメンテーションの場合は1TBの持続スループットが90Gbpsの少し下に到達します。
パケットキャプチャ用のファイルシステム
パケットキャプチャのためには、幸運にもとてもシンプルな要件のみ必要です。データはシンプルなファーストイン・ファーストアウトの振り分けシステムですべてのディスク上をいつもシーケンシャルに書き込まれます。複雑な階層構造なしで0%のフラグメンテーションで100%シーケンシャル書き込みアクセスとなります。
上図はキャプチャがディスク上にどのように割り当てられるかを示します。100%保証のシーケンシャルアクセスパターンでとてもシンプルなリニアレイアウトです。興味深い点はストレージが最終的にいっぱいになった時です。(下図参照)
ストレージシステムがいっぱいになると弊社ファイルシステムは上図のように単純に古いパケットデータを上書きます。新しいキャプチャデータ(青い矢印)がシステム上の古いデータ(紫の矢印)を上書きます。最終的に「CaptureA」データが無くなりシステムから完全に削除されます。
要約
パケットキャプチャストレージパフォーマンスは完全に以下に基づく:
a) ハードウェアシーケンシャル書き込みパフォーマンス
b)アプリケーションのディスクアクセスパターン
弊社の100Gbe、40Gbe、20Gbe、10Gbeパケットキャプチャシステムはすべての状況に置いてシーケンシャルアクセスを保証するカスタマイズされたファイルシステムを利用してハードウェアに直接書き込みます。高いハードウェアパフォーマンスと合わせることで、フラグメンテーション無しで、フル10Gbpsから100Gbpsラインレートのパケットキャプチャを可能にします。
楽しいパケットキャプチャを!