## Memo
## Memo with LLM
### 論文情報
- **論文タイトル**: MRTG: The Multi Router Traffic Grapher
- **著者**: Tobias Oetiker(スイス連邦工科大学チューリッヒ校 電気工学部門)
- **カンファレンス**: 第12回システム管理国際会議(LISA '98)
- **開催地**: ボストン、マサチューセッツ州、米国
- **開催日**: 1998年12月6-11日
- **発表年**: 1998年
### 論文概要
本論文は、ネットワークリンクのトラフィック負荷を監視・測定し、HTMLページ上に可視化するフリーソフトウェアツール「MRTG(Multi Router Traffic Grapher)」の開発履歴と動作原理を詳述するものである。MRTGの進化過程(v1.0からv2.0を経てv3.0へ)、およびMRTG-3に組み込まれる新しいデータベース機構「Round Robin Database Tool(RRD Tool)」の設計と実装について解説している。
### 詳細解説
#### 問題設定
1994年の夏、Leicester大学のDe Montfort University(英国)では、1000台以上のネットワーク接続コンピュータに対して、わずか64 kbit/sの単一インターネットリンクのみで対応していた。より高速なリンク取得には1年以上の待機が必要であったため、キャンパスのユーザーに対して、現在のリンク状況に関する詳細な情報をリアルタイムで提供することが急務となった。
本論文が対象とする主な問題は以下の通り:
**MRTGの初期版(v1.0)における課題**:
- スケーラビリティの限界:約10リンク程度の監視では良好に動作するが、大規模サイトでは性能問題が発生
- ポータビリティの問題:SNMP取得に外部ユーティリティ(CMU SNMPパッケージのsnmpget)に依存し、プラットフォーム間でのコンパイルが困難
- パフォーマンス制限:単一ワークステーションから約20ルータポート程度しか監視できない
**MRTG-2における課題**:
- ASCIIテキストベースのログファイル処理により、監視対象が500ポート程度に増えるとボトルネックが顕在化
- グラフ生成と同期したデータログ処理により、全体的なパフォーマンスが制限される
#### 提案手法
**MRTG-2の革新**:
1. **rateupユーティリティの導入**: Dave Randが開発した小規模なCプログラムrateupにより、CPU集約的なタスク(ログファイルの再書き込みとグラフ生成)をPerlから実装言語C言語へ移行。これによりパフォーマンスを大幅改善。
2. **GDライブラリの採用**: Thomas BoutellのGD Cライブラリを利用することで、pnmtogifと比較して大幅に高速なGIF生成を実現。
3. **SNMP実装の変更**: Simon LeinenがPureで実装したPerl SNMP モジュールに移行し、プラットフォーム依存性を排除。
4. **logfile処理の最適化**: 時系列データを時間とともに解像度を落とす「lossy logfile」方式を採用。2年以上前のデータは破棄し、ログファイルのサイズが無限に増加しないよう設計。このアプローチは、ネットワーク負荷の詳細な情報への関心が時間経過とともに減少するという基本仮定に基づいている。
**Round Robin Database Tool(RRD Tool)の革新的設計**:
RRD Toolは、MRTG-3の中核となる完全に新設計されたデータ保存機構である。
##### データベース設計の主要特徴:
1. **Round Robin Archive(RRA)構造**: データを事前割り当てされた環状ストレージ領域に保存。複数のRRAを単一RRDに含められ、各RRAは異なる時間解像度と集約方式を持つ。例えば、1つのRRAは5分間隔の基本解像度で数日分のデータを保持し、別のRRAは日次平均を5年分保持することが可能。
2. **効率的なデータ保存**:
- データを倍精度浮動小数点数(double)で保存し、整数オーバーフロー問題を排除
- 未知(unknown)データ値を記録可能にし、ゼロ値と無効データを区別
- ネイティブバイナリ形式での保存により、変換コストを排除
- ヘッダのクッキーでアーキテクチャ互換性を検証
3. **リサンプリング処理**: データソースからの値が不規則な間隔で到着する場合、基本時間解像度に対する再サンプリングを実施。図5に示すように、カウンタ型データソースの場合、不規則に到着した値を、曲線下の面積を保持したまま、固定間隔のデータポイントに変換。
4. **ビルトイン分析機能**:
- 任意のデータソースから最大値、最小値、平均値を計算
- RPNベースの数式により複数データソース間の計算式を定義可能
- グラフレベルでの動的集約と可視化
##### パフォーマンス特性:
Round Robin Databaseの更新処理は、以下の式でモデル化される:
$T_{update} \propto |RRA| + C$
ここで、$|RRA|$はRound Robin Archiveの数、$Cは$ヘッダ読み込みと時間ソートのための定数。
データの保存レートは、ディスクキャッシュと物理I/O条件が良好な場合、約1000データ値/秒のオーダーを達成。Pentium 120(Linux)とSparcUltra Enterprise 2(Solaris 200MHz)との間では、大きなパフォーマンス差は観測されていない。
##### グラフ生成エンジン:
1. **柔軟な可視化**: 任意のサイズ、時間範囲、複数データソース間でのグラフ生成
2. **自動デフォルト値決定**: 軸ラベルとスケーリングの自動最適化
3. **設定の高い自由度**: ほぼすべての視覚的要素がオーバーライド可能
#### 新規性
**従来手法との比較**:
MRTGが登場する以前、NeTraMet、Scotty、CMU SNMPなど、複数の無料ツールがネットワークリンク状態の取得に利用可能であった。しかし、MRTG固有の革新は以下の点にある:
1. **長期トレンド分析と直感的なWeb表現の統合**: 単なるデータ取得ツールではなく、「長期的なトレンド分析」と「Web上での友好的な可視化」を統合した初の統合ソリューション
2. **段階的な特性改善**:
- v1.0からv2.0への移行で、スケーラビリティ(20ポート→500ポート)とポータビリティを同時に達成
- v2.0からv3.0への移行で、データベース層を完全に分離し、Round Robin Databaseという汎用的な時系列データ処理基盤を創出
3. **時系列データの圧縮戦略**: 従来のASCII方式の時系列ログから、時間とともに解像度を落とす「lossy logfile」方式への転換。ユーザーの情報需要が時間とともに減少するという仮定に基づいた、実用的なトレード・オフの実現
4. **ユーザーベース拡大の測定手法**: HTTPのReferrer Headerを活用した革新的なユーザーベース推定方法を提案。1998年8月の分析では、17,500異なるホスト、11,400個の第二レベルドメイン、120個のトップレベルドメインからのアクセスを記録
#### 実験設定
本論文は実装論文としての性質が強く、従来的な実験設定と評価指標の記述は限定的である。ただし、以下の実環境での運用事例が報告されている:
**EUnet Austriaでの運用事例(Otmar Lendl実装)**:
- **監視対象**: 1200のネットワークインタフェース、サーバー、ダイヤルイン回線から約6000変数
- **監視周期**: 5分間隔
- **ハードウェア**: 低スペック SPARCstation-5/170
- **実行負荷**: システム平均負荷 0.2
- **実装構成**:
- Perl 5ベースのデータ取得ソフトウェア
- EventServer Perlモジュールを使用したスケジューラー
- UDP経由の通信を用いた複数ワーカープロセス
- mod_perl/Apacheベースの可視化レイヤー
- すべてのイメージおよびHTMLは動的生成
**グラフ生成パフォーマンス**:
- Pentium 120上でのグラフ生成時間:約0.3秒
- このパフォーマンスにより、ユーザーリクエスト時のオンデマンドグラフ生成が実用的になった
#### 実験結果
本論文の実験報告は限定的であるが、以下の重要な定量的結果が記載されている:
1. **ユーザーベース推定結果(1998年8月分析)**:
- 総ホスト数(ユニーク):約17,500
- 第二レベルドメイン数:約11,400
- トップレベルドメイン数:120
- 注記:HTMLバックリンクを削除したインストール、および一度もアクセスされていないインストールは除外されているため、この数値は下限を示す
2. **ホームページアクセス統計**:
- 日次ヒット数:約700
- 日次ダウンロード数:約200
- 注記:これらの数値は高く見えるが、実際のMRTG採用サイト数の直接的な指標ではない
3. **パフォーマンス制限**:
- MRTG-2の監視限界:5分間隔で約500-600ルータポート
- これはASCIIテキストログの完全な再書き込みと再集約プロセスに起因
4. **RRD Toolのパフォーマンス評価**:
- データ保存レート:最大約1000データ値/秒(ディスクキャッシュ良好時)
- NFS経由またはディスクキャッシュが小さい場合は大幅に低下
- グラフ生成:Pentium 120で約0.3秒