Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Grundlegendes zu Richtlinienausdrücken

Richtlinienausdrücke bieten der Richtlinien-Framework-Software eine andere Möglichkeit, Routing-Richtlinien auszuwerten. Ein Richtlinienausdruck verwendet boolesche logische Operatoren mit Richtlinien. Die logischen Operatoren legen Regeln fest, nach denen die Richtlinien ausgewertet werden.

Während der Auswertung einer Routingrichtlinie in einem Richtlinienausdruck wird die Richtlinienaktion "Akzeptieren", "Ablehnen" oder "Nächste Richtlinie" in den Wert "TRUE" oder "FALSE" konvertiert. Dieser Wert wird dann anhand des angegebenen logischen Operators ausgewertet, um die Ausgabe TRUE oder FALSE zu erzeugen. Die Ausgabe wird dann wieder in eine Flusssteuerungsaktion von "Akzeptieren", "Ablehnen" oder "Nächste Richtlinie" konvertiert. Das Ergebnis des Richtlinienausdrucks wird so angewendet, wie es auf eine einzelne Richtlinie angewendet würde. Die Route wird akzeptiert oder abgelehnt, und die Auswertung wird beendet, oder die nächste Richtlinie wird ausgewertet.

Tabelle 1 fasst die Richtlinienaktionen und die entsprechenden TRUE- und FALSE-Werte sowie die Aktionswerte für die Flusssteuerung zusammen. Tabelle 2 Beschreibt die logischen Operatoren. Vollständige Informationen zur Auswertung von Richtlinienausdrücken finden Sie unter Auswertung von Richtlinienausdrücken.

Sie müssen einen Richtlinienausdruck in Klammern einschließen. Sie können einen Richtlinienausdruck an einer beliebigen Stelle in der import oder-Anweisung export und in der from policy Anweisung platzieren.

Tabelle 1: Konvertierungswerte für Richtlinienaktionen

Politische Maßnahmen

Conversion-Wert

Konvertierungswert für die Flusssteuerungsaktion

Annehmen

STIMMT

Annehmen

Ablehnen

FALSCH

Ablehnen

Nächste Richtlinie

STIMMT

Nächste Richtlinie

Tabelle 2: Logische Operatoren für Richtlinienausdrücke

Logischer Operator

Logik für Richtlinienausdrücke

Auswirkungen des logischen Operators auf die Auswertung von Richtlinienausdrücken

&& (Logisches UND)

Logisches AND erfordert, dass alle Werte TRUE sein müssen, um die Ausgabe von TRUE zu erzeugen.

Der Routingrichtlinienwert TRUE und TRUE erzeugt die Ausgabe TRUE. Der Wert TRUE und FALSE erzeugt die Ausgabe von FALSE. Der Wert FALSE und FALSE erzeugt die Ausgabe von FALSE.

Wenn die erste Routingrichtlinie den Wert TRUE zurückgibt, wird die nächste Richtlinie ausgewertet. Wenn die erste Richtlinie den Wert FALSE zurückgibt, endet die Auswertung des Ausdrucks, und nachfolgende Richtlinien im Ausdruck werden nicht ausgewertet.

|| (Logisches ODER)

Logisches OR erfordert, dass mindestens ein Wert TRUE sein muss, um die Ausgabe TRUE zu erzeugen.

Der Routingrichtlinienwert TRUE und FALSE erzeugt die Ausgabe TRUE. Der Wert von TRUE und TRUE erzeugt die Ausgabe von TRUE. Der Wert FALSE und FALSE erzeugt die Ausgabe von FALSE.

Wenn die erste Routingrichtlinie den Wert TRUE zurückgibt, endet die Auswertung des Ausdrucks, und nachfolgende Richtlinien im Ausdruck werden nicht ausgewertet. Wenn die erste Richtlinie den Wert FALSE zurückgibt, wird die nächste Richtlinie ausgewertet.

! (Logisches NICHT)

Logisches NOT kehrt den Wert von TRUE in FALSE und von FALSE in TRUE um. Außerdem werden die Aktionen "Akzeptieren" und "Nächste Richtlinie zum Ablehnen" und "Ablehnen" zum Akzeptieren rückgängig gemacht.

Wenn es mit dem logischen AND-Operator verwendet wird und der erste Routingrichtlinienwert von FALSE in TRUE umgekehrt wird, wird die nächste Richtlinie ausgewertet. Wenn der Wert von TRUE in FALSE umgekehrt wird, endet die Auswertung des Ausdrucks, und nachfolgende Richtlinien im Ausdruck werden nicht ausgewertet.

Wenn es mit dem logischen OR-Operator verwendet wird und der erste Routingrichtlinienwert von FALSE in TRUE umgekehrt wird, endet die Auswertung des Ausdrucks, und nachfolgende Richtlinien im Ausdruck werden nicht ausgewertet. Wenn der Wert von TRUE in FALSE umgekehrt wird, wird die nächste Richtlinie ausgewertet.

Wenn sie mit einer Richtlinie verwendet werden und die Flusssteuerungsaktion "Akzeptieren" oder "Nächste Richtlinie" lautet, werden diese Aktionen in "Ablehnen" umgekehrt. Wenn die Flusssteuerungsaktion abgelehnt wird, wird diese Aktion in "Akzeptieren" rückgängig gemacht.

Weitere Informationen finden Sie in den folgenden Abschnitten:

Beispiele für Richtlinienausdrücke

Die folgenden Beispiele zeigen, wie die logischen Operatoren zum Erstellen von Richtlinienausdrücken verwendet werden:

  • Logisches UND: Wird im folgenden Beispiel policy1 zuerst ausgewertet. Wenn after policy1 ausgewertet wird, wird der Wert TRUE zurückgegeben und policy2 ausgewertet. Wenn der Wert FALSE zurückgegeben wird, policy2 wird er nicht ausgewertet.

  • Logisches ODER: policy1 Wird im folgenden Beispiel zuerst ausgewertet. Wenn after policy1 ausgewertet wird, wird der Wert TRUE zurückgegeben und policy2 nicht ausgewertet. Wenn der Wert FALSE zurückgegeben wird, policy2 wird ausgewertet.

  • Logisches ODER und logisches UND: policy1 Im folgenden Beispiel wird zuerst ausgewertet. Wenn after policy1 ausgewertet wird, wird der Wert TRUE zurückgegeben, policy2 übersprungen und policy3 ausgewertet. Wenn after policy1 ausgewertet wird, wird der Wert FALSE zurückgegeben und policy2 ausgewertet. Wenn policy2 der Wert TRUE zurückgegeben wird, policy3 wird ausgewertet. Wenn policy2 der Wert FALSE zurückgegeben wird, policy3 wird nicht ausgewertet.

  • Logisches NOT: Wird im folgenden Beispiel policy1 zuerst ausgewertet. Wenn after policy1 ausgewertet wird, wird der Wert TRUE zurückgegeben, der Wert wird in FALSE umgekehrt und policy2 nicht ausgewertet. Wenn der Wert FALSE zurückgegeben wird, wird der Wert in TRUE umgekehrt und policy2 ausgewertet.

Die sequenzielle Liste [policy1 policy2 policy3] ist nicht identisch mit dem Richtlinienausdruck (policy1 && policy2 && policy3).

Die sequenzielle Liste wird auf der Grundlage einer Route ausgewertet, die mit einer Routing-Richtlinie übereinstimmt. Beispiel: Wenn policy1 Übereinstimmungen und die Aktion oder rejectistaccept, policy2 und policy3 nicht ausgewertet werden. Wenn policy1 nicht übereinstimmt, wird ausgewertet und so weiter, policy2 bis eine Übereinstimmung auftritt und die Aktion oder rejectistaccept.

Die Richtlinienausdrücke werden auf der Grundlage der Aktion in einer Routingrichtlinie, die in den Wert TRUE oder FALSE konvertiert wird, und der Logik des angegebenen logischen Operators ausgewertet. (Vollständige Informationen zur Auswertung von Richtlinienausdrücken finden Sie unter Auswertung von Richtlinienausdrücken.) Beispiel: if policy1 gibt den Wert FALSE policy2 zurück und policy3 werden nicht ausgewertet. Wenn policy1 der Wert TRUE zurückgegeben wird, policy2 wird ausgewertet. Wenn policy2 der Wert FALSE zurückgegeben wird, policy3 wird nicht ausgewertet. Wenn policy2 der Wert TRUE zurückgegeben wird, policy3 wird ausgewertet.

Sie können auch Richtlinienausdrücke und sequenzielle Listen kombinieren. Im folgenden Beispiel wird if policy1 den Wert FALSE zurückgegeben. policy2 Wenn policy2 der Wert TRUE zurückgegeben wird und eine next policy Aktion enthält, policy3 wird ausgewertet. Wenn policy2 der Wert TRUE zurückgegeben wird, aber keine Aktion, einschließlich einer next policy Aktion, enthält, policy3 wird trotzdem ausgewertet (denn wenn Sie keine Aktion angeben, sind der nächste Begriff oder die nächste Richtlinie die Standardaktionen). Wenn policy2 der Wert TRUE zurückgegeben wird und eine accept Aktion enthält, policy3 wird nicht ausgewertet.

Auswertung von Richtlinienausdrücken

Während der Auswertung konvertiert die Richtlinienframeworksoftware Richtlinienaktionen in die Werte TRUE oder FALSE, bei denen es sich um Faktoren bei der Bestimmung der Flusssteuerungsaktion handelt, die für eine Route ausgeführt wird. Die Software führt jedoch erst dann eine Flusssteuerungsaktion für eine Route aus, wenn sie einen vollständigen Richtlinienausdruck ausgewertet hat.

Die Richtlinienrahmensoftware wertet einen Richtlinienausdruck wie folgt aus:

  1. Die Software wertet eine Route anhand der ersten Routing-Richtlinie in einem Richtlinienausdruck aus und konvertiert die angegebene oder Standardaktion in den Wert TRUE oder FALSE. (Informationen zu den Konvertierungswerten für Richtlinienaktionen finden Sie unter Tabelle 1.)

  2. Die Software wertet den Wert TRUE oder FALSE anhand des logischen Operators aus, der im Richtlinienausdruck verwendet wird (siehe Tabelle 2). Basierend auf dem verwendeten logischen Operator bestimmt die Software, ob die nächste Richtlinie ausgewertet werden soll oder nicht, falls eine vorhanden ist.

    Die Software des Richtlinienrahmens verwendet eine verkürzte Evaluierungsmethode: Wenn das Ergebnis der Auswertung einer Richtlinie den Wert des gesamten Richtlinienausdrucks vorbestimmt, wertet die Software die nachfolgenden Richtlinien im Ausdruck nicht aus. Wenn der Richtlinienausdruck z. B. den logischen AND-Operator verwendet und die Auswertung einer Richtlinie den Wert FALSE zurückgibt, wertet die Software nachfolgende Richtlinien im Ausdruck nicht aus, da der endgültige Wert des Ausdrucks garantiert FALSE ist, unabhängig von den Werten der nicht ausgewerteten Richtlinien.

  3. Die Software führt Schritt 1 und Schritt 2 für jede nachfolgende Routing-Richtlinie im Richtlinienausdruck aus, sofern sie vorhanden sind und ausgewertet werden müssen.

  4. Nach der Auswertung der letzten Routing-Richtlinie wertet die Software gegebenenfalls den Wert TRUE oder FALSE aus, der sich aus jeder Auswertung der Routing-Richtlinie ergibt. Basierend auf dem verwendeten logischen Operator wird eine Ausgabe von TRUE oder FALSE berechnet.

  5. Die Software wandelt die Ausgabe von WAHR oder FALSCH wieder in eine Aktion um. (Informationen zu den Konvertierungswerten für Richtlinienaktionen finden Sie unter Tabelle 1.) Die Aktion wird ausgeführt.

    Wenn jede Richtlinie im Ausdruck den Wert TRUE zurückgegeben hat, konvertiert die Software die Ausgabe von TRUE zurück in die Flusssteuerungsaktion, die in der letzten Richtlinie angegeben wurde. Wenn z. B. der Richtlinienausdruck (policy1 && policy2) angegeben ist und policy1 angibt accept und policy2 angibt next term, wird die next term Aktion ausgeführt.

    Wenn eine Aktion, die in einer der Richtlinien angegeben ist, ein Routenmerkmal manipuliert, überträgt die Richtlinien-Framework-Software das neue Routenmerkmal bei der Auswertung der verbleibenden Richtlinien. Wenn z. B. die in der ersten Richtlinie eines Richtlinienausdrucks angegebene Aktion die Metrik einer Route auf 500 festlegt, entspricht diese Route den Kriterien der metric 500 nächsten Richtlinie. Wenn jedoch eine Manipulationsaktion für ein Routenmerkmal in einer Richtlinie angegeben ist, die sich in der Mitte oder am Ende eines Richtlinienausdrucks befindet, ist es aufgrund der Verknüpfungsauswertung möglich, dass die Richtlinie nie ausgewertet wird und die Manipulation des Routenmerkmals nie erfolgt.

Auswerten von Richtlinienausdrücken

Im folgenden Beispiel für eine Routingrichtlinie werden drei Richtlinienausdrücke verwendet:

Die Software des Richtlinienrahmens wertet die Transit-BGP-Route 10.10.1.0/24 anhand der drei Richtlinienausdrücke aus, die in der Beispiel-Routing-Richtlinie wie folgt angegeben sind:

  • (Richtlinie-A &&&; Richtlinie-B)—10.10.1.0/24 wird gegen policy-Aausgewertet. 10.10.1.0/24 stimmt mit der in policy-Aangegebenen Routenliste überein, sodass die angegebene Aktion von reject zurückgegeben wird. reject wird in den Wert FALSE konvertiert, und FALSE wird anhand des angegebenen logischen AND ausgewertet. Da das Ergebnis von FALSE sicher ist, unabhängig davon, wie die Ergebnisse der Auswertung von policy-B sind (in der Logik des Richtlinienausdrucks erzeugt jedes Ergebnis UND ein Wert von FALSE die Ausgabe von FALSE), policy-B wird es nicht ausgewertet, und die Ausgabe von FALSE wird erzeugt. Die Ausgabe FALSE wird in rejectkonvertiert, und 10.10.1.0/24 wird zurückgewiesen.

  • (policy-A || policy-B)—10.10.1.0/24 wird gegen policy-Aausgewertet. 10.10.1.0/24 stimmt mit der in policy-Aangegebenen Routenliste überein, sodass die angegebene Aktion von reject zurückgegeben wird. reject in den Wert FALSE konvertiert wird, wird FALSE anhand des angegebenen logischen OR ausgewertet. Da logisches OR mindestens einen Wert von TRUE erfordert, um eine Ausgabe von TRUE zu erzeugen, wird 10.10.1.0/24 gegen policy-Bausgewertet. 10.10.1.0/24 stimmt nicht überein policy-B, sodass die Standardaktion von next-policy zurückgegeben wird. Der next-policy Wert wird in den Wert TRUE konvertiert, dann werden der Wert von FALSE (für die Auswertung) und TRUE (für policy-Apolicy-B die Auswertung) anhand des angegebenen logischen ODER ausgewertet. In der Richtlinienausdruckslogik erzeugt FALSE ODER TRUE die Ausgabe TRUE. Die Ausgabe von TRUE wird in konvertiert. next-policy (TRUE wird in next-policy because next-policy was the last action kept by the policy framework-software konvertiert.) policy-B ist die letzte Routing-Richtlinie im Richtlinienausdruck, sodass die in der Standardexportrichtlinie für BGP angegebene Aktion ausgeführt wird.

  • (!policy-A)—10.10.1.0/24 wird gegen policy-Aausgewertet. 10.10.1.0/24 stimmt mit der in policy-Aangegebenen Routenliste überein, sodass die angegebene Aktion von reject zurückgegeben wird. reject wird in den Wert FALSE konvertiert, und FALSE wird anhand des angegebenen logischen NOT ausgewertet. Der Wert von FALSE wird basierend auf den Regeln des logischen NOT in eine Ausgabe von TRUE umgekehrt. Die Ausgabe von TRUE wird in acceptkonvertiert, und Route 10.10.1.0/24 wird akzeptiert.