何かがマーキングされ、キューが設定され、そして誰かが「この設計は実際にどの品質を保証するのか」と尋ねる。正直な答えは、あなたが境界で出会う契約の二つの半分を記述したということだ。プロバイダが受け入れるクラスと、それが適用する扱いを名指しできるまでは、ローカル設定は約束ではなく意図である。どちらの半分も重要で、一方から他方を推測することはできない。

local match → queue and marking → provider classifier
  → provider treatment → destination

正しいマーキングが静かに死ぬ場所

まず、ワークロードごとに、ローカルの一致条件、トンネル内で起こるマーキング、プロバイダが受け入れる値、その値が選ぶサービスクラスを書き出す。四つの列であり、障害はたいてい二列目と三列目の間に住む。

内側から外側へのマーキング挙動が古典的な問題だ。暗号化またはトンネル化された経路のパケットは、あなたの分類子が見える内側ヘッダと、プロバイダの機器が見える外側ヘッダを持ち、一方をもう一方へコピーするのは自動的な性質ではなく設定の判断である。内側ヘッダだけをマーキングすれば、プロバイダは外側ヘッダを、通常はデフォルトとして分類する。だからこそ、正しくマーキングされたフローが、あなた側に一行の設定ミスもなく誤ったクラスに届くことがある。

ローカルで名前を付けたクラスも、実際のパケットで一致条件が発火しないために空のままになりうる。ポートは移り、アプリケーションは複数のフローを使い、ベンダーが二つ前のリリースで使わなくなった既知のポートへの一致は、カウンタがゼロのキューと、稼働中の設定では完璧に見えるポリシーを生む。

マーキングをどこで信頼するかを明示的に決める。トンネルを共有するすべてを昇格させれば、通話と一緒にバルク転送も昇格する。検証なしにあなたのマーキングを受け入れるプロバイダは、自分を傷つける方法を差し出している。契約がゲートウェイに受け渡し時点での再マーキングを許すなら、それを書面に残すべきだ。二つのチームの前提が食い違うのは、まさにその点だからだ。

スケジューラが実際に分けているもの

ローカルポリシーには独自の意味論があり、最も誤解を生むのは「remaining」という語だ。IOS XEのスケジューリングガイドが説明するプラットフォームでは、bandwidth remaining percent は余剰の重みを設定するのであって、各クラスが前のクラスの残りから取り分を取る順序の一段ではない。割り当てられていないパーセントは、ファイル内の最後のクラスに予約されるのではなく、適格な未設定のキューに分散される。

この区別が重要なのは、逐次的なメンタルモデルがカウンタと決して一致しない予測を生むからだ。エンジニアは結果を変えようとクラスを並べ替え、違いが見えず、プラットフォームが壊れていると結論する。しかし設定は彼らが想定した意味を一度も持っていなかった。

親シェーパはもう一つのよくある驚きだ。制御されたキューを使えるサービスレートまでシェーピングするのは意図的なことが多い。それは 輻輳点をあなたが管理する装置へ移す からであり、管理していない上流のキューへ移すのではない。シェーピングが遅延を加えるからといってシェーパを外すと、損失を消すのではなく移すことになりうる。オーバーヘッド会計やプロバイダのポリサーは、実効レートをインターフェースが示すより低くしうる。

カウンタがどちらの半分の失敗かを語る

影響を受けている方向で四つの数値を比較する。提示された量、クラスが一致した量、キューに入ったか捨てられた量、そしてサービスが実際に届けた量だ。ワークロードの記述とポリシーの版を観測のそばに置くこと。それらなしのカウンタのスクリーンショットは再現できない。

枝はそれぞれ別の所有者を持つ別の問題だ。何にも一致しないローカルクラスは、あなた側の分類のバグである。一致し、キューに入り、捨てているのにプロバイダがクリーンな配送を報告しているなら、あなた自身のスケジューラかシェーパを指す。ローカルでは正しく見えるのに受け渡しの先で損失が現れるなら、キャリアのマッピングと契約で測定された境界を指す。三つのどれも他を編集して直るものではない。だから数値はまとめて集める必要がある。

RFC 2475 は分類とコンディショニングを管理ドメイン内で行う作業として枠づけており、まさにそのためにマーキングはキューを端から端まで予約できない。IOS XEのスケジューリングガイド は上記の余剰重みの挙動の参照であり、計算したレートをモデル間で移す前に、そのプラットフォーム比較を読む価値がある。

契約を一か所に書く

ローカルの一致、信頼の境界、プロバイダのクラス、測定されたサービスレベルを、双方が署名する一つの文書に置く。そうすればパーセントの変更には文脈があり、品質の苦情には所有者がいる。

ローカルのパーセントを変えても別のキューの保証は修復できない。プロバイダが守らないマッピングを、どんなマーキング方式も生き延びられない。二つの半分を比較し、境界を名指しし、それから初めて数値を引用せよ。

関連記事