Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Benutzerdefinierte Variablen in dynamischen Profilen

Benutzerdefinierte Variablen

In dynamischen Serviceprofilen ermöglicht Ihnen Junos OS die Konfiguration benutzerdefinierter Variablen auf Hierarchieebene [edit dynamic-profiles profile-name variables] und die Verwendung dieser Variablen in der [edit dynamic-profiles] Hierarchie. Das dynamische Profil ruft Daten für diese Variablen von einem externen Server (z. B. RADIUS) während des Authentifizierungsprozesses des Anwenders ab und ersetzt sie. Zur Laufzeit werden die Variablen durch tatsächliche Werte ersetzt und zur Konfiguration von Anwender-Schnittstellen verwendet.

Sie können eine der folgenden Anweisungen verwenden, um benutzerdefinierte Variablen zu konfigurieren:

  • default-value– Konfigurieren Sie einen Standardwert für eine benutzerdefinierte Variable in einem dynamischen Profil. Die Werte, die das System für diese Variablen verwendet, werden angewendet, wenn sich der Anwender authentifiziert. Durch Angabe eines Standardwerts wird eine eigenständige Konfiguration für die zugeordnete Anweisung oder eine Sicherung für die Anweisungskonfiguration bereitgestellt, wenn auf den externen Server nicht zugegriffen werden kann oder kein Wert für die Variable vorhanden ist.

  • equals– Konfigurieren Sie einen Ausdruck für eine benutzerdefinierte Variable, der zur Laufzeit ausgewertet und als Variablenwert zurückgegeben wird.

  • mandatory– Geben Sie an, dass ein externer Server (z. B. RADIUS) einen Wert für die benutzerdefinierte Variable zurückgeben muss. Wenn der externe Server keinen Wert für die Variable zurückgibt, schlägt das dynamische Profil fehl.

  • uid– Konfigurieren Sie eine eindeutige ID für parametrisierte Filter und CoS in einem dynamischen Profil, das für Services erstellt wurde.

  • uid-reference– Konfigurieren Sie eine Variable, die eine eindeutige ID für parametrisierte Filter oder CoS in einem dynamischen Profil referenziert, das für Services erstellt wurde.

Hinweis:

Die Reihenfolge, in der Sie definieren, wie Variablen abgerufen werden, ist wichtig. Um sicherzustellen, dass Sie alle obligatorischen Variablen von einem externen Server erhalten und keine Werte von Standardwerten oder durch Variablenausdrücke ableiten, müssen Sie zuerst alle obligatorischen Variablen definieren.

Konfigurieren benutzerdefinierter dynamischer Variablen in dynamischen Profilen

In diesem Thema wird erläutert, wie eine benutzerdefinierte dynamische Variable in einem dynamischen Dienstprofil konfiguriert wird. Sie können auf der Hierarchieebene eine Variable definieren, die [edit dynamic-profiles profile-name variables] an anderer Stelle im dynamischen Serviceprofil verwendet wird. Sie können optional einen Standardwert für jede dynamische Variable angeben, die im Text des dynamischen Profils angezeigt wird. Die Standardvariablenwerte werden verwendet, wenn der Router nicht auf einen externen Server (z. B. RADIUS) zugreifen oder anderweitig einen Wert zur Verwendung als dynamische Variable abrufen kann. Alternativ können Sie angeben, dass die Verwendung eines von RADIUS zurückgegebenen Werts obligatorisch ist. Wenn dieser Wert nicht empfangen wird, schlägt das Profil fehl.

Bevor Sie Standardwerte für dynamische Variablen konfigurieren:

  1. Erstellen Sie ein einfaches dynamisches Profil.

    Siehe Konfigurieren eines grundlegenden dynamischen Profils.

  2. Stellen Sie sicher, dass der Router so konfiguriert ist, dass die Kommunikation zwischen dem Client und dem RADIUS-Server möglich ist.

    Siehe Authentifizierungs- und Kontoführungsmethoden für den Anwenderzugriff angeben.

  3. Konfigurieren Sie alle RADIUS-Werte, die die Profile bei der Validierung von Abonnenten verwenden sollen.

    Siehe RADIUS-Server und Parameter für den Anwenderzugriff.

So konfigurieren Sie Variablen in einem dynamischen Dienstprofil:

  1. Greifen Sie auf die variables Zeilengruppe im gewünschten dynamischen Serviceprofil zu.
  2. Definieren Sie die Variable.
  3. (Optional) Geben Sie einen Standardwert für die Variable an, falls der Router den externen Server nicht kontaktieren kann oder wenn der externe Server keinen Wert für das zugewiesene Attribut enthält.
  4. (Optional) Geben Sie an, dass der externe Server einen Wert für eine benutzerdefinierte Variable zurückgeben muss. Wenn Sie die mandatory Anweisung einschließen und der externe Server keinen Wert für die Variable zurückgibt, schlägt das dynamische Dienstprofil fehl.

Verwenden von Variablenausdrücken in benutzerdefinierten Variablen

Mit Junos OS können Sie Ausdrücke – Gruppen von arithmetischen Operatoren, Zeichenfolgenoperatoren und Operanden – für die Verwendung als Variablen in dynamischen Profilen erstellen. Sie konfigurieren Variablenausdrücke auf Hierarchieebene [dynamic-profiles profile-name variables] . Zur Laufzeit werden die Variablenausdrücke berechnet und als Variablenwerte zur Konfiguration dynamischer Anwender Schnittstellen verwendet.

Beim Konfigurieren von Ausdrücken in dynamischen Profilen müssen Sie die folgenden Regeln beachten:

  • Sie können Ausdrücke nur innerhalb eines variablen Zeilenbereichs eines dynamischen Profils konfigurieren.

  • Dynamische Profile, die Ausdrücke für benutzerdefinierte Variablen enthalten, dürfen nur für die Serviceaktivierung verwendet werden.

  • In der Regel weisen Sie nur benutzerdefinierten Variablen Ausdrücke zu. Sie können internen Variablen oder vordefinierten Variablen keine Ausdrücke zuweisen.

  • Ausdruckswerte haben Vorrang vor Standardwerten.

  • Ganze Ausdrücke müssen in Anführungszeichen (" ") enthalten sein.

  • Zeichenfolgen in den Ausdrücken müssen in einfachen Anführungszeichen (' ') gesetzt werden, und die einfachen Anführungszeichen dürfen nur Zeichenfolgen enthalten.

  • Leerzeichen werden als Trennzeichen für alle Operanden und Operatoren behandelt. Zeichenfolgen, die Leerzeichen enthalten, die Sie in Ausdrücken erstellen, werden als einzelne Zeichenfolgen behandelt und enthalten alle führenden oder nachfolgenden Leerzeichen. So erstellen Sie beispielsweise ein Serviceprofil:

  • Der Ausdruck muss entweder alle arithmetischen Operatoren oder alle Zeichenfolgenoperatoren sein; Das Mischen von arithmetischen Operatoren und Zeichenfolgenoperatoren ist nur zulässig, wenn sie ordnungsgemäß in den richtigen Typ konvertiert wurden.

  • Ausdrücke können auf andere vom System vordefinierte Variablen oder andere benutzerdefinierte Variablen verweisen. Es ist jedoch kein Zirkelverweis zwischen Variablen zulässig. Beispielsweise ist der folgende Verweis falsch:

  • Verwenden Sie das folgende Format, um eine dynamische Schnittstelle und ein Schnittstellenset für die BNG-CUPS-Benutzerebene zu erstellen:

    Sie können die Rangfolge von Dienstfiltern für die BNG-CUPS-Benutzerebene konfigurieren, um die Dienstauswertungsreihenfolge für die Pakete zu steuern. Sie können die Rangfolgenkonfiguration zum dynamischen Profil hinzufügen.

  • Jede obligatorische Variable, die keinen "default"-Wert oder keinen "equals"-Ausdruck enthält, muss im Rahmen der Serviceaktivierung einen Wert enthalten. Beispielsweise ist ein RADIUS-Service-VSA wie "service-video( value1, value2)", der zwei oder weniger obligatorische Variablen in der dynamischen Serviceprofildefinition "service-video" enthält, erfolgreich. Die Dienstaktivierung schlägt fehl, wenn mindestens einer obligatorischen Variablen kein Wert zugeordnet ist, entweder durch die Attributauswertung "default" oder "equals".

Tabelle 1 listet unterstützte Operatoren und Funktionen auf, die Sie zum Erstellen von Ausdrücken verwenden können. Präzedenzfall 5 ist die höchste Ebene.

Tabelle 1: Operatoren und Funktionen

Betrieb

Betreiber

Assoziativität

Vorrang

Aktion

Arithmetische Addition

+

Links

1

Addiert die Elemente rechts und links vom Operator zusammen.

Arithmetische Subtraktion

-

Links

1

Subtrahiert das Element rechts vom Operator von dem Element links vom Operator.

Arithmetische Multiplikation

*

Links

2

Multipliziert das Element links vom Operator mit dem Element rechts vom Operator.

Arithmetische Division

/

Links

2

Division des Elements links vom Operator durch das Element rechts vom Operator.

Arithmetisches Modulo

%

Links

2

Division des Elements links vom Operator durch das Element rechts vom Operator und gibt den ganzzahligen Rest zurück. Wenn das Element links vom Operator kleiner ist als das Element rechts vom Operator, ist das Ergebnis das Element links vom Operator.

Verkettung

##

Links

3

Erstellt eine neue Zeichenfolge, indem die Zeichenfolgenwerte links neben dem Operator und die Werte rechts vom Operator miteinander verbunden werden.

Maximal

max(param1,param2)

Links

4

Akzeptiert das Maximum der beiden als Parameter übergebenen Werte.

Mindestanforderungen

min(param1,param2)

Links

4

Verwendet das Minimum der beiden als Parameter übergebenen Werte.

Rund

rund (param1)

-

4

Rundet den Wert auf die nächste ganze Zahl.

Abschneiden

trunc(param1)

-

4

Schneidet einen nicht ganzzahligen Wert auf den Wert links vom Dezimaltrennzeichen ab.

In Zeichenfolge konvertieren

toStr(param1)

-

4

Konvertiert die Variable in den Klammern in eine NULL-terminierte Zeichenfolge.

In Ganzzahl konvertieren

toInt(param1)

-

4

Konvertiert den Parameter in eine ganze Zahl. Eine einzelne Zeichenfolge oder Variable ist als Parameter zulässig.

Zufällig

rand()

-

4

Generiert einen zufälligen numerischen Wert.

Wenn nicht Null

ifNotZero(param1, param2)

Links

4

Gibt den zweiten Parameter zurück, wenn der erste Parameter nicht Null ist. Gibt NULL zurück, wenn der erste Parameter Null ist.

Klammern

( )

-

5

Gruppiert Operanden und Operatoren, um Ergebnisse zu erzielen, die sich von der einfachen Rangfolge unterscheiden. hat effektiv die höchste Priorität.

Ausdrücke werden ausgewertet, nachdem Variablen mit Werten aufgefüllt wurden. Die Auswertung erfolgt unmittelbar vor der Profilinstanziierung und umfasst eine Wertprüfung. Wenn die berechneten Werte nicht akzeptabel sind oder die Regeln für die Ausdruckssyntax verletzt werden, schlägt die Ausdrucksauswertung fehl, die Profilinstanziierung findet nicht statt, und es werden Meldungen protokolliert, um die Fehler zu beschreiben.

Tabelle 2 listet die möglichen Ausdrucksfehlerszenarien und die von der Router-Software ausgeführten Maßnahmen auf.

Tabelle 2: Ausdrucksfehler und -aktionen

Fehler

Auftreten

Aktion

Variabler Wert

Analysefehler

Commit-Check-Phase

Commit schlägt fehl

Nicht zutreffend

Abhängigkeitsfehler bei zirkulären Variablen

Commit-Check-Phase

Commit schlägt fehl

Nicht zutreffend

Variablen innerhalb der Ausdrücke sind nicht definiert

Commit-Check-Phase

Commit schlägt fehl

Nicht zutreffend

Durch Null teilen

Instanziierung von Profilen

Die Profilinstanziierung schlägt fehl

Null (0)

Hinzufügen einer Zeichenfolge zu einer Zahl

Instanziierung von Profilen

Die Profilinstanziierung schlägt fehl

Null (0)

Überlauffehler

Instanziierung von Profilen

Die Profilinstanziierung schlägt fehl

Undefiniert

Fehler beim Unterlauf

Instanziierung von Profilen

Die Profilinstanziierung schlägt fehl

Undefiniert

Sie können die benutzerdefinierten Variablen auch mit einem Standardwert konfigurieren. Der Standardwert bietet eine eigenständige Konfiguration für die zugeordnete Anweisung oder eine Sicherung für die Anweisungskonfiguration, wenn auf den RADIUS-Server nicht zugegriffen werden kann oder das VSA-Attribut keinen Wert enthält.

Änderungshistorie für Variablenausdrücke in benutzerdefinierten Variablen

Die Unterstützung der Funktion hängt von der Plattform und der Version ab, die Sie benutzen. Verwenden Sie den Feature-Explorer , um festzustellen, ob eine Funktion auf Ihrer Plattform unterstützt wird.

Tabelle 3: Änderungsverlauf für Variablenausdrücke in benutzerdefinierten Variablen
Versionsbeschreibung
19.3

Ab Junos OS Version 19.3R1 können Sie Ausdrücke in der predefined-variable-defaults Anweisung in einem dynamischen Profil konfigurieren. Siehe Vordefinierte Variablenvorgaben für dynamische Clientprofile.

Sie können auch eine begrenzte Anzahl von Ausdrücken konfigurieren, um Standardwerte für vordefinierte Variablen festzulegen. Siehe Vordefinierte Variablenvorgaben für dynamische Clientprofile.

25.2 Junos OS weiterentwickelt

Ab Junos OS Evolved Version 25.2R1 können Sie die Priorität von Schnittstellen- und Familieneingabe- oder Ausgabefiltern (inet, inet6) für dynamische Profile im BNG-CUPS-Benutzerebenenmodus konfigurieren.

Konfigurieren von Variablenausdrücken in dynamischen Profilen

Sie können Ausdrücke – Gruppen von arithmetischen Operatoren, Zeichenfolgenoperatoren und Operanden – erstellen, die als Variablen in dynamischen Profilen verwendet werden. Diese Ausdrücke werden als Variablenwerte verwendet, um dynamische Schnittstellen für Anwender zu konfigurieren.

So konfigurieren Sie dynamische Profilvariablenausdrücke:

  1. Greifen Sie auf das dynamische Profil zu, für das Sie variable Ausdrücke erstellen möchten.
  2. Greifen Sie auf die variables Hierarchie für das dynamische Profil zu.
  3. Definieren Sie die Variable mithilfe der Ausdrucksoperatoren und Operanden, die unter Verwenden von Variablenausdrücken in benutzerdefinierten Variablen beschrieben werden.

Tabelle 4 enthält mehrere Beispiele für Ausdrücke, die Sie mit den unterstützten Operatoren und Funktionen erstellen können.

Tabelle 4: Beispiele für Ausdrücke

Beispiel

Beschreibung

video-filter gleich "'Filter1' "

Weist der dynamischen $video-filter-Variablen die Zeichenfolge " Filter1" zu.

video-filter2 gleich "$video-filter ## ' Filter2' "

Konvertiert die dynamische Variable "$video-filter" in eine Zeichenfolge und verkettet die neue Zeichenfolge mit der Zeichenfolge "Filter2". Das Ergebnis ist die Zeichenfolge "$video-filter Filter2", die der Variablen $video-filter2 zugewiesen ist.

tempvar gleich "120"

Konvertiert "120" in eine ganze Zahl und weist die ganze Zahl der Variablen $tempvar zu.

Senderate2 gleich " ( $transmit-rate1 * 2)/3 + $tempvar)"

Multipliziert die Variable "transmit-rate1" mit 2 und dividiert diesen Wert durch die Summe von 3 und den Wert von "$tempvar". Das Ergebnis wird der Variablen $transmit-rate2 zugewiesen.

host-ip gleich " '203.0.113.2' "

Weist der Variablen $host-ip die Zeichenfolge "203.0.113.2" zu.

max-val "max($max 1,$max 2)"

Weist der Variablen $max-val den Wert "max1" oder "max2" zu.

min-val "$min($var 1,30)"

Weisen Sie der Variablen $min-val den kleineren Wert "var1" und "30" zu.

rounded-var gleich "round($var 1)"

Rundet den Wert der Variablen "$var 1" auf die nächste ganze Zahl ab und weist den Wert der Variablen $rounded-var zu.

trunc-var gleich "trunc(1234.5)"

Schneidet den Wert in Klammern links neben der Dezimalstelle ab und weist den resultierenden Wert der Variablen $trunc-var zu.

BWG-Shaping-Rate gleich "$ancp-Downstream - ($ancp-Downstream % 2 * (1 - $sp-Qos-Cell-Mode))"

Wertet den Ausdruck gemäß der in den Klammern festgelegten Rangfolge aus.

temp-filter1 gleich "'Filter1' ## toStr($filter)"

Konvertiert die Variable "$filter" in einen Zeichenfolgenwert und verkettet die konvertierte Zeichenfolge mit der Zeichenfolge "Filter1". Die resultierende kombinierte Zeichenfolge wird der Variablen $temp-filter1 zugewiesen.

Bedingte Konfiguration für dynamisches Profil – Übersicht

Sie können bedingte Konfigurationsanweisungen für dynamische Profile konfigurieren, um Anwenderinformationen für einen Client oder Dienst dynamisch abzurufen.

Die bedingte Konfiguration umfasst zwei Hauptschritte:

  1. Definition der bedingten Variablen

  2. Verweisen auf die bedingte Variable in einer Konfigurationsanweisung

Eine bedingte Variable wird als Ausdruck ifNotZero (param1, param2)definiert. In diesem Ausdruck ist eine benutzerdefinierte Variable, param1 deren Wert von einem externen Server wie RADIUS abgeleitet wird und param2 eine benutzerdefinierte Variable, eine Funktion, eine Operation, eine Zahl oder eine Zeichenfolge sein kann. Eine bedingte Variable kann eine benutzerdefinierte Variable oder eine eindeutige ID-Variable (UID) reference sein. Es darf sich nicht um eine vordefinierte oder UID-Variable handeln. In Junos OS werden bedingte Variablen nur für die dynamischen Serviceprofile unterstützt.

Die Konfigurationsanweisungen, in denen auf die bedingten Variablen verwiesen wird, werden als Konfigurationsanweisungen bezeichnet conditional . Nachdem die bedingte Variable definiert wurde, wird in dynamic-profiles Konfigurationsanweisungen auf sie verwiesen und sie werden verarbeitet, wenn das Dienstprofil instanziiert wird. Die folgenden Konfigurationsanweisungen für Dienstprofile unterstützen bedingte Variablen:

  • dynamic-profiles profile-name interfaces interface-name unit unit-no family type filter input filter-name

  • dynamic-profiles profile-name interfaces interface-name unit unit-no family type filter output filter-name

  • dynamic-profiles profile-name firewall family type filter filter-name term term-name

  • dynamic-profiles profile-name firewall family type filter filter-name term term-name then policer policer-name

  • dynamic-profiles profile-name firewall family type filter filter-name term term-name then hierarchical-policer policer-name

  • dynamic-profiles profile-name class-of-service scheduler-maps map-name forwarding-class class-name scheduler scheduler-name

Das System folgt den folgenden Regeln, während es die bedingten Variablen und bedingten Konfigurationsanweisungen während der Instanziierung des Dienstprofils auswertet:

  • Wenn in der Funktion ifNotZero(param1, param2) der Wert von a param1 nicht von einem externen Server empfangen wird und der Standardwert nicht konfiguriert ist, wird der Wert der Variablen als ungleich Null behandelt und param2 ausgewertet.

  • Wenn der Wert von param1 in der Funktion ifNotZero(param1, param2) 0 ist, wird NULL als Wert des Ausdrucks zurückgegeben und param2 nicht ausgewertet. In diesem Fall wird der Wert der bedingten Variablen zu NULL, und die Konfigurationsanweisung, in der auf die bedingte Variable verwiesen wird, wird ignoriert.

  • Wenn der Wert von param1 ungleich Null ist, param2 wird er ausgewertet und sein Wert wird als Wert des Ausdrucks zurückgegeben.

filter-service Die folgenden Konfigurationsbeispiele cos-service zeigen, wie die Regeln angewendet werden:

Konfigurationsbeispiel für Filterdienst

filter-service Im Konfigurationsbeispiel sind , output-filter-ref, policer1-refund term1 bedingte Variablen, input-filter-refwährend input "$input-filter-ref" precedence 50, output "$output-filter-ref" precedence 50term $term1, und policer "$policer1-ref" bedingte Konfigurationsanweisungen sind. Wenn in diesem Beispiel der Wert 0 input-filter-var ist, wird der Wert der bedingten Variablen input-filter-ref zu NULL. Daher wird die gesamte Konfigurationsanweisung input “$input-filter-ref” precedence 50, in der auf die bedingte Variable verwiesen wird, ignoriert. Wenn der Wert der Variablen jedoch ungleich Null ist, wird die Konfigurationsanweisung während der Instanziierung des Dienstprofils verarbeitet.

Konfigurationsbeispiel für einen CoS-Service

cos-service Im Konfigurationsbeispiel sch1_ref sind und sch2_ref bedingte Variablen while forwarding-class best-effort scheduler "$sch1_ref" und forwarding-class assured-forwarding scheduler "$sch2_ref" bedingte Konfigurationsanweisungen. Ähnlich wie bei der Auswertung im Konfigurationsbeispiel wird die Konfigurationsanweisung, in der auf die bedingte Variable verwiesen wird, ignoriert und während der Instanziierung des CoS-Dienstprofils nicht verarbeitet, wenn der Wert einer Variablen, auf filter-service die in einer bedingten Variablen verwiesen wird, 0 ist.