要約

  • RFC 9956のNQBは浅いバッファを使うベストエフォートで、Defaultと同等の転送優先度を想定する。DSCP 45はアプリの身元、優先権、エンドツーエンドの遅延保証ではない。
  • 保護動作はローカルな評価の結果である。分類、実際のキュー被害、パケットを同じ記録に束ねる方法、ポリシー版、再分類・再マーキング・破棄の選択を分けて扱う必要がある。
  • ペイロードや恒久的な平文フロー識別子を保存せず、代表的な判断だけを再現する期限付きの「キュー保護判断トレース」が要る。これはDaniel Kadeの提案であり、IETFやCableLabsの要件ではない。

NQBは優先席ではない

新しいコードポイントは、しばしば新しいサービス階級として理解される。RFC 9956が定義するNon-Queue-Building Per-Hop Behaviorは、その連想を意図的に外している。送信量が小さい、または滑らかで、自らは実質的な待ち行列を作らないマイクロフローを、容量を探りながら深いキューを必要とするトラフィックから分離する仕組みである。

どちらもベストエフォートだ。NQBとDefaultには同等の転送優先度が推奨され、一般的な帯域や遅延値は保証されない。低遅延は、45という数字への褒賞ではない。送信側が待ち行列を作らないことで生まれる。

したがってDSCP 45が語れる範囲は小さい。アプリケーションを認証せず、善意を証明せず、次のドメインが同じ扱いをすることも保証しない。途中でDSCPが消される場合も、ローカル用途に読み替えられる場合もある。Wi-Fi、PON、モバイル回線、DOCSISの送信機会が上流でパケットをまとめれば、送信時には滑らかだった流れが下流ではバーストに見える。

題名の「特権」は法的権利を意味しない。サービス説明がコードポイント以上の約束を作ってしまう危険を示す言葉だ。送信側が最初に言えるのは、「この流れはNQBの送信条件に合うはずだ」という検証可能な申告だけである。

実行されるのは別のポリシーである

RFC 9956は、NQBを実装するノードにトラフィック保護機能を推奨する。NQBキューで実際に待ちが形成され、他の適合フローを害する振る舞いが見つかれば、Defaultへの再分類や破棄を選べる。破棄は影響が大きいため、再分類より高いしきい値が推奨される。

ここで標準は単一アルゴリズムを指定しない。現場に適した実装を許す一方、結果だけから理由を推測できなくする。パケットはまずDSCP、ECN、ローカル条件で分類される。ボトルネックが現実のキュー状態を測る。機構が複数パケットを一つの行動履歴にまとめる。最後にポリシーがしきい値と動作を決める。

RFC 9957のQProtは、この連鎖を具体的に示す。機構は期限のあるフロー状態を持ち、キュー形成への寄与をスコア化する。ポリシーは共有キューの実害とそのスコアを組み合わせる。記述されたDOCSISの動作では、条件に当たったパケットをLow-LatencyキューからClassicキューへ移す。

ただしRFC 9957は独立ストリームの情報提供文書で、IETF標準ではない。QProtの規範的な仕様はCableLabsのDOCSIS文書にある。例示パラメータや擬似コードを、全装置に固定された契約として扱ってはいけない。監査に必要なのは、実際の規範版、ファームウェア、設定とポリシーである。

五つ組は責任主体ではない

QProtは通常、レイヤー4の五つ組でフローをまとめる。暗号化やカプセル化によって見える項目が減れば、四つ組、三つ組、IPsecのSPIなどが使われる。RFC 9957自身が、この単位は実用上の選択であり、アプリケーションごとの責任配分に科学的根拠があるわけではないと認めている。

一つのVPN外側フローには、映像、制御、データ転送が同居できる。逆に一つのアプリが複数のマイクロフローを開くこともある。観測点によって見えるヘッダーが異なれば、同じ通信から別の行動記録が作られる。識別キーを人やアプリの意図と読み替えることはできない。

状態容量にも限界がある。専用バケットを確保できないフローは共有のデフォルトバケットに入る。資源枯渇が起きれば、待ち行列を作らない無害なフローまで再分類される確率が上がる。QProtはその不確実性を直ちに全破棄へ変換せず、Classicへの移動という比較的軽い劣化に抑えるが、順序の乱れや遅延は残る。

したがって「このフローが違反した」という記録は粗すぎる。何をフローと見なし、状態が専用だったか共有だったか、装置が資源圧力下にあったかまで残して初めて判断を説明できる。

外から見える根拠と内側だけの状態

QProtのスコアはNative AQMのマーキング確率を使う。その確率はECNマーキングにも使われるため、ECNに対応して反応する送信側には、判断根拠の一部がネットワークから返る。RFC 9957が透明性を重視する理由は明確だ。根拠が見えなければ、端末は客観的に適合する方法を学べない。

それでも送信側には、バケット競合、ローカルなしきい値、ポリシー更新、トンネル処理は見えない。RFC 9956が要求するパケット数やドロップ数の統計は運用判断に役立つが、特定の時点で特定の集合がなぜ影響を受けたかまでは示さない。

必要なのは全面的なパケット保存ではない。通信内容を残さず、短命な評価状態だけを期限付きで結ぶ設計である。観測可能性が監視の拡大に化けないことも、NQBの運用品質に含まれる。

判断だけを保存するトレース

トレースは異常率、合成試験、またはサンプリングで起動する。観測時間、方向、論理ボトルネック、ビルド、NQB/Defaultスケジューラ、バッファ、ポリシー版としきい値を固定し、次を結ぶ。

  1. 観測したDSCPとECN、ローカル分類条件、トンネルモデル;
  2. ローテーション鍵で仮名化したグループ識別と、五つ組・縮約組・SPI・共有バケットの別;
  3. キュー遅延、AQM確率、行動スコア、エージング設定、状態容量の圧力;
  4. 実際に成立した条件と、キューの実害が存在したか;
  5. 通過、パケット再分類、フロー単位動作、再マーキング、破棄の別とヒステリシス;
  6. 損失、遅延変動、順序逆転の想定影響;
  7. 適合合成フローへの誤動作、共有バケット利用、枯渇、動作率;
  8. 保持期間、アクセス制御、仮名鍵の失効、再試験条件、変更責任者とロールバック権限。

ペイロードは保存しない。外部に示すのはビルドやポリシー別の集計、合成試験、共有状態圧力、継続・調整・停止の判断で足りる。詳細トレースは短期間、限定アクセス、自動消去を原則にする。

正常と異常の間を試す

滑らかな低速流と露骨な大容量流だけでは、誤動作を見つけられない。応答型の輻輳制御、容量探索、短いバースト、上流リンクが作るバーストを分けて用意する。同じ集合をリンク速度、バッファ、しきい値、ビルドごとに繰り返す。

さらに完全な五つ組、暗号化トンネル、縮約識別、状態枯渇を含める。パケット単位、ヒステリシス付き、フロー単位の動作は、件数だけでなく順序、損失、遅延で比較する。低速リンクでNQBを無効にする場合は、DSCPを不必要に消さずDefaultとして運ぶことも確認する。

合格結果は「NQBは安全」という証明ではない。「このビルド、このキュー、このポリシーでは、これらの入力からこの動作が再現した」という局所的な記録である。

限界

ここで扱った資料は、現在の導入率、誤マーキング率、誤分類率、利用者被害を測定していない。特定の事業者、製品、アクセス方式、アプリがQProtを実装しているとも、誤っているとも述べない。

判断トレースは意図を証明せず、別のホップを監査せず、不適切なアルゴリズムを公正に変えない。役割は限定的だ。状態が消える前に、このノードが何を見て、どのポリシーが何をしたかを残す。それだけで、数値45に過大な約束を背負わせずに済む。

出典