概要

  • Nichols は、DiffServ、Cisco アーキテクチャ、Packet Design、Pollere を通じた独立コンサルティングに至るキャリアを経て、Van Jacobson とともに Controlled Delay Active Queue Management(CoDel)を共同設計した。
  • CoDel はデキュー時にパケットの滞在時間を測定し、直近の最小値が目標値を一定期間上回った場合に反応することで、一時的なバーストと持続的なバックログを区別する。
  • この設計によりリンクごとの調整は減ったが、目標値、間隔、タイムスタンプ演算、キュー配置、サービスレート変動が依然として前提条件を定義している。
  • FQ-CoDel、Linux への統合、その後のキューシステムはより広範な著者・メンテナコミュニティに属する。CoDel の永続的な貢献は、占有数だけでなく持続的な時間を制御するという決断にある。

CoDel はキューが加える時間を測定するようにした

CoDel はパケットがキューを離れるときに決定的な測定を行う。パケットのデキュー時刻をエンキュー時刻と比較し、キュー自体が加えた滞在遅延を算出する。Kathleen Nichols と Van Jacobson は、同じ数のパケットを含むキューが、あるリンクでは無害でも別のリンクでは耐えられないものになり得るため、その局所的な事実に基づいてコントローラを設計した。

運用上の矛盾はよく知られていた。アクセス接続が公称スループットを実現していても、音声、ゲーム、対話型リクエストが滞留したバックログの背後で停止することがある。バッファは短いバーストを吸収して排出する場合には有用だが、出ていくパケットがすべて補充されると、待ち時間が往復時間の恒久的な一部となり、容量を増やさないまま有害になる。

CoDel は一定間隔にわたる最小滞在時間を追跡する。最も良好に観測されたパケットでさえ目標値を超えて待ち続ける場合、コントローラはバックログが持続的であるとみなし、制御則に従って輻輳シグナリングを強める。この設計は、一般的なインターネットリンクで通用する通常のデフォルト値を求め、すべての運用者がレート、バッファサイズ、トラフィック構成からキューのしきい値を導出する必要をなくそうとした。

中心となる問いは、時間ベースのコントローラが低遅延を運用上のデフォルトにできるかどうかである。CoDel は自身が動作するキューのみを制御する。隠れたハードウェアバッファ、可変サービスレート、応答しない送信者、誤った配置は依然として経路を支配し得る。Nichols の貢献は、キューが何を測定し、運用者が何を検証すべきかを変えたこととして理解するのが最善である。小さなパケット数ではなく、負荷時に待ち時間が持続的に高いままかどうかである。

DiffServ と製品業務は分類をキュー制御から分離した

Kathleen M. Nichols の公開された経歴には、研究所、テクノロジー企業、インターネット標準にわたるキャリアが記されている。技術職には AT&T Bell Labs、Apple、Philips Research Laboratories、Com21、Bay Networks が含まれる。後に CTO 室の先進インターネットアーキテクチャ担当ディレクターとして Cisco に在籍し、Packet Design の創業チームに加わってネットワークサイエンス担当副社長となり、Pollere LLC を設立した。

利用可能な公開記録は、すべての移行日付よりも制度的な順序を明確に示している。責任あるプロフィールは、再構成された企業年表でギャップを埋めるべきではない。この順序だけで、理論、機器設計、運用者の証拠の間を繰り返し行き来したキャリアを示すのに十分である。

Nichols はカリフォルニア大学バークレー校で電気工学・計算機科学の博士号を、ピッツバーグ大学で電気工学の学士号を取得している。CoDel は単なる統計的分類器ではないため、工学的背景は重要である。タイミング、状態遷移、実装演算を備え、負荷下で機能しなければならないパケットスケジューラに組み込まれたフィードバックコントローラである。

CoDel 以前の仕事もインターネットのサービス品質に関わっていた。Nichols は IETF Differentiated Services Working Group の共同議長を務め、トラフィックを分類し異なるホップごとの扱いを適用するスケーラブルなアーキテクチャを開発した。DiffServ は現実の問題に対処した。運用者はすべてのインターネットパケットに対してフローごとの予約状態を維持できないが、遅延に敏感なトラフィック、管理対象トラフィック、ベストエフォートトラフィックのクラスが必要になる場合がある。

しかし、クラスアーキテクチャはそのクラス内のキューが満杯のままかどうかを決定しない。パケットに優先的扱いのマークを付けることは、どのキューまたは動作を受け取るかを決める。スケジューリングはキューがサービスを共有する方法を決定する。アクティブキュー管理はキューがいつ輻輳を通知すべきかを決定する。これらは関連する制御層であり、交換可能なラベルではない。

この区別は、Nichols のキャリアにおける CoDel の位置づけに役立つ。DiffServ はポリシーを大規模にどのように表現すべきかを問うた。Packet Design はネットワークインテリジェンスと分析に取り組んだ。Cisco はアーキテクチャを大規模な機器の文脈に置いた。Pollere はネットワークおよび通信コンサルティングの独立した手段を提供した。CoDel は、トラフィックポリシーがパケットの実際の待ち時間になる地点に対処した。

公開されている Pollere のページでは Nichols を創設者兼最高経営責任者としている。ページは引き続き利用可能だが、利用可能な公開記録には最近の任命発表や完全な現在の事業開示は含まれていない。現在の役職については、時期に敏感な経歴では再確認すべきであり、最も安全な現在の記述は、彼女が Pollere を設立し、同社のコンサルティングおよび研究業務に公的に関連付けられ続けているというものである。

制度的な経路が重要なのは、CoDel が繰り返し発生する展開の失敗に対応したためである。初期のアクティブキュー管理方式は、管理された研究では良好に機能しても、製品への設定が難しい場合があった。リンクレート、バッファサイズ、トラフィック構成から導出したしきい値を必要とするアルゴリズムは、すべての運用者やベンダーにキュー制御の専門家になることを求めた。Nichols と Jacobson は、通常のデフォルト値がより広く通用するコントローラを目指した。

Differentiated Services は、IP ヘッダーにトラフィッククラスを符号化し、グローバルな予約システムを構築せずにホップごとの動作を定義する方法を生み出した。ネットワークはポリシーに従ってパケットをキューやスケジューリングクラスに配置できる。ルータがすべてのフローについて詳細なエンドツーエンド状態を必要としないため、アーキテクチャはスケールした。

この仕事は CoDel を巡る語彙を形作った。分類はパケットが受けるべき扱いを答える。スケジューリングは次にどのキューをサービスすべきかを答える。シェーピングは制御されたサービスレートを設定できる。アクティブキュー管理はキューに入ったトラフィックがいつ輻輳フィードバックを受けるべきかを決定する。完全な低遅延設計には4つすべてが必要になる場合がある。

運用者が低遅延クラスとバルククラスを作成すると仮定する。クラス境界は対話型トラフィックをある程度の競争から保護できる。しかし、低遅延キューが正しくサイズ決定または管理されることを保証できない。そのキューが持続的に満杯のままであれば、ラベルは優先を約束しても実装は依然として遅延を加える。

逆の問題も存在する。AQM は、バルクフローがスパースな対話型フローと内部で競合している間、1つの集約キュー遅延を制御できる。集約遅延は許容できるように見えても、スパースフローはパケットのバーストの背後で待たされることがある。この制限は後にスタンドアロン CoDel と FQ-CoDel の区別の中心となった。

したがって、Nichols の DiffServ 経験は履歴書の無関係な行として扱うべきではない。それは、制御機能を分離し、それぞれが何を保証できるかを正確に述べるというアーキテクチャ上の規律をもたらした。CoDel は QoS システムではない。より大きなトラフィックアーキテクチャ内に置かれ得る1つのキューコントローラである。

標準化の仕事は展開の主張に対する注意も教える。RFC はメカニズムと相互運用可能な言語を定義できる。ベンダーはそれを実装し、運用者は有効にし、エンドポイントは応答しなければならない。CoDel の後の Experimental RFC としての公開は、あらゆるネットワークがあらゆる条件で使用すべきと宣言することなく、アルゴリズムと詳細な擬似コードを保存した。

キュー長はバーストと持続的な有害性を区別できなかった

多くのキュー管理設計は占有率を使用する。あるしきい値を超えるキューはドロップまたはマーキングを開始し、成長するにつれてより積極的な動作をとる。見かけ上の論理は単純である。バッファが満杯であるほど輻輳が進んでいる。

測定はリンクによって意味が変わる。遅いリンク上の10パケットは、速いリンク上の10パケットよりもはるかに長い時間を表し得る。バイト数は関係を改善するが、依然としてサービスレートの知識を必要とする。あるアクセス速度に適したしきい値は、アップグレード後には小さすぎたり、他の場所に適用すると大きすぎたりする可能性がある。

平均キュー長は別の層を加える。平滑化は短いバーストが過剰な反応を引き起こすのを防げるが、平均化定数としきい値はレート、往復時間、トラフィックと相互作用するパラメータになる。ベンダーはデフォルト値を出荷できる。そのデフォルト値は製品の多くの動作条件で異なる性能を示す可能性がある。

滞在時間はより直接的な問いを投げかける。パケットはキューに入るとタイムスタンプが押される。デキューに達すると、コントローラはどれだけ待ったかを計算できる。5ミリ秒はメガビットリンクでもギガビットリンクでも同じ単位であるが、その遅延が表すバイト数は大きく異なる。

時間は自動的に完璧な信号ではない。タイムスタンプの解像度とラップアラウンドは正しく処理されなければならない。キューはパケットがいつ入ったかを知る必要がある。クロックコストは高速経路で重要である。制御されたキューを離れた後にパケットが別の隠れたキューで待つ場合、CoDel は後の遅延を見ることができない。

利点は、測定される量がキューによるレイテンシへの寄与に対応することである。これによりコントローラは、1つのデバイスに対して間接的に選択されたバッファ占有率ではなく、許容される持続的遅延として目的を記述できる。

このセンサの変更は運用上の会話も変える。リンク容量はレート適応、無線状態、シェーピング、サービスアップグレードによって変化し得る。キュー長コントローラは新しいしきい値が必要になる場合がある。時間ベースのコントローラは、目標値と間隔が設計された条件の範囲内で、パケットが長く待ちすぎていないかを問い続けることができる。

CoDel の調整削減の主張はこの関係に基づく。常に機能する魔法の定数に基づくわけではない。アルゴリズムは、リンクをビジーに保つために必要なパケット数やバイト数が変わっても解釈可能な測定を中心に設計されている。

「良いキュー、悪いキュー」というフレーズは教育的な簡略化以上のものである。静的占有率しきい値が苦労する理由を特定する。同じキューの深さが、ある瞬間には有用な吸収を表し、別の瞬間には持続的な遅延を表し得る。

応答を受け取った後に短いバーストを送出するアプリケーションを考える。到着レートが一時的にリンクレートを超えるため、パケットが蓄積する。送信者が一時停止し、キューが排出されれば、バッファはバーストを平滑化し、リンクをビジーに保った。そのバーストを吸収する能力をすべて取り除くと、長期的な遅延を改善せずに損失と低使用率を生む可能性がある。

次に、輻輳ウィンドウが継続的に十分なインフライトデータを維持してバッファを占有し続けるバルク送信者を考える。出ていくパケットは別のパケットに置き換えられる。キューは信頼できるスループットと大きな往復時間を生むレベル付近に落ち着く可能性がある。バッファはもはや一時的なミスマッチを橋渡ししていない。ミリ秒で測定される追加の経路長となっている。

パケット数のしきい値は、両方のキューに例えば50パケットが含まれていることを見ることができる。キューがバーストの間に空になったかどうかは分からない。平均は時間にわたる占有率を記述できるが、同様の平均サイズを持つ複数の短いバーストから1つの長いバックログを区別できない場合がある。滞在時間の直近最小値は、まったく異なる問いをする。パケットが持続的な待ち時間を耐えずに通過したかどうかである。

このアプローチは使用率も再定義する。低遅延はすべての瞬間に空のキューを必要としない。最小値が定期的に目標値を下回る間、リンクはビジーであり続けられる。CoDel の目的はバッファグラフの視覚的な整然さではない。選択された間隔内でサービスが到着に追いついた証拠を保持することである。

この区別はトラフィックミックスが変わると運用上重要になる。1つの長い転送を処理するキューは安定しているかもしれない。対話型トラフィックを追加すると、同じ持続的バックログがユーザー遅延として見えるようになる。多くの短いフローを追加するとバーストパターンが変わる。時間ベースのコントローラは局所的な結果を評価し続けられるが、占有率コントローラはミックスごとに異なるしきい値が必要になる場合がある。

目標値には依然として判断が伴う。5ミリ秒の持続的遅延は、ある経路では小さく、別の経路では重要である。重要なのは、判断がユーザーが経験する単位で表現されることである。ネットワーク所有者は、レートによって時間的意味が変わる間接的なパケット数について議論するのではなく、サービス目標について直接議論できる。

直近最小値はキューが排出されるかどうかを明らかにする

1つのパケットの滞在時間を見るのは反応が過剰になる。短いバーストは、直後にキューが排出されても、複数のパケットを目標値以上で待たせることがある。1つのパケットがしきい値を超えたらすぐにドロップすると、有用なバースト吸収を罰する可能性がある。

CoDel は代わりに、間隔にわたって観測された最小滞在時間を追跡する。最小値は、キューがかつてビジーだったかではなく、ほぼ空になったことがあるかを問う。少なくとも1つのパケットが低い待ち時間を経験したなら、バックログは一時的かもしれない。間隔全体で最も良好に観測されたパケットでさえ長く待ったなら、キューは滞留している。

この局所最小値の使用は設計の中心である。平均遅延はバースト後に高いままであり、キューが排出されたかどうかを隠すことがある。最大遅延は最悪のパケットに支配される。最小値はサービスが少なくとも一度は到着に追いついた証拠を提供する。

間隔は、通常のインターネットトラフィックのフィードバックダイナミクスを観測するのに十分な長さでなければならない。RFC 8289 は通常の地上設計点として100ミリ秒を使用し、異なる値が適切な環境について議論している。間隔はすべてのフローの正確な往復時間の測定ではない。持続的なバックログが現れるべき時間スケールである。

仕様と実装で一般的に5ミリ秒である目標値は、そのキューでの許容される持続的遅延を表す。エンドツーエンドのレイテンシが5ミリ秒になるという約束ではない。伝播、処理、無線スケジューリング、他のキューは残る。自身の寄与が高すぎると判断するためのコントローラの局所的なしきい値である。

これらの値は、しばしば条件を付けずに繰り返される。「5と100」は通常のインターネット条件の設計デフォルトであり、ネットワークの法則ではない。非常に短いデータセンターパス、衛星システム、異常に低レートのリンク、特殊なサービス目標では解析が必要になる場合がある。CoDel の成果は、通常の運用がすべてのリンク所有者に新しい値を計算することを要求しないように設計されたことである。

直近最小値テストは、キューが継続的に悪くなくても大きくなり得る理由も説明する。バーストは瞬間的に多くのパケットを占有し得る。間隔内に排出されれば、コントローラはピークだけを理由に状態を持続的と分類しない。アルゴリズムはバースト耐性を保護しつつ、目標値を下回らない時間を輻輳の証拠として扱う。

デキュー時間制御と制御則は観測をシグナルに変える

キュー管理の議論は到着に焦点を当てることが多い。パケットが入り、キューが長さを確認し、受け入れるかドロップするかを決定する。CoDel の主要な観測はパケットが離れるときに行われる。なぜなら、実際の滞在時間を測定できるのがデキューだからである。

パケットはエンキュータイムスタンプを保持するか、関連付けられる。デキュー時に、コントローラはその時間を現在時刻から差し引く。間隔の最小値を更新し、キューが目標値を超えて十分長く維持され、輻輳シグナリング状態に入るかどうかを決定する。

デキューで動作することには実用的な論理がある。サービスプロセスがパケットの待ち時間の終了を決定する。コントローラは、固定占有率しきい値を誤解させるレート変更を含め、キューが排出されている正確なレートでキューを観測できる。

実装は依然としてエンキューと相互作用する。タイムスタンプを記録し保存する必要がある。スケジューラまたはキューイング規則はパケット状態を公開しなければならない。パケットがデバイスキューに渡され、その後の遅延がソフトウェアコントローラから見えない場合、ハードウェアオフロードは境界を複雑にする可能性がある。

CoDel が遅延の持続を結論付けると、ドロップするか、適切なポリシーの下で対象となるトラフィックに対して明示的輻輳通知(ECN)でマークする。シグナルは応答する送信者に負荷を減らすよう求める。キューは状態が改善するかを見守る。

アルゴリズムは、キューが空になるか遅延が十分に低下するとドロップ状態を終了する。恒久的に懲罰的であり続ける意図はない。目的は、ボトルネックが持続的なバックログを抱えずに使用され続ける状態を回復することである。

このデキュー指向は、実装詳細を単なるコーディングと見なせない理由の一つである。タイムスタンプ演算、状態遷移、空キューの処理、パケットがマークまたはドロップされる順序が、公開された制御則が実際に再現されるかどうかを決定する。

Linux 実装には Eric Dumazet や他のカーネル貢献者が関わり、広範なレビューと統合が行われた。Nichols と Jacobson が CoDel 設計を提供し、展開された qdisc は集合的なインフラである。この区別は両方の貢献を保護する。設計はメンテナがそれを信頼できるパケット経路に変換して初めて有用になる。

CoDel が輻輳シグナリング状態に入ると、ドロップまたはマークの間に1つの固定間隔を使用しない。タイミングはシグナリングイベントのカウントに対する逆平方根関係に従って漸進的に積極的になる。

制御則は輻輳制御されたトラフィックのダイナミクスを反映する。持続的な過負荷では、1つのシグナルでは不十分な場合がある。輻輳が続くにつれて増加するレートでシグナルを送ると、キューをより早く減らせる。逆平方根形式は、運用者が特定のリンクと負荷に対するドロップ確率を設定する必要をなくす。

メカニズムは慎重に説明すべきである。CoDel は正確な TCP フロー数を推定し、そのウィンドウを計算しているのではない。一般的な輻輳応答と連携するように設計された制御スケジュールを適用する。結果は、損失や ECN に反応するトラフィックに依存する。フィードバックを無視する送信者は容量を占有し続けられる。

スケジュールの実装には効率的な演算が必要である。カーネルパケット経路は高価な浮動小数点演算を気軽に使用できない。固定小数点または整数近似、タイマ解像度、ラップ動作が重要である。小さな数学的エラーが高負荷下でシグナル系列を変える可能性がある。

ここで Nichols の制御指向の貢献が最も目に見える。推定器は持続的遅延が存在するかどうかを決定する。目標値は望ましい領域を定義する。制御則はその領域外に留まる場合のシステム応答を決定する。これらの部分のどれだけでも単独では CoDel ではない。

キューコントローラはサービスレートも選択できない。真のボトルネックが設定された qdisc の下流にある場合、qdisc はより深いデバイスバッファに排出され、自身ではほとんど遅延を見ない可能性がある。運用者は、制御されたソフトウェアキューが実効ボトルネックとなり、隠れたキューが満杯になる前にシグナルを送れるように、AQM をシェーピングと組み合わせることが多い。

したがって、逆平方根スケジュールは運用システムに属する。キューがボトルネックを観測し、タイムスタンプが正確で、送信者が応答する場合に有用である。容量、トラフィック分離、意図的に応答しないフローの取り締まりの代替にはならない。

調整の削減は依然として正確な時間に依存する

CoDel はしばしばパラメータレスと呼ばれる。その省略形は重要な野心を捉えているが、文字通り述べると偽になることがある。アルゴリズムには目標値と間隔がある。実装には定数、タイミング状態、運用上の選択が含まれる。

RFC 8289 のより正確な表現は、通常のインターネット展開では設定が不要であるということである。Nichols と Jacobson は、以前の AQM アプローチに関連するリンクごとの調整なしに、一般的な地上レートと往復時間にまたがる値とセンサを求めた。

この区別は調達とエンジニアリングに影響する。ベンダーは CoDel が通常のデフォルト値で機能するように設計されていると合理的に主張できる。オンチップ相互接続から衛星リンクまで、すべてのネットワークが同じタイミングドメインを共有すると主張すべきではない。運用者は、自分の環境が前提の外にある場合を理解すべきである。

データセンターのケースは示唆的である。往復時間は通常のインターネット間隔よりはるかに短いことがある。キューは浅いが高レートのバッファを持つスイッチにあり、ワークロードはインキャストを生む可能性がある。同じ原則、つまり持続的な滞在時間の検出は依然として関連するが、目標値と間隔は環境を反映する必要があるかもしれない。

非常に低レートのリンクは別の端を生む。1つの大きなパケットのシリアル化時間が数ミリ秒を超えることがある。コントローラは不可避のサービス時間と滞留キューを区別しなければならない。シェーピング、最大転送単位、パケットスケジューリングが結果に影響する。

無線リンクはレートが急速に変化し、可視インターフェイスの下にキューを含むことがある。時間ベースのセンサは固定パケット数よりもレート変化に適応するが、所有していないファームウェアキューを制御できない。配置は依然として決定的である。

したがって、CoDel をパラメータ非感受性と呼ぶ方が、パラメータなしと呼ぶよりも防御しやすい。この設計は、通常の運用者が選択する必要のあるネットワーク固有の値の数を減らした。ボトルネックがどこにあり、サービスがどのような時間目標を必要とするかを知る必要性を廃止したわけではない。

この条件付けは貢献を減じるものではない。運用上の単純さは、多くの場合、慎重に選択されたデフォルト値と堅牢な測定によって生み出され、すべての制御を削除することによってではない。関連するテストは、システムが専門家の介入なしに意図された範囲で許容可能に動作するかどうかである。

CoDel のセンサは、パケット処理速度でエンキュー時刻をデキュー時刻から差し引くことに依存する。見かけ上の単純さは、クロックソース、解像度、整数幅、ラップアラウンドに関する選択を隠している。

粗く進むクロックは短い遅延を量子化し得る。高価なパケットごとのタイムスタンプは、コントローラが改善すべき経路にオーバーヘッドを加える可能性がある。ラップするカウンタは、目標値と間隔をまたぐ正しい比較を可能にしなければならない。実装は一般的に効率的な整数表現と慎重に定義された時間比較を使用する。

制御状態には独自のタイミングがある。間隔ウィンドウは正しくリセットされ、次のマークまたはドロップ時間はオーバーフローなしに逆平方根スケジュールに従わなければならない。空キューと輻輳状態への再入は、古い状態が後のバーストを罰しないように定義された動作を必要とする。

これらの詳細こそ、公開された擬似コードとオープンカーネルコードが重要である理由である。実装者は口頭の説明を模倣するのではなく、演算と状態遷移を比較できる。テストは、スループットベンチマークでは決して到達しないラップ境界とキュー遷移を実行できる。

Nichols と Jacobson は実装向けに設計されたアルゴリズムを提供した。カーネルおよびデバイス開発者は依然として各実装の正しさを所有する。製品は CoDel の名前を宣伝しながら、タイムスタンプ精度、ECN ポリシー、キュー配置が結果を変えるほど異なる可能性がある。

工学的教訓は設計の中心的主張と一致する。測定品質が制御品質を決定する。キューは、自身の時間表現が信頼できなければ、持続的な待ち時間を調整できない。

ECN はフィードバック経路がマークを尊重する場合にのみドロップを置き換えられる

パケット損失は強力な輻輳シグナルである。同時に、再送が必要な作業を破棄する。明示的輻輳通知(ECN)は、対応するキューが対象パケットを代わりにマークし、パケットを保持しながら輻輳が発生したことをエンドポイントに通知することを可能にする。

CoDel は実装とポリシーに応じて ECN マーキングを使用できる。コントローラの滞留遅延検出器は同じままである。動作は対象パケットの破壊から輻輳表示の設定に変わる。

利点はエンドツーエンドのセマンティクスに依存する。送信者はフィードバックを受け取り、送信レートを減らす必要がある。トンネル、ミドルボックス、エンドポイント実装はシグナルを保持または正しく変換しなければならない。どの送信者も尊重しないマークは輻輳制御ではない。

この境界は、CoDel が「パケット損失を排除する」という誇張された主張を防ぐ。ECN が展開されている場所では対象トラフィックをマークでき、マークできないか応答しないトラフィックは依然としてドロップする。深刻な過負荷では損失が必要なままである可能性がある。

ECN はポリシー選択も導入する。古典的な ECN トランスポートと新しい低遅延アプローチは、異なるアーキテクチャの下でキューマーキングを解釈する可能性がある。キューはエンドポイントが期待しないセマンティクスを適用すべきではない。AQM、スケジューラ、トランスポートエコシステムを一緒に評価する必要がある。

Nichols のトラフィックアーキテクチャに関する幅広い仕事はこの点を明確にする。ヘッダーのビットは、すべての層がその意味と後続の動作に同意する場合にのみ有用である。キュー管理は証拠とシグナルを供給する。トランスポートがフィードバックループを閉じる。

スタンドアロン CoDel と FQ-CoDel はキューの異なる部分を解決する

CoDel は1つのキュー内の持続的遅延を制御する。それ自体ではトラフィックを別々のフローキューに分割しない。大きな転送とスパースな対話型フローが同じ FIFO を共有する場合、集約コントローラが長期的な遅延を有界に保っても、スパースパケットはバーストの背後で待たされることがある。

FQ-CoDel はフローキューイングとスケジューリングを、キュー内に CoDel を適用することと組み合わせる。パケットは一般的にハッシュによってフローキューに分類される。スケジューラはアクティブなキューの間でサービスを共有し、CoDel が各キュー内の滞留遅延を制御する。スパースフローはバルクフローの全バーストの背後で待たずにサービスを受けられる。

著者関係は正確でなければならない。Nichols と Van Jacobson が CoDel を共同設計した。FQ-CoDel を文書化した RFC 8290 は Toke Høiland-Jørgensen、Paul McKenney、Dave Taht、Jim Gettys、Eric Dumazet によって執筆された。Nichols の仕事は組み合わせシステムの基礎であるが、彼女はその RFC の著者ではない。

この区別は技術的かつ経歴的である。フロー分離は競争に対処する。CoDel は持続的遅延に対処する。スケジューラはキューがサービスされる順序を決定する。これらを組み合わせると、1つの集約 CoDel キューを展開するよりも有用なエッジ qdisc を生み出せる。

ハッシュは完全な同一性ではない。異なるフローが1つのキューで衝突することがある。一部のアプリケーションは多くのフローを開く。トラフィックは従来のタプル以上で分類される場合がある。スケジューラの量子とシェーピングコンテキストが重要である。FQ-CoDel は実用的なアーキテクチャであり、絶対的なユーザーごとの公平性ではない。

その運用上の採用も、スタンドアロン CoDel 展開の直接的な尺度として使うべきではない。プラットフォームは FQ-CoDel を公開し、デフォルトとして出荷し、オプションとして含め、またはハードウェアキューの上に別の qdisc を配置する場合がある。可用性は真のボトルネックで正しくアクティブに使用されていることを証明しない。

CAKE などの後のシステムは、シェーピング、より豊富な公平性、ポリシーを追加しながら関連するアイデアに基づいている。DualQ/L4S などの新しい低遅延アーキテクチャは異なるシグナリング前提を使用する。CoDel の影響は子孫の内部で持続し得るが、Nichols が後のすべてのキュー設計の著者になるわけではない。

コントローラは実際に遅延を引き起こしているキューに置かれなければならない

AQM は自身が動作するキューのみを見る。これは最も重要な運用上の制限であり、ソフトウェアデモで見落としやすいものの1つである。

Linux ホストはインターフェイスに CoDel または FQ-CoDel を適用し、独自の送信リングとファームウェアバッファを持つネットワークデバイスにパケットを渡すことができる。ブロードバンドモデムには別のキューがあるかもしれない。Wi-Fi システムはファームウェアでフレームをスケジュールするかもしれない。プロバイダのアクセスネットワークはさらにバッファリングを追加できる。後のキューの1つが滞留バックログになると、ソフトウェア qdisc は健全な遅延を報告してもユーザーは待たされ続ける。

シェーピングは、下流サービスよりわずかに低いレートを設定することで、実効ボトルネックを制御されたキューに移動できる。ソフトウェアスケジューラは、隠れたデバイスキューが満杯になる前にパケットを蓄積する。このアプローチは正確または保守的なサービス推定を必要とし、リンクレートが変化する場合はピーク容量の一部を犠牲にする可能性がある。

受信方向も同様に複雑である。エンドポイントは自身のパケットを送信するタイミングを制御するが、プロバイダからすでに到着しているパケットを直接スケジュールできない。入力シェーピング、中間機能ブロック、エンドポイントフィードバックが役立つが、配置とアーキテクチャは単純な出力キューとは異なる。

ハードウェアオフロードは別の境界を加える。ドライバは多くのパケットをデバイスに転送できる。オペレーティングシステムは、NIC が後で送信する場合でもそれらをデキューされたと見なす。Byte Queue Limits と関連メカニズムは隠れたドライババッファリングを減らせるが、キュー所有権はプラットフォーム固有のままである。

結論は、CoDel が実験室外で失敗するということではない。展開はボトルネックを特定し、その下の制御されていないバッファリングが問題を再現しないようにする必要がある。間違ったキューに置かれた良いコントローラは、間違ったシステムを観測している。

そのためユーザー可視のテストが重要である。運用者は qdisc 設定だけを検査するのではなく、負荷下の遅延を測定すべきである。双方向テスト、アプリケーション性能、ハードウェアカウンタはソフトウェアキューの先の遅延を明らかにできる。アルゴリズムの内部状態は1つの層についての証拠であり、経路の全体像ではない。

多くのアクセスリンクは1つの固定出発レートを持たない。無線変調は信号条件で変化する。ケーブルおよび受動光システムは容量を共有する。モバイルスケジューラは時間をかけて無線リソースを割り当てる。ホームルータは瞬間的なボトルネックではなく、名目上のサービス階層しか知らないかもしれない。

固定パケットしきい値は、パケットが表す遅延がレートで変化するため、この環境で特に性能が悪い。滞在時間は単位を保持するため、CoDel が魅力的だった理由の1つである。キューは、目標値に対応する新しいバイト数を最初に推定せずに、パケットが長く待ち始めたことを観測できる。

コントローラは依然として配置された場所でのみ動作する。可変レートモデムまたは無線がホストの後に大きなキューを保持する場合、ソフトウェア CoDel は真の出発スケジュールを観測できない。最小期待レート未満に設定されたシェーパはキューをソフトウェアに移動できるが、リンクが改善すると容量を浪費する可能性がある。レートを追跡するシェーパは性能が良く、アクセス技術からの信頼できるフィードバックを必要とする。

このトレードオフは、AQM がデバイス統合と不可分であることが多い理由を説明する。アルゴリズムは一般的であり得るが、高品質な製品にはレート情報、ハードウェアキュー制限、リンクスケジューリングとの調整が必要である。オープンな擬似コードは実装の障壁を下げるが、ベンダーの工学的責任を消すわけではない。

可変サービスは間隔の解釈も複雑にする。CoDel は、すべての瞬間的なレート変動を追うのではなく、一般的な往復時間に関連する時間スケールで持続的遅延に反応するように設計されている。過度に急速な反応は、無線が一時的に遅くなったときに有用なバーストを破棄する可能性がある。過度に遅い反応はバックログをユーザー可視にする。

設計での直近最小値の使用が役立つ。容量が戻ったときにキューが排出されれば、最小値がその救済を記録する。レート変動にもかかわらず決して排出されなければ、持続的な状態が可視のままである。これは、瞬間的な占有率が固定しきい値を超えたかどうかよりも安定した問いである。

新しいアクセスシステムは、より豊富なスケジューリングとステーションごとの公平性を追加できる。これらの機能はスタンドアロン CoDel が対処しない競争を解決する可能性がある。アルゴリズムは、リンクのバイト容量が一定でないからこそセンサが有用な1つのコンポーネントのままである。

非応答トラフィックとポリシーは遅延コントローラを圧倒し得る

CoDel のシグナルは、十分なトラフィックが提供負荷を減らすことで応答することを前提としている。TCP や他の輻輳制御トランスポートはそうするように設計されている。損失や ECN を無視するアプリケーションや攻撃は同じレートで送信し続けることができる。

キューは容量を生み出せない。非応答トラフィックがボトルネックを占有する場合、より頻繁にドロップまたはマークすることで一部の応答トラフィックを保護できるが、ポリシーとスケジューリングが必要になる場合がある。フローごとのキューイングは違反者を隔離できる。ポリシングはレートを強制できる。管理されたサービスにはアドミッションやアプリケーション制御が必要になる場合がある。

この制限は CoDel に固有ではない。輻輳制御は、一部はエンドポイントの動作、一部はネットワークポリシーによって強制される協調的なアーキテクチャである。輻輳責任に関する RFC ガイダンスが存在するのは、1つの非応答フローが他者に遅延と損失を課すためである。

トラフィッククラスは役立つが、別の失敗モードを生む可能性がある。実効的なレート制限のない特権クラスはベストエフォートを飢餓状態にできる。分類規則は間違っていたり悪用されたりする可能性がある。各キュー内の AQM は遅延を管理するが、クラス割り当てが正当かどうかを決定しない。

運用上のタスクはインセンティブを整合させることである。応答するアプリケーションは、キューが早期にシグナルを送り、競合他社も負荷を減らす場合に利益を得る。非応答送信者は、ネットワークが境界を強制するまでより多くのシェアを取ることで利益を得る可能性がある。FQ-CoDel と関連スケジューラは分離を改善するが、すべての乱用やサービスポリシー制御の代替にはならない。

Nichols の仕事は、このシステムビュー内に留めることで最も強くなる。CoDel は局所的な輻輳証拠の質とフィードバックのタイミングを改善する。経路上のすべての送信者やすべてのキューに対する主権を主張しない。

Linux と RFC は設計を保守されたインフラに変えた

論文と擬似コードからカーネルキューイング規則への移行には、実装、レビュー、テスト、長期的な保守が必要だった。Linux サポートにより、CoDel はカーネル上に構築された広範なホスト、ルータ、製品で利用可能になった。

Eric Dumazet は Linux 実装に関連する貢献者の一人であり、後の FQ-CoDel の作業には別の開発者グループが関わった。カーネルソースは特定の変更について限定的な証拠を提供する。すべての展開を誰か一人の個人プロジェクトに変えるわけではない。

qdisc は Linux トラフィック制御、タイムスタンプ、パケットメタデータ、ECN、スケジューラ規則と統合する必要がある。ユーザースペースツールはそれを設定し表示する必要がある。ディストリビューションとデバイスベンダーは、モジュールがビルドされ、公開され、デフォルトで選択されるかを決定する。ハードウェア経路はその外にどれだけのバッファリングが残るかを決定する。

このサプライチェーンはオープンな実装を重要にする。研究者と運用者はコードを検査し、RFC と比較し、変更をテストできる。バグは依然として生き残り得る。異なるカーネルは修正をバックポートしたり、ベンダー変更を含めたりする。利用可能なソースツリーは監査の機会であり、すべてのアプライアンスが同じコードを実行する保証ではない。

2018年1月に Experimental として公開された RFC 8289 は、詳細な擬似コードと設計上の理由を保存した。カテゴリは重要である。Standards Track 要件を課すのではなく、実装と評価を意図したメカニズムを記録する。広範な可用性は Experimental ステータスと共存できる。

RFC はまた、製品マーケティングよりも明確に帰属を固定する。Nichols と Jacobson が CoDel 設計者であり、編集者と実装コミュニティには独自の役割がある。FQ-CoDel の RFC は異なる著者チームを明記している。

この階層化された著者関係はインフラでは一般的である。研究者が制御則を定義する。カーネル開発者がそれを安全かつ効率的にする。ディストリビューション保守者がそれをパッケージ化する。運用者がそれをトポロジに配置する。アプリケーションユーザーが結果を経験する。プロフィールは、低遅延の唯一の発明者を探すのではなく、この連鎖をたどることでより正確になる。

RFC 8289 は Experimental に分類されている。公の議論では、このラベルはメカニズムが未証明であるという警告として読まれることもあれば、すべての RFC がインターネット標準であるかのように無視されることもある。どちらの解釈も十分ではない。

IETF は文書カテゴリを使用してステータスと意図を示す。Experimental RFC は、Standards Track 要件を生み出さずに、実装と評価のための完全でレビュー可能な仕様を提供できる。CoDel の RFC には、独立した実装が高レベルの論文以上のものを必要とするため、詳細な理由と擬似コードが含まれている。

カテゴリは展開の決定を実装者と運用者に委ねる。Linux qdisc、ルータファームウェア、アクセス製品はアルゴリズムを使用できる。ベンダーは実装を検証し、環境を明記すべきである。RFC 番号は製品を認証せず、Experimental ステータスは本番使用を禁止しない。

このステータスは遡及的な過大主張も防ぐ。オープンシステム全体での CoDel または FQ-CoDel の存在は、影響と可用性の証拠である。アクティブな設定、ボトルネック配置、性能の完全な監査済み国勢調査は存在しない。パッケージ数と製品文書はそのギャップを埋められない。

標準の成熟度と運用の成熟度は異なる速度で進み得る。メカニズムは、標準化プロセスがカテゴリを変更していないため Experimental のまま広く展開されることがある。別のメカニズムは Standards Track でありながらほとんど有効化されないことがある。報道は一方のラベルを他方の代わりにせず、両方の次元を記述すべきである。

RFC の価値は部分的にアーカイブ的である。コードをレビューできる設計前提、目標値と間隔の意味、制御則、実装メモを固定する。後のカーネル変更とプラットフォーム適応はそのベースラインと比較できる。

Nichols のプロフィールにとって、このステータスは証拠主導のテーゼを強化する。CoDel は低遅延が解決されたという布告ではなく、明示的な前提と制限を持つ実用的なコントローラとして提供された。その評判は引き続き実際のキューでの測定に依存すべきである。

Pollere は標準と製品の間に独立した専門性を置いた

Pollere LLC は Nichols に大規模な機器ベンダーや従来の研究所の外の制度的な手段を与えた。公開説明はネットワークおよび通信コンサルティングを中心としている。利用可能な証拠は完全な顧客リスト、収益、従業員数、現在の契約量を開示していない。

この欠如は事業プロフィールを制限し、関連する点を明確にする。Pollere は CoDel をスタートアップが所有する独自製品として扱わずに、技術的な仕事と助言を継続することを可能にした。アルゴリズムは公開され、オープンに実装され、IETF を通じて仕様化された。

独立コンサルティングは運用者の問題と研究課題を結びつけることができる。また、プロジェクト資金と時間配分を不透明にすることもある。公開 RFC は世界的に使用され得るが、基礎となる設計作業はコンサルティング、雇用主の時間、研究協力、無報酬の貢献を通じて、読者に見えない割合で支援された可能性がある。

経済性はアプライアンスを販売するベンダーとは異なる。Pollere の価値は専門知識、つまりアーキテクチャ、分析、助言である。CoDel の価値はベンダーと運用者が実装できるオープンなメカニズムである。CoDel を使用する製品からの収益は Pollere の収益にならず、製品の採用は Nichols との商業関係を確立しない。

この分離は記事を2つの一般的な誤りから保護する。1つはオープンなアルゴリズムを企業製品のように記述することである。もう1つは技術的影響から商業規模を推測することである。Nichols の仕事は、各インストールに結びついた開示された継続的事業を生み出さずに、多くのシステムのキューを形作ることができる。

現在の役職に関する注意はここに属する。Pollere の公開ページは彼女を創設者兼最高経営責任者としているが、最近の日付付きリーダーシップ発表は伴っていない。役職は、新たに検証された任命に静かに変換するのではなく、その制限付きで会社の公開説明として報告できる。

CoDel は RED の後に続いたが、以前の AQM の価値を消し去らなかった

CoDel は、Sally Floyd と Van Jacobson の Random Early Detection を含むアクティブキュー管理の系譜に属する。RED は、平均キューサイズを追跡し、平均が設定されたしきい値を超えると確率的にドロップまたはマークすることで、オーバーフロー前に輻輳を通知することを提案した。テールドロップからの基礎的な転換だった。

RED は運用上の問題も露呈した。しきい値、平均化、ドロップ確率は容量、往復時間、トラフィックと相互作用する。慎重に設定された展開は良好に動作し得る。一般的なデバイスデフォルトは臆病すぎたり、積極的すぎたり、実質的に無効だったりする可能性がある。この難しさが不均一な採用と、より自己調整的なコントローラを設計する後の取り組みに寄与した。

Nichols の仕事は、Floyd の仕事を時代遅れにした一世代による修正として語るべきではない。RED はアクティブキュー管理と早期輻輳シグナリングの根拠を確立した。CoDel は観測変数とシグナリング強度の制御方法を変えた。両方の設計は協力的であり、同じ広範な懸念から生まれた。バッファオーバーフローを待つことは、フィードバックネットワークを統治する貧弱な方法である。

比較は CoDel の貢献を明確にする。RED は平均占有率から輻輳を推定する。CoDel は直近最小滞在時間から持続的キュー遅延を推定する。RED は通常、設定された最小・最大しきい値と最大マーキングまたはドロップ確率を必要とする。CoDel は、通常のデフォルト値で機能することを意図した目標値、間隔、状態付き制御則を使用する。

どちらのアルゴリズムも欠落したフィードバックループを克服できない。どちらも応答するトラフィックまたは補完的なスケジューリングとポリシングに依存する。どちらも間違ったキューに配置され得る。どちらも複数のシステム変数を一度に変更するベンチマークによって誤って表現され得る。

歴史的なつながりには正確な個人帰属も必要である。Jacobson は RED で Floyd と協力し、CoDel で Nichols と協力した。共有された協力者は2つのアルゴリズムを1つのプロジェクトにしたり、研究者間で著者関係を移したりしない。Floyd の ECN、輻輳原則、評価に関する幅広い仕事は、CoDel が後に動作するアーキテクチャの形成に貢献した。Nichols の設計は特定のコントローラと展開の問題に対処した。

シニアジャーナリストの記事は、勝者を宣言するよりもこの連続性を保持することでより多くを得る。インフラは、以前のメカニズムの制限を露呈するメカニズムを通じて進化する。RED は早期シグナリングを正当化した。CoDel は持続的な待ち時間をセンサにした。FQ-CoDel は後にそのコントローラをフロー分離と組み合わせた。各層は異なる運用上の問いに答えた。

負荷時遅延テストは運用者が要求できるものを変えた

キュー管理アルゴリズムはアイドル測定では評価が難しい。トラフィックがボトルネックを争わなければ、ほぼどのキューも低遅延に見える。有用なテストは持続的な負荷を作り、スループットがアクティブなままでどれだけの追加遅延が現れるかを観測する。

この負荷時遅延の視点はバッファブロート研究とユーザー体験を結びつけた。リンクの伝播時間と、負荷下でキューが加える時間の違いを見えるようにした。アクセス製品は、速度テストのスループットだけを指して貧弱な対話性を擁護できなくなった。

測定は慎重に設計する必要がある。単一の ping ストリームは特別な扱いを受けるか、アプリケーショントラフィックを代表しない可能性がある。一方向の負荷は確認応答と逆方向経路キューの影響を見逃し得る。短いテストはコントローラの収束を明らかにしないかもしれない。近くのテストサーバは長い経路の伝播についてほとんど語らないが、アクセスキューイングをより明確に分離できる。

運用者はいくつかの量を分離すべきである。ベースライン往復時間、アップロード中の追加遅延、ダウンロード中の追加遅延、損失または ECN マーキング、達成スループット、負荷停止後の回復である。良い結果は1つの次元での最小可能値ではない。サービス目標に対する防御可能なバランスである。

CoDel の内部滞在時間測定と外部負荷時遅延テストは異なる問いに答える。内部コントローラは1つのキューでの待ち時間を知っている。外部テストはキューと経路効果の合計を観測する。qdisc が低遅延を報告し、外部テストが高遅延を報告する場合、その不一致は別のボトルネックまたは隠れたバッファの証拠である。

この比較は展開を導くことができる。運用者は制御されたレートでシェーピングし、FQ-CoDel を有効にし、負荷テストを繰り返し、遅延がどこで変わったかを検査できる。このプロセスは、設定コマンドが成功したからといって、名前付きアルゴリズムが経路を解決したと仮定するよりも強力である。

製品の主張には同じ規律が必要である。「CoDel をサポート」はオプションを確立する。「デフォルトで CoDel を使用」は設定を確立する。どちらも顧客のアクセス技術の下で低遅延を確立しない。結果はレート検出、オフロード、Wi-Fi、ファームウェア、プロバイダのスケジューリング、エンドポイントの動作に依存する。

Nichols の仕事のより広い意義は、局所的な制御目標を外部サービスメトリックと互換にしたことである。キューは持続的な寄与を目標値未満に保つよう求められ、ネットワークはその局所的な成功がユーザーに届くかどうかを負荷下でテストできる。

低遅延は出口経路を持つ複数メトリックの結果である

AQM は、容量を浪費したり、一部のフローを罰したり、条件が変わると不安定になったりする場合、滞留遅延を減らしても不適切なことがある。CoDel の評価には、トレードオフが見えるままのいくつかの測定が必要である。

スループットはボトルネックが有用に占有され続けるかどうかを確立する。遅延は平均だけでなく、負荷時と末尾の値を含む分布として測定すべきである。損失と ECN マーキングはフィードバックのコストと形式を示す。キュー占有率は CoDel の主要センサではないが、メカニズムを説明するのに役立つ。

公平性にはいくつかの定義がある。フロー公平性は同時フローが同等のシェアを得るかを問う。ユーザー公平性は1つのアプリケーションが多くのフローを開けることを認識する。RTT 公平性は短い経路が有利になるかを調べる。スパースな対話型フローと持続的なバルク転送はサービスを異なる価値で見るため、フローキューイングが1つの集約遅延統計よりも重要になり得る理由である。

収束と回復は別々のテストに値する。コントローラは負荷が上昇したら応答し、キューが改善したらシグナリングを停止すべきである。可変レートリンク、突然の容量損失、短いバーストは、定常状態ベンチマークに隠れた振動や鈍さを露呈できる。

比較はシステムの残りを一定に保つ必要がある。テールドロップを FQ-CoDel に置き換えると、キュー管理とスケジューリングの両方が変わる。シェーパを追加するとボトルネックが移動する。オフロードを無効にするとパケット表現と CPU コストが変わる。これらの介入は正しいかもしれないが、報告は結果全体を CoDel だけに帰属させるべきではない。

ワークロードの多様性も重要である。長い TCP フローは定常的なフィードバックを明らかにする。Web のような短い転送は起動とキューイングを強調する。リアルタイムトラフィックはスパースなパケットをテストする。非応答 UDP は分離またはポリシングの必要性を明らかにする。混合 RTT と双方向負荷は単一フローテストにはない相互作用を露呈する。

Nichols の貢献は、アルゴリズムが測定可能な目標から始まるため、この規律を奨励する。同じ規律を成功の主張にも適用しなければならない。局所的な滞在時間の低下は制御されたキューについての強力な証拠である。有用な製品結果は、その証拠を明記された条件下でのスループット、公平性、エンドツーエンド体験と結びつける。

キューポリシーはカーネル回帰、不適切なデフォルト、ハードウェアとの予期しない相互作用を通じて失敗し得る。運用者は新しい qdisc を以前の状態と比較し、管理アクセスを失わずにロールバックし、障害期間の証拠を保持できるべきである。

ロールバックは単なるコマンドではない。qdisc を置き換えるとキュー内のパケットが変わり、一時的な損失やバーストを引き起こす可能性がある。シェーパがボトルネックを移動させた場合、それを取り除くと隠れたモデムキューが再び満たされ、以前の設定が復元されても遅延が悪化する可能性がある。

制御された展開は、カーネル、ドライバ、オフロード、目標値、間隔、シェーピングレート、トラフィックミックスを記録する。負荷下で前後を測定し、ソフトウェアアップグレード後も同じテストを維持する。その証拠は、アルゴリズムの問題と変化したリンクまたはデバイス経路を区別する。

CoDel は日常的な調整を減らすように設計された。キューはライブトラフィック上のアクティブな制御点であるため、運用上の規律は依然として必要である。

CoDel の遺産は占有率ではなく時間を制御する決断である

キュー管理は進化し続けている。PIE は別の遅延指向コントローラを使用する。FQ-CoDel はフロースケジューリングと CoDel を組み合わせる。CAKE はシェーピングと公平性ポリシーを追加する。L4S と DualQ は異なる ECN セマンティクスとトランスポート期待を通じて低遅延サービスを追求する。ハードウェアベンダーは詳細があまり見えない独自のキューシステムを実装する。

CoDel の永続的な貢献は、1つのアルゴリズムがすべての比較に勝ったという証明ではない。多くのエンジニアが問題を枠付ける変数を変えた。ユーザーは時間を経験する。占有され続けるキューは、特定のパケット数が道徳的に大きすぎるからではなく、生み出す遅延と延期するフィードバックのために有害である。

直近最小値推定器は、キューが排出されるかどうかの実用的なテストを提供した。制御則は、運用者がドロップ確率を設定する必要のない応答を提供した。一般的なデフォルト値は、リンクごとの専門知識なしで展開を可能にしようとした。

これらのアイデアは、後のシステムがフロー分離、より豊富なシェーピング、異なるシグナリングを追加しても生き残る。また、自身の限界も露呈する。コントローラは隠れたキューを見ることができない。応答しない送信者に協力を強制できない。クラスポリシーを決定できない。エンドツーエンドの遅延を保証できない。

Nichols のキャリアはメカニズムに広い文脈を与える。DiffServ はトラフィック処理をスケーラブルな動作に分離した。ベンダーとスタートアップの役割はアーキテクチャを製品に結びつけた。Pollere は独立した基盤を保持した。CoDel はその経験を1つの測定可能な失敗に集中させた。待つことが追加のスループットを買わないところでパケットが持続的に待つことである。

抑制された評価は英雄的な評価より強い。Nichols は単独でバッファブロートを解決したわけでも、FQ-CoDel を作成したわけでも、現代のすべての AQM を定義したわけでもない。彼女は、測定と運用上の野心が分野の実践的な語彙を変えたコントローラを共同設計した。

運用者がその仕事から得られる最も有用な文は、同時に最も要求の厳しいものである。真のボトルネックを見つけ、パケットがそこで費やす時間を測定し、キューが経路の恒久的な一部になる前にシグナルを送ることである。