Citrix ADC

パターンセットとデータセットでの文字列マッチングの仕組み

パターンセットまたはデータセットにはパターンのセットが含まれており、各パターンには一意のインデックスが割り当てられます。ポリシーがパケットに適用されると、式によって評価される文字列が識別され、演算子は、一致する文字列が見つかるか、すべてのパターンが比較されるまで、その文字列をパターンセットまたはデータセットで定義されたパターンと比較します。次に、その関数に応じて、演算子は、一致するパターンが見つかったかどうかを示すブール値、または文字列に一致するパターンのインデックスを返します。

注記: このトピックでは、パターンセットの作業について説明します。データセットは同じように動作します。パターンセットとデータセットの唯一の違いは、セットで定義されたパターンのタイプです。

パターンが文字列マッチングにどのように使用できるかを理解するために、次のユースケースを考えてみましょう。

URL サフィックス(ターゲットテキスト)に画像ファイル拡張子が含まれているかどうかを調べます。パターンセットを使用しない場合は、次のように複雑な式を定義する必要があります。

HTTP.REQ.URL.SUFFIX.CONTAINS("svg") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("bmp") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("png") ¦¦
HTTP.REQ.URL.SUFFIX.CONTAINS("gif") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("tiff") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("jpg")

URLのサフィックスが「jpg」で、上記の複合式がある場合、Citrix ADCアプライアンスは複合式全体を順番に反復処理して、要求がjpgイメージを参照しているかどうかを判断する必要があります。次の図は、プロセスの手順を示しています。

ローカライズされた画像

複合式に数百のサブ式が含まれている場合、上記のプロセスはリソースを大量に消費します。次の図に示すように、パターンセットを呼び出す式が適しています。

ローカライズされた画像

上記のようなポリシー評価中、演算子(CONTAINS_ANY)は、一致が見つかるまで、リクエストで識別された文字列とパターンセットで定義されたパターンを比較します。Sample_Patset 式を使用すると、6 つのサブ式による複数の反復が 1 つに削減されます。

複数の OR 演算で文字列マッチングを実行する複合式を設定する必要がなくなるため、パターンセットまたはデータセットは構成を簡素化し、要求と応答の処理を高速化します。

パターンセットとデータセットでの文字列マッチングの仕組み