この度、CDNextに"レートリミット機能"が実装されました。
”レートリミット機能”は、DDoS攻撃に対して効果がありますのでオリジンサーバ保護の観点から有効化することをおすすめします。
※本機能は既存のCDNホストでは自動で有効化はされません。お客様ご自身で有効化する必要がございます。
※新規ホスト作成時は、本機能が有効化された状態で作成されます。
※既存ホストでも、追加で仮想パスを作成した場合、本機能が有効化された状態で作成されます。
■機能仕様
レートリミット機能は、計測を行い一定のアクセス数を超えたものを拒否する機能です。
・測定の範囲について
測定はCDNホスト毎かつ、エッジサーバ(キャッシュサーバ)毎かつ、ソースIPアドレス単位で行われます。
仮想パスA(制限無効化(計測のみ))と仮想パスB(制限有効)が設定されている状況で、仮想パスAで制限を超えるアクセスを受けた場合、仮想パスAは特にアクセス制限はされませんが、仮想パスBはアクセス制限されます。
これはCDNホスト毎に測定されますので同じCDNホストの他の仮想パスのアクセス状況に影響を受けます。
他のCDNホストでの測定結果はご利用のCDNホストには影響しません。
・測定値について
制限をかける上限は、許容レートと許容バーストの組み合わせで設定されます。
■基本設定
・許容レート:秒間あたりのアクセス数の上限。超えるとキューに入れられます。デフォルトは100r/sです。
r=リクエスト s=秒です。 100r/s は秒間100リクエストとなります。
・許容バースト:キューを保持する為のスロットルの上限値です。 デフォルトは3000になります。
・ログ出力:設定した上限を超過した場合にLTSVフォーマットログに出力されます。
出力フィールド:user-data
出力内容:制限無効(測定のみ):rate_limit:soft_hit
制限有効 :rate_limit:hard_hit
・除外ポリシー:レートリミット機能を除外するIPアドレス等を設定できます。ACLでリストを作成する必要があります。
■仮想パス
・レートリミット:機能の有効・無効を選択します。無効であっても測定は行います。
デフォルトでは制限が有効になっております。
・上限の考え方
許容レート:100r/s 、許容バースト:3000 の設定を行った場合、あるソースIPアドレスからのアクセスが100r/sであれば正常に処理されますが、例えば400r/sに増大した場合、秒間で300rがスロットを消費しキューに入ります。
400r/sが続いた場合、約10秒後にはスロットルの上限(3000)を超えキューが貯められず、拒否されるアクセスが発生します。拒否されたアクセスは、CDNextより「429 Too Many Requests」を受け取ります。
① 1- 5秒:100r/s
② 6-20秒 :400r/s
③21-25秒 :100r/s
④25-以降 :50r/s
・許容レートについて
秒間の処理数と表現していますが例えば100r/sの場合、0.01秒に1リクエストを処理をします。
同タイミングで複数のリクエストが来た場合、許容バーストで設定されているスロット数を上限にキューに貯め処理を行います。
・キューに入ったアクセスの処理
キューに入ったアクセスは許容レートに影響受けず即時に処理されます。
ですのでキューに入ったアクセスが大きく遅延することはありません。
・スロットルの解放
キューが処理されたスロットルはすぐには解放されません。
解放は許容レートと同じレートで解放されます。100r/sであれば0.01秒に1つ解放されます。
■考慮が必要なケース
下記のような同一IPアドレスからアクセスがあるケースの場合は、レートリミットが正常に利用できない可能性がありますのでご注意下さい。
・APIを提供しているケース
・経路上、CDNextの前に経由するシステムがあるケース(WAF等)
※x-forwatred-forでの検知は現状、対応していません。