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-entriesclear dhcp server lockout-entriesclear dhcpv6 relay lockout-entriesclear dhcpv6 server lockout-entries
ロックアウト中のクライアントセッションが設定されているFPCをリセットします。
ルーティングエンジンをリセットします。
これらのイベントのいずれかが発生すると、jdhcpd はロックアウトを終了し、影響を受けるすべてのクライアント・セッションのロックアウト履歴をクリアします。リリースされたクライアントは、再度ネゴシエートすることができます。保持履歴がないため、これらのクライアントのいずれかで後続の短サイクル・イベントが発生した場合、ロックアウト期間は最小値から開始されます。
remove-when-no-subscribersで設定された基盤となる物理インターフェイスから動的VLANまたはdemux VLAN論理インターフェイスが削除されると、影響を受けるクライアントのロックアウトは、すべてのタイマーが期限切れになるまで持続します。すべてのタイマーが期限切れになる前に論理インターフェイスが再作成された場合、再作成された論理インターフェイスにロックアウト状態が適用されます。
DHCPショートサイクル保護を使用するメリット
ルーターへのコントロールプレーンの過度の負荷と、外部権限サーバーへの認証、許可、プロビジョニングの負荷を軽減します。
DHCP制御パケットの処理や、短時間の接続のネゴシエーションと終了に必要なリソースを削減します。
クライアントセッションが失敗した、または短命なクライアントのその後の試行を一時的に延期し、セッションが正常に完了し、短期間以上続くことができるようにします。
RADIUSやDiameterなどの外部認証サーバーでこれらの接続を認証して終了するために必要なリソースを削減します。
同じインターフェイス上の他のDHCPセッションを中断することなく、失敗した単一のDHCPセッションまたは短命のDHCPセッションのロックアウトを有効にします。
DHCP ショートサイクル保護は、固有のクライアント ID によって各クライアント セッションを識別するため、ルーターは問題のある 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短周期保護の検証と管理
目的
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
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。