要約

  • Anja Feldmannを含む6人の研究者は、需要を「一つの入口から入り、複数の候補出口へ向かう量」と表し、利用者が送り込んだトラフィックと現在の設定が選んだ経路を分離した。
  • AT&Tの運用網ではNetFlow、転送表、ルーター設定、SNMPを結合した。収集損失、時刻のずれ、入口候補の曖昧さは、隠すのではなく結果の確度として残した。

監視室で一本のリンクが赤くなる。担当者には、そこを通った総バイト数は分かる。だが、その数字からは、どの需要が同じ場所に集まったのかは分からない。OSPFの重みを変えれば負荷が消えるのか、隣のリンクに移るだけなのかも読み取れない。

Anja Feldmann、Albert Greenberg、Carsten Lund、Nick Reingold、Jennifer Rexford、Fred Trueの共同研究は、この「分かっているようで分からない」状態を出発点にした。彼らにとってトラフィック行列は、ルーターから一度に取得できる完成表ではなかった。異なる観測を、時刻とネットワーク状態をそろえて結合した推定物だった。

リンク負荷は、需要があるトポロジーとある経路設定を通った結果である。需要そのものではない。現在の結果を需要と見なせば、設定変更後を試算するモデルの中に、変更前の経路を埋め込んでしまう。

出口を一つに決めすぎない

全送信元と全宛先の組み合わせを並べた行列は巨大になる。しかもISPが見られるのは、自らのバックボーンを通る区間だけだ。通信の多くは複数の管理ドメインをまたぎ、一社が端から端まで観測する前提は成り立たない。

研究チームは、制御できる範囲に合わせて需要を定義した。一つの入口リンク、一定時間のトラフィック量、そして宛先プレフィックスへ到達できる出口リンクの集合である。BGPの通知が変われば出口集合は変わり得る。集合の中からどの出口を使うかは、内部経路とその時点の設定が決める。

この形なら、OSPFの重みを変えても需要を別物として数え直す必要がない。変わるのは、同じ需要が内部リンクへどう配分されるかだ。関連システムのNetScopeは、負荷の高いリンクを特定し、そこを通る需要を見つけ、実網を変更する前に設定案をシミュレーションできた。

粒度も目的に合わせた。トラフィックエンジニアリングで知りたいのは、個々のパケットの瞬間的な揺れより、数十分から数日にわたる負荷の移動である。フローを時間枠に配分し、入口と候補出口集合でまとめることで、会話を一件ずつ再現せずに判断に必要な構造を保った。

観測点を減らすと、推定が増える

理想は全入口リンクでフローを収集することだった。入力インターフェース、宛先、開始・終了時刻、バイト数が得られる。転送表は宛先プレフィックスを出口へ結び、設定ファイルはリンク名、役割、容量、フィルター、OSPFパラメーターを示す。経路モデルは、入口から出口までの通過可能性を検査する。

しかし当時のAT&Tバックボーンでは、すべての顧客アクセスで詳細測定を有効にできなかった。機能を持たない装置があり、処理負荷が問題になる装置もあった。そこで能力の高いルーターが置かれ、多くの事業者間トラフィックが通るピアリングリンクを主な観測点にした。

代償は三つあった。アクセス間の内部トラフィックはピアリングを通らず見えないことがある。外向きフローは出口で観測されるため、元の入口が曖昧になる。複数ルーターを通るトランジットは入口と出口の二度記録され、除外しなければ二重計上になる。

外向きフローでは、送信元アドレスから候補アクセスリンクを列挙した。そのうえで、保存されたトポロジーと経路設定を使い、各候補から入ったトラフィックが実際に観測されたピアリング出口へ到達し得たかを調べる。成立しない候補は外した。

一つだけ残る場合も、複数残る場合も、すべて不整合になる場合もあった。複数残れば量を分け、無理に「真の入口」を作らなかった。したがって、行列の各値には、出口で直接見た事実、経路で一意に絞った推定、複数候補のままの配分、照合失敗という異なる来歴があった。

収集系の欠損は静かに起きる

NetFlowの記録はUDPで収集サーバーへ送られた。混雑時には、収集リンクでエクスポートパケットの最大90%が失われた。受信列はゼロにはならない。もっともらしく上下しながら、本当の規模だけを大きく外す。この種の故障は、停止より発見しにくい。

シーケンス番号から欠落の並びを調べると、おおむね独立した損失として扱える分布だった。チームは10分ごとに損失確率を求め、その時間帯に受け取った量へ補正係数をかけた。失われた個別フローを復元したわけではない。明示した仮定のもとで標本を拡張したのである。

別系統のSNMPカウンターが検算を担った。インターフェースの総バイト数を5分ごとに記録していた。補正後のNetFlowから計算した利用率は、SNMPの曲線に比較的よく追随した。SNMPだけでは需要行列にならないが、再構成した合計がリンク実測と両立するかを確かめられる。

照合には識別子と時刻も必要だった。NetFlowはSNMPの整数インデックス、設定と転送表は名前やIPアドレスを使う。インターフェースカードの時計が経路プロセッサーとずれる問題もあった。四種類の記録が正しくても、別々の時点を無造作に結べば、実在しなかったネットワークを作ってしまう。

ある実験日の異常は、その危険を示した。設定を取得した後にアクセスリンクが更新され、後日の転送表は新しいリンクを指していた。顧客プレフィックスが古い識別子と結べず、未照合が増えた。実際の交換を反映すると他の日に近い水準へ戻った。都合の悪い値を直したのではなく、二つの資料が異なる版を説明していると認めたのである。

「ほぼ全部」と「一意」は違う

1999年11月の4回の実験では、ピアリングで観測したバイトの98%超が、通常は何らかの需要へ集約できた。外向きバイトの99.3%超には少なくとも一つの候補入口が見つかった。それでも当初は、外向きバイトの約35~45%に複数の候補入口があった。

経路モデルによって、その曖昧な量の約4分の1から3分の1は一つに絞れた。同じ顧客が同じ都市内に冗長なアクセスを持つと、内部経路も似るため区別しきれないことが多かった。最終的に約2.5~4%の外向きバイトは、整合する一つ以上の需要へ結び付かなかった。

これは1999年の一ネットワーク、四日分の結果であり、現在の基準値ではない。重要なのは、カバレッジと確実性を分けて報告したことだ。大半のバイトを含む行列でも、かなりの量の入口が一意ではない。少数の残差には、まさに経路が動いた瞬間が集中する可能性もある。

需要の大きさは少数の大口に偏り、時間帯によって変化する一方、上位の一部は翌日も比較的安定していた。大口へ測定を集中する合理性はある。しかし同じ大口が共通リンクに集まれば、一つの設定ミスや利用変化が広い範囲へ波及する。

行列は「いつまで正しいか」を含む

Feldmannの研究がトラフィック分析、モデル化、ルーティングをまたぐのは、この仕事では三者が相互の欠点を補ったからだ。経路状態のない測定は結果しか語れない。需要のない経路モデルは架空のトラフィックを運ぶ。時刻のない設定は、すでに消えた状態を精密に説明する。

この行列は完全な写真ではなかった。取得時刻、補正、曖昧さ、未照合を伴う条件付きの再構成だった。だからこそ、一本のカウンターより強い。どこから負荷が来たか、変更後にどこへ行き得るか、どこまでが観測でどこからが推定かを同時に示せる。

現在の運用にも残る要求は単純だ。生のカウンターだけでなく、それを解釈した設定と経路の版、収集損失、インターフェース対応、残った候補、独立検算を保存する。赤いリンクは現在地を示す。意思決定に使える証拠は、そこへ至る道筋と、有効期限まで示さなければならない。

情報源