Quality of Service DSCP タグ付けの概要

Quality of Service(QoS)は、帯域幅、レイテンシ、パケットロスなどの要因を制御することで、ネットワーク トラフィックを管理し、重要なアプリケーションのパフォーマンスを確保します。このテクノロジーは、ネットワーク リソースが制限されている場合や輻輳している場合に、特定の種類のネットワーク トラフィックを他のトラフィックよりも優先します。DSCP(Differentiated Services Code Point)タグを使用して、最新の IP ネットワーク上のトラフィックに優先順位を付けることができます。

DSCP タグの使用方法については、DSCP タグを構成するをご覧ください。

下り(外向き)DSCP タグの仕組み

Quality of Service(QoS)は、ネットワーク トラフィックを管理して、帯域幅が低い状況でも重要なアプリケーションが動作するようにします。下り(外向き)DSCP タグを使用すると、IP ヘッダーに DSCP 値でパケットにタグを付けて、優先度レベルをダウンストリーム ネットワーク デバイスに伝達できます。

対応しているワークロード

下り(外向き)DSCP タグは、次の Google Distributed Cloud ワークロードのトラフィックの優先順位付けをサポートしています。

  • コンテナ ワークロード: クラスタで実行されている Kubernetes Pod とサービス。
  • 仮想マシン(VM): デフォルト ネットワークに接続されている VM ランタイムを介して実行される VM ワークロード。

DSCP タグのリソースタイプ

Distributed Cloud は、特定のカスタム リソースを使用して DSCP タグを管理します。これらのオブジェクトを使用して、パケットの優先度を定義します。

  • EgressDSCP: 選択したトラフィック パケットの IP ヘッダーに挿入する特定の DSCP 値を定義するカスタム リソース。このオブジェクトは、0~63 の整数値を受け入れます。
  • TrafficSelector: ネットワーク トラフィック フローを正確に選択するカスタム リソース。このリソースは、0~65535 の優先度整数を受け入れます。 デフォルトは 1000 です。TrafficSelector オブジェクトは EgressDSCP オブジェクトを参照して、識別されたトラフィックに特定のアクションを適用します。Namespace スコープの TrafficSelector を使用する場合でも、ターゲット トラフィックを開始する Pod の Namespace を明示的に識別するには、Namespace セレクタを含める必要があります。

競合の解決

複数の TrafficSelector リソースが同じサブジェクトに適用される場合、システムは特定の階層を使用して優先順位を決定します。システムは、次の原則に従って競合を解決します。

  1. 優先度: システムは、数値的に優先度の値が最も低い TrafficSelector を適用します。
  2. CIDR の範囲の具体性: ルールの優先度が同じ場合、システムは最も具体的な CIDR 制限(最長プレフィックス一致)を持つルールを適用します。
  3. ポートの具体性: ルールの優先度と CIDR の範囲が同じ場合、システムは最も具体的なポートを持つルールを適用します。

より具体的な CIDR ルールの優先度が数値的に高い場合(優先度が低い場合)、システムはより広範なルールを適用し、より具体的なルールを無視します。

シャドウイングの例

同じ宛先に適用される次の 2 つの TrafficSelector ルールについて考えてみましょう。

  • ルール A: 優先度 100、宛先 CIDR 192.168.1.0/24、DSCP 40 をマークします。
  • ルール B: 優先度 200、宛先 CIDR 192.168.1.15/32、DSCP 46 をマークします。

ルール B はより正確な宛先 CIDR (192.168.1.15/32) を指定していますが、優先度の値が数値的に低い(100)ため、システムはルール A を優先します。その結果、システムはルール B を無視し、 192.168.1.15 に送信されるすべての下り(外向き)トラフィックに DSCP タグ 40 を適用します。

制限事項

DSCP タグ機能には、現在の実装に関するいくつかの制約があります。

  • 外部下り(外向き)トラフィック: ワークロードによって開始された下り(外向き)トラフィックや、Kubernetes サービスから外部クライアントへの戻りトラフィックなど、クラスタから送信される north-south トラフィックにのみタグを付けることができます。
  • 内部適用なし: システムはクラスタ内トラフィックにタグを付けますが、Kubernetes はこれらのタグに基づいて QoS ポリシーを内部的に適用しません。
  • マーキングのみ: システムは IP ヘッダーにのみタグを付けます。実際の QoS の適用を処理するように、アップストリームの物理ネットワーク インフラストラクチャを構成する必要があります。
  • サポートされているプロトコル: IPv4 トラフィックにのみタグを付けることができます。
  • サポートされているサービス: LoadBalancer サービスと NodePort サービスのトラフィックにのみタグを付けることができます。
  • 仮想マシン ネットワーク: デフォルト ネットワークに接続されている VM ワークロードにのみタグを付けることができます。
  • 機能の有効化: クラスタ リソースに preview.baremetal.cluster.gke.io/traffic-selector: "enable" アノテーションを追加して、機能を有効にする必要があります。
  • 戻りパスのデフォルト: 戻りパス トラフィックの場合、明示的に構成しない限り、DSCP 値はデフォルトで 0 になります。

セキュリティ上の考慮事項

不正なユーザーが重要でないトラフィックに高い DSCP 値でマークを付けると、クラスタ全体の重要なサービスが中断する可能性があります。

セキュリティ リスクを軽減するには、Kubernetes のロールベース アクセス制御(RBAC)を使用してアクセスを制限します。

  • クラスタ全体の制御: クラスタ スコープの EgressDSCP リソースを作成または変更する権限を、信頼できるクラスタ管理者に制限します。
  • Namespace 制御: Namespace ごとに TrafficSelector リソースを管理することで、ユーザーは特定のワークロードにのみ影響を与えられるようにします。

次のステップ