ファイアウォール変数の一意の識別子
システムは、一意の識別子(UID)を使用してスケーリングを支援します。UIDにより、複数の加入者の設定オブジェクトが同一で共有できるタイミングをシステムが判断できます。フィルター定義などの多くの状況では、すべての加入者に対して新しいフィルターを作成するのではなく、単一のフィルターを複数の加入者間で共有することで、システム リソースを節約できます。
動的プロファイル内では、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-reference を使用すると、効果的に 2 回評価されます。まず、uid-reference 変数の値を取得します。次に、その値がUIDの名前として使用され、そのUID値が取得されます。UIDの名前ではない値を持つuid-referenceはエラーと見なされます。
uid-reference は、他の変数と同様に定義されます。
dynamic-profile [test-profile] {
variables {
[my-filter-selector] {
uid-reference;
}
}
}
uid-referenceは、オブジェクトの名前が必要な場所ならどこでも使用されます。一例として、以下のインターフェイススタンザの入力フィルターの名前があります。
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-filter-selector変数に値my-filter-1またはmy-filter-2が割り当てられる場合があります。