DHCPショートサイクル保護
頻繁な短時間または失敗したクライアントセッションに対するDHCPショートサイクル保護
高度に拡張されたネットワークでは、セッションが確立される前にかなりの数のDHCPクライアントネゴシエーションが失敗し、ルーターや外部認証サーバーの負荷が高くなります。CPE デバイスの中には、失敗時に自動的にネゴシエーションを再試行するものもあれば、再試行間隔が非常に短いものもあります。悪意のあるクライアントは、ログイン要求を頻繁に繰り返し送信することで、認証攻撃を仕掛ける可能性があります。これらのイベントは、ルータと外部認証サーバに大きな負荷をもたらす可能性があります。
Junos OS リリース 18.2R1 以降、 DHCP ショート サイクル保護( DHCP クライアント ロックアウトとも呼ばれる)により、ネゴシエーションに失敗し続けてネゴシエーション サイクルが短いクライアントや、頻繁に接続を完了するがログイン後すぐにログアウトするクライアントを特定して一時的にロックアウトすることで、ルーターはこれらの負荷を軽減できます。
特定されたクライアントは、指数関数的に増加する ロックアウト期間の間、一時的にロックアウトすることで、アクセスできなくなります。これらのクライアントがロックアウトされている間、ルーターはこれらのクライアントからの DHCP 検出または要請メッセージをドロップします。ルーターは、DHCPv4 クライアントのクライアント識別子または DHCPv6 クライアントの DHCP意の識別子(DUID)でクライアントを追跡します。どちらの種類のクライアント識別子も、クライアントキーと呼ばれます。クライアント キーにより、DHCP サーバーはクライアントをそのリースおよび構成パラメータに関連付けることができます。DHCP の短いサイクル保護トラッキングにクライアント キーを使用すると、ルーターは、1 つのクライアントによるセッションのネゴシエーションを防ぎながら、同じ論理インターフェイスを使用する他のクライアントによるセッションのネゴシエーションを成功に導くことができます。
クライアントの初期ロックアウト期間は短いです。ここでの目標は、正規のクライアント、たとえば、一度だけ失敗したクライアントや、定期的にログインしてメールを確認し、再度ログアウトするクライアントに悪影響を与えないことです。ネゴシエーションに連続して失敗するクライアントや、短い間隔で頻繁にログインとログアウトを行うクライアントをターゲットにすることで、ルータの接続処理の負荷と外部認証サーバの認証の負荷の両方を軽減します。これは、進行しないクライアントセッションを遅らせて、完了したセッションに優先させることで、スループットを向上させる効果があります。
DHCP クライアント セッションの失敗または短命の原因となる状態
クライアント セッションの失敗または短時間の存続を引き起こす可能性のある条件には、次のようなものがあります。
RADIUS データベースに対応するエントリがない、または不適切なログイン試行が原因で、RADIUS や Diameter などの外部 AAA サーバからの認証が拒否される。
ネットワーク障害または設定ミスにより、ルーターまたは外部認証サーバーに到達できません。
動的加入者インターフェイスを作成するためのメモリリソースが不足しています。
CPE とのプロトコル ネゴシエーションの失敗。
ログインが成功した直後にクライアントがログアウトします。このアクションにより、セッションが破棄される前に、完全にネゴシエートされ、設定されたクライアントセッションが作成されます。
DHCP ショートサイクル保護のしくみ
DHCP ショートサイクル保護は、デフォルトでルーターで無効になっています。グローバル、グループ、またはインターフェイスレベルで short-cycle-protection
ステートメントを含めて有効にすると、ルーターは静的および動的論理インターフェイス上のDHCPセッションに対して次のことを行います。
短期間のクライアント セッション ( 短いサイクル イベントとも呼ばれる) を検出し、次のイベントに基づいてクライアントをロックアウトします。
E0: jdhcpd がクライアントセッションをアクティブであると宣言した時刻。
E1: jdhcpd がクライアントセッションを破棄する必要があると宣言した時刻。
E2: jdhcpd がデータベースからクライアントセッションエントリを削除する時刻。
E0 と E1 の間の間隔が 60 秒以下の場合、ショート サイクル イベントが発生します。間隔が 60 秒を超えると、ログアウトは正常と見なされます。ルーターがセッションの存続期間が短いと宣言すると、時刻 E2 にクライアントをロックアウト データベースに追加します。
ルーターへの接続を阻止することで、指定されたDHCPクライアントを一時的にロックアウトします。
ロックアウト中、ルーターはロックアウト期間が終了するまで、クライアントからのネゴシエーション パケット(DHCP 検出および送信要求メッセージ)をドロップします。ロックアウト期間が終了すると、クライアントは接続の通常のネゴシエーションを再開できます。
short-cycle-protection
ステートメントで最小長と最大長を指定することで、ロックアウト期間の範囲を設定できます。最小値と最大値の両方を指定する必要があります。クライアントが繰り返す短いサイクル イベント間の時間を追跡して、後続の短いサイクル イベントのロックアウト時間を増やすかどうかを決定します。イベント間の間隔は、 猶予時間のしきい値と比較されます。デフォルトでは、猶予時間のしきい値は 900 秒ですが、その値が 900 秒を超えると、最大ロックアウト時間に自動的に設定されます。
猶予時間内に後続のネゴシエーションが試行されない場合、クライアントエントリはロックアウトデータベースから削除されます。
猶予しきい値に達する前に後続のネゴシエーションが試行されると、別の短いサイクル イベントとして扱われ、ロックアウト ペナルティが増加します。ペナルティは、猶予時間内にネゴシエーションが試行されるたびに指数関数的に増加します。
初期ロックアウト期間は、構成された最小値に基づきます。追加のペナルティは以下のように計算されます。ここで、 n は猶予時間内に連続して発生するショートサイクルイベントの数です。
ロックアウト時間 = (ロックアウト最小時間) x [2(n-1)]
たとえば、最小期間が 1 秒、最大期間が 300 秒の場合、最初のロックアウト期間は 1 秒です。その後のペナルティは、2秒、4秒、8秒、16秒、32秒、64秒、128秒、256秒、最後に300秒に増加します。最終的なロックアウト期間は、ペナルティがロックアウト範囲の最大値を超えることができないため、512 秒ではなく 300 秒です。
ロックアウト時間が最大値に達すると、短いサイクル イベントの間隔が猶予しきい値を超えるまで、後続の各ロックアウト期間でその値にとどまります。
ロックアウト条件の終了
DHCP クライアントがロックアウトされると、ロックアウト状態は、次のいずれかが発生する 場合を除き 、すべてのロックアウト タイマーが終了するまで持続します。
ロックアウト条件を管理上クリアするには、以下の操作コマンドのいずれかを発行します。
clear dhcp relay lockout-entries
clear dhcp server lockout-entries
clear dhcpv6 relay lockout-entries
clear dhcpv6 server lockout-entries
ロックアウト中のクライアント セッションが設定されている FPC をリセットします。
ルーティングエンジンをリセットします。
これらのイベントのいずれかが発生すると、jdhcpd はロックアウトを終了し、影響を受けるすべてのクライアントセッションのロックアウト履歴をクリアします。解放されたクライアントは、再度ネゴシエートできます。保持される履歴がないため、これらのクライアントの 1 つで後続の短いサイクル イベントが発生した場合、ロックアウト期間は最小値から開始されます。
remove-when-no-subscribers
で設定された基盤となる物理インターフェイスから、動的VLANまたはデモックスVLAN論理インターフェイスが削除された場合、影響を受けるクライアントのロックアウトは、すべてのタイマーが終了するまで持続します。すべてのタイマーが期限切れになる前に論理インターフェイスが再作成された場合、ロックアウト状態は再作成された論理インターフェイスに適用されます。
DHCPショートサイクル保護を使用する利点
ルーター上のコントロール プレーンの過度な負荷と、外部認証機関サーバーでの認証、許可、プロビジョニングの負荷を軽減します。
DHCP 制御パケットの処理と、短時間の接続のネゴシエートと終了に必要なリソースを削減します。
クライアントセッションが失敗した、または存続期間が短いクライアントの後続の試行を一時的に延期し、セッションが正常に完了し、短期間以上続くようにします。
RADIUS や Diameter などの外部認証サーバー上でこれらの接続を認証および終了するために必要なリソースを削減します。
同じインターフェイス上の他のDHCPセッションを中断することなく、単一の障害または短時間のDHCPセッションのロックアウトを有効にします。
DHCP ショート サイクル保護は、各クライアント セッションを一意のクライアント ID で識別するため、ルーターは問題のある DHCP クライアントのみをロックアウトし、同じインターフェイス上の他の DHCP クライアントが接続を正常にネゴシエートできるようにします。
DHCP ショートサイクル保護の設定
高度に拡張されたネットワークでは、セッションが確立される前にかなりの数のDHCPクライアントネゴシエーションが失敗し、ルーターや外部認証サーバーの負荷が高くなります。ルータで DHCP ショート サイクル保護を有効にして、頻繁かつ短時間ログインする DHCP クライアント、または連続して接続に失敗する DHCP クライアントを識別し、ロックアウト タイマーが終了するまで、クライアントをアクセスからロックアウトして、これらのクライアントからの後続の要求をドロップできます。頻繁かつ短時間繰り返しログインするクライアントの場合、最初のロックアウト時間は、目立った影響がないほど短いです。このような短時間のログインが続くと、ロックアウト期間は指数関数的に長くなります。ネゴシエーションに連続して失敗するクライアントや、短い間隔で頻繁にログインとログアウトを行うクライアントをターゲットにすることで、短いサイクル保護は、ルーターの接続処理の負荷と、外部認証サーバーの認証、許可、プロビジョニングの負荷を軽減します。
DHCPv4 リレー、DHCPv6 リレー、DHCPv4 ローカル サーバー、および DHCPv6 ローカル サーバーのロックアウト期間の範囲を設定できます。この期間は、すべてのリレー エージェントまたはローカル サーバ インターフェイス、インターフェイスのグループ、またはグループ内の特定のインターフェイスに対してグローバルに設定できます。DHCPv4リレーおよびローカルサーバーの場合、デュアルスタックグループのロックアウトを設定することもできます。
短いサイクル保護を有効にする場合は、ロックアウト期間の最小期間と最大期間の両方を指定する必要があります。
DHCPv4 リレー エージェントのロックアウト範囲を設定するには、次の手順に従います。
最小および最大ロックアウト時間を指定します。
すべての DHCPv4 リレー エージェントの場合:
[edit forwarding-options dhcp-relay] user@host# set short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv4 リレー インターフェイスの特定のグループ:
[edit forwarding-options dhcp-relay] user@host# set group group-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv4リレーインターフェイスの指定されたグループ内の特定のインターフェイスの場合:
[edit forwarding-options dhcp-relay] user@host# set group group-name interface interface-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv4 リレー デュアルスタック グループの場合:
[edit forwarding-options dhcp-relay] user@host# set dual-stack-group dual-stack-group-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds
DHCPv6 リレー エージェントのロックアウト範囲を設定するには、次の手順を実行します。
最小および最大ロックアウト時間を指定します。
すべての DHCPv6 リレー エージェントの場合:
[edit forwarding-options dhcp-relay dhcpv6] user@host# set short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv6 リレー インターフェイスの特定のグループ:
[edit forwarding-options dhcp-relay dhcpv6] user@host# set group group-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv6 リレー インターフェイスの指定されたグループ内の特定のインターフェイスの場合:
[edit forwarding-options dhcp-relay dhcpv6] user@host# set group group-name interface interface-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv4 ローカル サーバーのロックアウト範囲を設定するには、次の手順を実行します。
最小および最大ロックアウト時間を指定します。
すべての DHCPv4 ローカル サーバーの場合:
[edit system services dhcp-local-server] user@host# set short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv4 ローカル サーバー インターフェイスの特定のグループ:
[edit system services dhcp-local-server] user@host# set group group-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv4 ローカル サーバ インターフェイスの指定されたグループ内の特定のインターフェイスの場合:
[edit system services dhcp-local-server] user@host# set group group-name interface interface-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv4ローカルサーバーデュアルスタックグループの場合:
[edit system services dhcp-local-server] user@host# set dual-stack-group dual-stack-group-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv6 ローカル サーバーのロックアウト範囲を設定するには、次の手順に従います。
最小および最大ロックアウト時間を指定します。
すべての DHCPv6 ローカル サーバーの場合:
[edit system services dhcp-local-server dhcpv6] user@host# set short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv6 ローカル サーバ インターフェイスの特定のグループ:
[edit system services dhcp-local-server dhcpv6] user@host# set group group-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCPv6 ローカル サーバ インターフェイスの指定されたグループ内の特定のインターフェイスの場合:
[edit system services dhcp-local-server dhcpv6] user@host# set group group-name interface interface-name short-cycle-protection <lockout-max-time seconds> <lockout-min-time seconds>
DHCP Short-Cycle Protection の検証と管理
目的
DHCP の短いサイクル保護操作に関する情報を表示またはクリアします。
サポートされている show
コマンドと clear
コマンドを使用して、DHCP リレー エージェントと DHCP ローカル サーバーの短いサイクルの保護操作に関する情報を管理および表示します。ロックアウトされたすべてのエントリに関する情報、またはデータベースインデックス番号で識別される個々のエントリのみに関する情報を表示することができます。
アクション
DHCPv4 または DHCPv6 リレー エージェントのショート サイクル保護情報を表示するには、次の手順を実行します。
user@host> show dhcp relay lockout-entries (all | index index) user@host> show dhcpv6 relay lockout-entries (all | index index)
DHCPv4 または DHCPv6 リレー エージェントのショート サイクル保護情報をクリアするには、次の手順に従います。
user@host> clear dhcp relay lockout-entries (all | index index) user@host> clear dhcpv6 relay lockout-entries (all | index index)
DHCPv4 または DHCPv6 ローカル サーバーの短いサイクル保護情報を表示するには、次の手順に従います。
user@host> show dhcp server lockout-entries (all | index index) user@host> show dhcpv6 server lockout-entries (all | index index)
DHCPv4 または DHCPv6 ローカル サーバーのショート サイクル保護情報をクリアするには、次の手順に従います。
user@host> clear dhcp server lockout-entries (all | index index) user@host> clear dhcpv6 server lockout-entries (all | index index)
意味
これらの show
コマンドに all
オプションを含めると、ロックアウト データベース内の各クライアント エントリに関する情報が提供されます。たとえば、データベース内のエントリに対応するインデックス番号、クライアント識別キー、ロックアウトの状態、現在の状態が終了するまでの秒数、現在の状態が有効な期間などです。 クライアントが連続してロックアウトされた回数。
特定のクライアントのロックアウト・データベースから情報を除去する場合は、まず、対応する show
コマンドを all
オプションを指定して発行し、クライアント・エントリーの索引を決定する必要があります。次に、 clear
コマンドでそのインデックスを指定できます。
次の例では、DHCPv4 リレー エージェントが特定のクライアントのインデックス番号を検索するために、ロックアウトされたすべてのクライアント エントリを表示し、そのエントリのみをクリアして、それが削除されたことを確認します。
user@host> show dhcp relay lockout-entries all Index Key State Expires(s) Elapsed(s) Count 1 00:00:5E:00:53:00 LT 30 5200 2 2 00:00:5E:00:53:11 GT 120 780 2 3 00:00:5E:00:53:22 LT 180 2300 1 user@host> clear dhcp relay lockout-entries index 2 user@host> show dhcp relay lockout-entries all Index Key State Expires(s) Elapsed(s) Count 1 00:00:5E:00:53:00 LT 30 5200 2 3 00:00:5E:00:53:22 LT 180 2300 1
次の例では、DHCPv6 ローカル サーバーのロックアウトされたクライアント エントリをすべて表示し、すべてのエントリをクリアして、それらが削除されていることを確認します。
user@host> show dhcp relay lockout-entries all Index Key State Expires(s) Elapsed(s) Count 1 00:00:5E:00:53:00 LT 30 5200 2 2 00:00:5E:00:53:11 GT 120 780 2 3 00:00:5E:00:53:22 LT 180 2300 1 user@host> clear dhcp relay lockout-entries all user@host> show dhcp relay lockout-entries all
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。