Auf dieser Seite
Beispiel: Konfigurieren einer Richtlinienunterroutine
In diesem Beispiel wird die Verwendung einer Richtlinienunterroutine in einer Übereinstimmungsbedingung für Routingrichtlinien veranschaulicht.
Anforderungen
Vor der Konfiguration dieses Beispiels ist keine spezielle Konfiguration erforderlich, die über die Geräteinitialisierung hinausgeht.
Überblick
Auf Gerät R1 wird eine Richtlinie namens konfiguriert.main
user@R1# show policy-options policy-statement main { term subroutine-as-a-match { from policy subroutine; then accept; } term nothing-else { then reject; } }
Diese Hauptrichtlinie ruft eine Unterroutine namens .subroutine
user@R1# show policy-options policy-statement subroutine { term get-routes { from protocol static; then accept; } term nothing-else { then reject; } }
Der Router wertet die Logik von in definierter Weise aus.main
Das Übereinstimmungskriterium von ermöglicht es dem Routing-Gerät, das Unterprogramm zu lokalisieren.from policy subroutine
Alle Terme des Unterprogramms werden der Reihe nach ausgewertet, die den normalen Regeln für die Richtlinienverarbeitung folgen. In diesem Beispiel stimmen alle statischen Routen in der Routing-Tabelle mit der Unterroutine mit der Aktion accept überein. Dadurch wird ein echtes Ergebnis an die ursprüngliche oder aufrufende Richtlinie zurückgegeben, die das Gerät darüber informiert, dass eine positive Übereinstimmung aufgetreten ist. Die Aktionen in der aufrufenden Richtlinie werden ausgeführt, und die Route wird akzeptiert. Alle anderen Routen in der Routingtabelle stimmen nicht mit dem Unterprogramm überein und geben ein falsches Ergebnis an die aufrufende Richtlinie zurück. Das Gerät wertet den zweiten Term aus und lehnt die Routen ab.main
Die Aktionen im Unterprogramm akzeptieren oder lehnen eine bestimmte Route nicht ab. Die Unterprogrammaktionen werden nur in ein wahres oder falsches Ergebnis übersetzt. Aktionen, die die Attribute einer Route ändern, werden jedoch unabhängig vom Ergebnis des Unterprogramms auf die Route angewendet.
Das Gerät R1 in AS 64510 verfügt über mehrere Kundenrouten, von denen einige statische, lokal konfigurierte Routen sind und von denen einige von Gerät R2 und Gerät R3 über internes BGP (IBGP) empfangen werden. AS 64510 ist mit dem Gerät R4 in AS 64511 verbunden. Die Richtlinie wird als Exportrichtlinie in der BGP-Peering-Sitzung von Gerät R1 mit Gerät R4 angewendet.main
Dies führt dazu, dass Gerät R1 nur seine eigenen statischen Routen an Gerät R4 sendet. Aufgrund der Richtlinie sendet Gerät R1 nicht die Routen, die von seinen internen Peers Gerät R2 und Gerät R3 empfangen wurden.main
Wenn Sie mit Richtlinienunterprogrammen arbeiten, ist es wichtig, sich daran zu erinnern, dass die standardmäßige EBGP-Exportrichtlinie darin besteht, alle erlernten BGP-Routen allen EBGP-Peers anzukündigen. Diese Standardrichtlinie ist in der Hauptrichtlinie und auch im Unterprogramm wirksam. Wenn Sie also nicht möchten, dass die standardmäßige EBGP-Exportrichtlinie wirksam wird, müssen Sie, wie in diesem Beispiel gezeigt, sowohl in der Hauptrichtlinie als auch in der Richtlinienunterroutine eine Abbruchaktion als letzte Laufzeit konfigurieren.then reject
In diesem Beispiel wird veranschaulicht, was passiert, wenn der letzte Ausdruck entweder in der Hauptrichtlinie oder in der Richtlinienunterroutine fehlt.then reject
Topologie
Abbildung 1 zeigt das Beispielnetzwerk an.
CLI-Schnellkonfiguration Zeigt die Konfiguration für alle Geräte in Abbildung 1an.
In diesem Abschnitt werden die Schritte auf Gerät R1 beschrieben.#configuration318__policy-subroutine-st
Konfiguration
CLI-Schnellkonfiguration
Um dieses Beispiel schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen Sie sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern Sie alle Details, die für Ihre Netzwerkkonfiguration erforderlich sind, und kopieren Sie dann die Befehle und fügen Sie sie in die CLI auf Hierarchieebene ein.[edit]
Gerät R1
set interfaces fe-1/2/0 unit 0 description to_R2 set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.1/30 set interfaces fe-1/2/2 unit 0 description to_R3 set interfaces fe-1/2/2 unit 0 family inet address 10.0.0.5/30 set interfaces fe-1/2/3 unit 0 description to_R4 set interfaces fe-1/2/3 unit 0 family inet address 10.1.0.5/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.1 set protocols bgp group int neighbor 192.168.0.2 set protocols bgp group int neighbor 192.168.0.3 set protocols bgp group to_64511 type external set protocols bgp group to_64511 export main set protocols bgp group to_64511 neighbor 10.1.0.6 peer-as 64511 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface fe-1/2/2.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement main term subroutine-as-a-match from policy subroutine set policy-options policy-statement main term subroutine-as-a-match then accept set policy-options policy-statement main term nothing-else then reject set policy-options policy-statement subroutine term get-routes from protocol static set policy-options policy-statement subroutine term get-routes then accept set policy-options policy-statement subroutine term nothing-else then reject set routing-options static route 172.16.1.16/28 discard set routing-options static route 172.16.1.32/28 discard set routing-options static route 172.16.1.48/28 discard set routing-options static route 172.16.1.64/28 discard set routing-options router-id 192.168.0.1 set routing-options autonomous-system 64510
Gerät R2
set interfaces fe-1/2/0 unit 0 description to_R1 set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.2/30 set interfaces fe-1/2/1 unit 0 description to_R3 set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.2 set protocols bgp group int neighbor 192.168.0.1 export send-static set protocols bgp group int neighbor 192.168.0.3 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface fe-1/2/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options static route 172.16.2.16/28 discard set routing-options static route 172.16.2.32/28 discard set routing-options static route 172.16.2.48/28 discard set routing-options static route 172.16.2.64/28 discard set routing-options router-id 192.168.0.2 set routing-options autonomous-system 64510
Gerät R3
set interfaces fe-1/2/1 unit 0 description to_R2 set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.2/30 set interfaces fe-1/2/2 unit 0 description to_R1 set interfaces fe-1/2/2 unit 0 family inet address 10.0.0.6/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.3 set protocols bgp group int neighbor 192.168.0.1 export send-static set protocols bgp group int neighbor 192.168.0.2 set protocols ospf area 0.0.0.0 interface fe-1/2/2.6 set protocols ospf area 0.0.0.0 interface fe-1/2/0.4 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement send-static from protocol static set policy-options policy-statement send-static then accept set routing-options static route 172.16.3.16/28 discard set routing-options static route 172.16.3.32/28 discard set routing-options static route 172.16.3.48/28 discard set routing-options static route 172.16.3.64/28 discard set routing-options router-id 192.168.0.3 set routing-options autonomous-system 64510
Gerät R4
set interfaces fe-1/2/3 unit 0 description to_R1 set interfaces fe-1/2/3 unit 0 family inet address 10.1.0.6/30 set interfaces lo0 unit 0 family inet address 192.168.0.4/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 64510 set protocols bgp group ext neighbor 10.1.0.5 set routing-options autonomous-system 64511
Verfahren
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren. Informationen zum Navigieren in der CLI finden Sie im Junos OS CLI-Benutzerhandbuch.Verwenden des CLI-Editors im Konfigurationsmodushttps://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html
So konfigurieren Sie Gerät R1:
Konfigurieren Sie die Geräteschnittstellen.
[edit interfaces] user@R1# set fe-1/2/0 unit 0 description to_R2 user@R1# set fe-1/2/0 unit 0 family inet address 10.0.0.1/30 user@R1# set fe-1/2/2 unit 0 description to_R3 user@R1# set fe-1/2/2 unit 0 family inet address 10.0.0.5/30 user@R1# set fe-1/2/3 unit 0 description to_R4 user@R1# set fe-1/2/3 unit 0 family inet address 10.1.0.5/30 user@R1# set lo0 unit 0 family inet address 192.168.0.1/32
Konfigurieren Sie die internen BGP-Verbindungen (IBGP) zu Gerät R2 und Gerät R3.
[edit protocols bgp group int] user@R1# set type internal user@R1# set local-address 192.168.0.1 user@R1# set neighbor 192.168.0.2 user@R1# set neighbor 192.168.0.3
Konfigurieren Sie die EBGP-Verbindung zu Gerät R4.
[edit protocols bgp group to_64511] user@R1# set type external user@R1# set export main user@R1# set neighbor 10.1.0.6 peer-as 64511
Konfigurieren Sie OSPF-Verbindungen zu Gerät R2 und Gerät R3.
[edit protocols ospf area 0.0.0.0] user@R1# set interface fe-1/2/0.0 user@R1# set interface fe-1/2/2.0 user@R1# set interface lo0.0 passive
Konfigurieren Sie die Richtlinie .
main
[edit policy-options policy-statement main term subroutine-as-a-match] user@R1# set from policy subroutine user@R1# set then accept [edit policy-options policy-statement main term nothing-else] user@R1# set then reject
Konfigurieren Sie die Richtlinie .
subroutine
[edit policy-options policy-statement subroutine term get-routes] user@R1# set from protocol static user@R1# set then accept [edit policy-options policy-statement subroutine term nothing-else] user@R1# set then reject
Konfigurieren Sie die statische Route zum Netzwerk 172.16.5.0/24.
[edit routing-options static] user@R1# set route 172.16.1.16/28 discard user@R1# set route 172.16.1.32/28 discard user@R1# set route 172.16.1.48/28 discard user@R1# set route 172.16.1.64/28 discard
Konfigurieren Sie die AS-Nummer (Autonomous System) und die Router-ID.
[edit routing-options] user@R1# set router-id 192.168.0.1 user@R1# set autonomous-system 64510
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die Befehle , , und eingeben.show interfaces
show protocols
show policy-options
show routing-options
Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
user@R1# show interfaces fe-1/2/0 { unit 0 { description to_R2; family inet { address 10.0.0.1/30; } } } fe-1/2/2 { unit 0 { description to_R3; family inet { address 10.0.0.5/30; } } } fe-1/2/3 { unit 0 { description to_R4; family inet { address 10.1.0.5/30; } } } lo0 { unit 0 { family inet { address 192.168.0.1/32; } } }
user@R1# show protocols bgp { group int { type internal; local-address 192.168.0.1; neighbor 192.168.0.2; neighbor 192.168.0.3; } group to_64511 { type external; export main; neighbor 10.1.0.6 { peer-as 64511; } } } ospf { area 0.0.0.0 { interface fe-1/2/0.0; interface fe-1/2/2.0; interface lo0.0 { passive; } } }
user@R1# show policy-options policy-statement main { term subroutine-as-a-match { from policy subroutine; then accept; } term nothing-else { then reject; } } policy-statement subroutine { term get-routes { from protocol static; then accept; } term nothing-else { then reject; } }
user@R1# show routing-options static { route 172.6.1.16/28 discard; route 172.6.1.32/28 discard; route 172.6.1.48/28 discard; route 172.6.1.64/28 discard; } router-id 192.168.0.1; autonomous-system 64510;
Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf .commit
Überprüfung
Vergewissern Sie sich, dass die Konfiguration ordnungsgemäß funktioniert.
- Überprüfen der Routen auf Gerät R1
- Überprüfen der Routenankündigung auf Gerät R4
- Experimentieren mit der standardmäßigen BGP-Exportrichtlinie
Überprüfen der Routen auf Gerät R1
Zweck
Überprüfen Sie auf Gerät R1 die statischen Routen in der Routing-Tabelle.
Was
user@R1> show route protocol static inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.16.1.16/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.32/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.48/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.64/28 *[Static/5] 1d 02:02:13 Discard
Bedeutung
Gerät R1 verfügt über vier statische Routen.
Überprüfen der Routenankündigung auf Gerät R4
Zweck
Stellen Sie auf Gerät R1 sicher, dass die statischen Routen Gerät R4 angekündigt werden.
Was
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I
Bedeutung
Erwartungsgemäß kündigt Gerät R1 seine statischen Routen nur für Gerät R4 an.
Experimentieren mit der standardmäßigen BGP-Exportrichtlinie
Zweck
Erfahren Sie, was passieren kann, wenn Sie die letzte Laufzeit aus der Richtlinie oder der Richtlinie entfernen.then reject
main
subroutine
Was
Deaktivieren Sie auf Gerät R1 die letzte Laufzeit in der Richtlinie .
main
[edit policy-options policy-statement main] user@R1# deactivate term nothing-else user@R1# commit
Überprüfen Sie auf Gerät R1, welche Routen für Gerät R4 angekündigt werden.
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I * 172.16.2.16/28 Self I * 172.16.2.32/28 Self I * 172.16.2.48/28 Self I * 172.16.2.64/28 Self I * 172.16.3.16/28 Self I * 172.16.3.32/28 Self I * 172.16.3.48/28 Self I * 172.16.3.64/28 Self I
Jetzt werden alle BGP-Routen von Gerät R1 an Gerät R4 gesendet. Dies liegt daran, dass nach der Rückgabe der Verarbeitung an die Richtlinie die standardmäßige BGP-Exportrichtlinie wirksam wird.
main
Aktivieren Sie auf Gerät R1 die letzte Laufzeit in der Richtlinie erneut und deaktivieren Sie die letzte Laufzeit in der Richtlinie.
main
subroutine
[edit policy-options policy-statement main] user@R1# activate term nothing-else [edit policy-options policy-statement subroutine] user@R1# deactivate term nothing-else user@R1# commit
Überprüfen Sie auf Gerät R1, welche Routen für Gerät R4 angekündigt werden.
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I * 172.16.2.16/28 Self I * 172.16.2.32/28 Self I * 172.16.2.48/28 Self I * 172.16.2.64/28 Self I * 172.16.3.16/28 Self I * 172.16.3.32/28 Self I * 172.16.3.48/28 Self I * 172.16.3.64/28 Self I
Jetzt werden alle BGP-Routen von Gerät R1 an Gerät R4 gesendet. Dies liegt daran, dass die standardmäßige BGP-Exportrichtlinie in der Richtlinie wirksam wird, bevor die Verarbeitung an die Richtlinie zurückgegeben wird.
main
subroutine
Bedeutung
Um zu verhindern, dass die standardmäßige BGP-Exportrichtlinie wirksam wird, müssen Sie einen letzten Begriff in die Hauptrichtlinie und in alle Unterprogramme aufnehmen, auf die verwiesen wird.then reject