ファイアウォール変数の一意の識別子
システムは、スケーリングを支援するために一意の識別子(UID)を使用します。UID により、システムは、複数のサブスクライバからの設定オブジェクトが同一で、共有できるかどうかを判断できます。フィルタ定義などの多くの状況では、サブスクライバごとに新しいフィルタを作成するのではなく、1 つのフィルタを複数のサブスクライバ間で共有すると、システム リソースの節約に役立ちます。
動的プロファイル内では、UID を使用して構成オブジェクトに名前を付けます。システムは、その構成スタンザ内に含まれるすべての変数と動的プロファイルの名前に基づいて、UID (オブジェクトの名前) の値を割り当てます。割り当てられる UID 値は、文字列 _UID
および一意の番号と組み合わされた UID 名で構成されます。たとえば、UID $my-filter
に値 my-filter_UID1022
が与えられる場合があります。
最初に、オプション uid
を使用して、variable
スタンザの下に UID を定義する必要があります。UIDは、外部から値が割り当てられるすべての変数の後に、最後に定義する必要があります。
dynamic-profile test-profile { variables { ... [other variables] ... [my-filter] { uid; } } }
UID を定義したら、それを使用してオブジェクトに名前を付けることができます。
dynamic-profile test-profile { firewall { family inet { filter [$my-filter] { ... [filter definition that makes use of other variables] ... } } } }
前述のように、システムは、そのフィルターの定義内で使用される変数の値に応じて $my-filter
の値を割り当てます。
UID は、オブジェクトの名前が使用される他の場所でも使用されます。例えば、 $my-filter
を入力フィルターとして使用するインターフェース・スタンザを以下に示します。
dynamic-profile [test-profile] { interfaces { [$junos-interface-ifd-name]" { unit [$junos-interface-unit] { family inet { filter { input [$my-filter]; } } } } } }
それぞれが独自の個別のUIDを使用している限り、同じタイプの複数の構成オブジェクト(つまり、複数のフィルター)を定義できます。名称の割当時に正しいオブジェクトが選択されるようにするには、 uid-reference 変数を使用します。
uid参照を使用すると、効果的に2回評価されます。最初に、uid 参照変数の値が取得されます。次に、その値が UID の名前として使用され、その UID 値が取得されます。UID の名前ではない値を持つ uid 参照は、エラーと見なされます。
uid 参照は、他の変数と同様に定義されます。
dynamic-profile [test-profile] { variables { [my-filter-selector] { uid-reference; } } }
uid参照は、オブジェクトの名前が必要な場所で使用されます。1 つの例は、次のインターフェイス スタンザ内の入力フィルターの名前です。
dynamic-profile [test-profile] { interfaces { [$junos-interface-ifd-name] { unit [$junos-interface-unit] { family inet { filter { input [$my-filter-selector]; } } } } } }
$my-filter-1 と $my-filter-2 という 2 つのパラメーター化されたフィルターが定義されているとします。$myフィルター・セレクター変数には、適切なフィルターに応じて、my-filter-1 または my-filter-2 という値が割り当てられます。