In dem Dokumentationssatz für dieses Produkt wird die Verwendung inklusiver Sprache angestrebt. Für die Zwecke dieses Dokumentationssatzes wird Sprache als „inklusiv“ verstanden, wenn sie keine Diskriminierung aufgrund von Alter, körperlicher und/oder geistiger Behinderung, Geschlechtszugehörigkeit und -identität, ethnischer Identität, sexueller Orientierung, sozioökonomischem Status und Intersektionalität impliziert. Dennoch können in der Dokumentation stilistische Abweichungen von diesem Bemühen auftreten, wenn Text verwendet wird, der in Benutzeroberflächen der Produktsoftware fest codiert ist, auf RFP-Dokumentation basiert oder von einem genannten Drittanbieterprodukt verwendet wird. Hier erfahren Sie mehr darüber, wie Cisco inklusive Sprache verwendet.
Cisco hat dieses Dokument maschinell übersetzen und von einem menschlichen Übersetzer editieren und korrigieren lassen, um unseren Benutzern auf der ganzen Welt Support-Inhalte in ihrer eigenen Sprache zu bieten. Bitte beachten Sie, dass selbst die beste maschinelle Übersetzung nicht so genau ist wie eine von einem professionellen Übersetzer angefertigte. Cisco Systems, Inc. übernimmt keine Haftung für die Richtigkeit dieser Übersetzungen und empfiehlt, immer das englische Originaldokument (siehe bereitgestellter Link) heranzuziehen.
In diesem Dokument werden die Schritte zum Verständnis der ACI-Sicherheitsrichtlinien, die so genannten Verträge, und zur Fehlerbehebung beschrieben.
Das Material aus diesem Dokument wurde aus dem Buch Troubleshooting Cisco Application Centric Infrastructure, Second Edition, extrahiert, insbesondere die Security Policies - Overview, Security Policies - Tools, Security Policies - EPG to EPG, Security Policies - Preferred group und Security Policies - vzAny to EPG, in den einzelnen Kapiteln.
Die grundlegende Sicherheitsarchitektur der ACI-Lösung folgt einem Permitlistenmodell. Wenn eine VRF-Instanz nicht im nicht erzwungenen Modus konfiguriert wird, werden alle Datenflüsse zwischen EPGs implizit verworfen. Gemäß dem einsatzfertigen Permit-List-Modell befindet sich die Standard-VRF-Einstellung im erzwungenen Modus. Datenverkehrsflüsse können zugelassen oder explizit abgelehnt werden, indem Zoning-Regeln auf den Switch-Knoten implementiert werden. Diese Zoning-Regeln können in Abhängigkeit vom gewünschten Kommunikationsfluss zwischen Endpunktgruppen (EPG) und der zu ihrer Definition verwendeten Methode in verschiedenen Konfigurationen programmiert werden. Beachten Sie, dass Zoning-Regeleinträge nicht statusbehaftet sind und nach dem Programmieren der Regel bei zwei EPGs in der Regel Port/Socket zulassen/verweigern.
Die wichtigsten Methoden zur Programmierung von Zoning-Regeln in der ACI sind:
Das folgende Diagramm kann verwendet werden, um auf die Granularität von Zoning-Regeln zu verweisen, die jede der oben genannten Methoden für die Steuerung ermöglicht:
Bei Verwendung der Vertragsmethode zum Programmieren von Zoning-Regeln gibt es eine Option zum Definieren des Vertragsbereichs. Diese Option muss sorgfältig geprüft werden, wenn ein Design für Route Leaking/Shared Services erforderlich ist. Wenn innerhalb der ACI-Fabric VRFs übertragen werden sollen, können Verträge abgeschlossen werden.
Folgende Bereichswerte sind möglich:
Sobald die Zoning-Regel programmiert wurde, wird sie auf einem Leaf wie folgt angezeigt:
+---------+--------+--------+----------+----------------+---------+---------+-----------------+----------+----------------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+----------------+---------+---------+-----------------+----------+----------------------+
Wenn jede Zoning-Regel programmiert wird, verwendet eine Matrix des Zoning-Regeleintrags, der Filtereinträgen zugeordnet ist, den Richtlinien-CAM auf den Switches. Beim Design der zulässigen Datenflüsse durch eine ACI-Fabric ist bei der Wiederverwendung von Verträgen besondere Vorsicht geboten, anstatt neue Verträge zu erstellen, je nach Enddesign. Wenn ein Vertrag über mehrere EPGs hinweg ohne Verständnis der daraus resultierenden Zonenregeln wiederverwendet wird, kann dies schnell dazu führen, dass mehrere Datenflüsse unerwartet zugelassen werden. Gleichzeitig nutzen diese unbeabsichtigten Flows weiterhin den Richtlinien-CAM. Wenn der Richtlinien-CAM voll ist, schlägt die Zoning-Regel fehl, was je nach Konfiguration und Endpunktverhalten zu unerwarteten und zeitweiligen Verlusten führen kann.
Dies ist eine spezielle Klausel für den Anwendungsfall der Shared Services, für die Verträge konfiguriert werden müssen. Gemeinsam genutzte Services implizieren in der Regel Inter-VRF-Datenverkehr innerhalb einer ACI-Fabric, der auf der Nutzung eines Vertrags mit Tenant- oder globalem Umfang beruht. Um dies vollständig zu verstehen, muss man zunächst die Vorstellung bekräftigen, dass der typische, EPGs zugewiesene pcTag-Wert nicht global eindeutig ist. pcTags gelten für eine VRF-Instanz, und dasselbe pcTag kann in einer anderen VRF-Instanz verwendet werden. Sobald die Diskussion über Route Leaking aufkommt, beginnen Sie damit, Anforderungen an die ACI-Fabric durchzusetzen, einschließlich der Notwendigkeit global eindeutiger Werte, einschließlich Subnets und pcTags.
Besonders wichtig ist dabei der Aspekt der Richtwirkung, der damit verknüpft ist, dass eine EPG ein Verbraucher und kein Anbieter ist. In einem Shared-Services-Szenario wird vom Anbieter in der Regel erwartet, dass er ein globales pcTag fördert, um einen eindeutigen Wert für die Fabric zu erhalten. Gleichzeitig behält der Verbraucher sein VRF-fähiges pcTag bei, wodurch er in eine besondere Position versetzt wird, um jetzt die Verwendung des globalen pcTag-Werts programmieren und verstehen zu können, um Richtlinien durchzusetzen.
Der Zuweisungsbereich von pcTag ist wie folgt:
In jeder VRF-Instanz kann die Einstellung der Durchsetzungsrichtung definiert werden.
Um zu verstehen, wo die Richtlinie durchgesetzt wird, müssen verschiedene Variablen verwendet werden.
Die nachfolgende Tabelle hilft zu verstehen, wo die Sicherheitsrichtlinien auf Leaf-Ebene durchgesetzt werden.
Szenario |
VRF-Erzwingungsmodus |
Verbraucher |
Anbieter |
Durchsetzung der Richtlinie am |
Intra-VRF |
Eingang/Ausgang |
EPG |
EPG |
・ Wenn der Zielendpunkt erfasst wird: Eingangsblatt* ・ Wenn der Zielendpunkt nicht erfasst wird: Ausgangsblatt |
Eingang |
EPG |
L3Out-EPG |
Verbraucher-Leaf |
|
Eingang |
L3Out-EPG |
EPG |
Provider-Leaf (ohne Border Leaf) |
|
Ausgehend |
EPG |
L3Out-EPG |
Grenz-Leaf -> Nicht-Grenz-Leaf-Verkehr ・ Wenn der Zielendpunkt erfasst wird: Randblatt ・ Wenn der Zielendpunkt nicht erfasst wird: unbegrenztes Blatt Nicht grenzübergreifender Leaf-> Grenz-Leaf-Datenverkehr ・ Grenz-Blatt |
|
Ausgehend |
L3Out-EPG |
EPG |
||
Eingang/Ausgang |
L3Out-EPG |
L3Out-EPG |
Eingangs-Leaf* |
|
Inter-VRF |
Eingang/Ausgang |
EPG |
EPG |
Verbraucher-Leaf |
Eingang/Ausgang |
EPG |
L3Out-EPG |
Verbraucher-Leaf |
|
Eingang/Ausgang |
L3Out-EPG |
EPG |
Eingangs-Leaf* |
|
Eingang/Ausgang |
L3Out-EPG |
L3Out-EPG |
Eingangs-Leaf* |
* Die Richtliniendurchsetzung wird auf den ersten Leaf angewendet, der vom Paket betroffen ist.
Die folgende Abbildung zeigt ein Beispiel für die Vertragsdurchsetzung, bei der EPG-Web als Consumer und L3Out EPG als Provider über einen Intra-VRF-Vertrag verfügen. Wenn VRF auf den Ingress-Erzwingungsmodus festgelegt ist, wird die Richtlinie von den Leaf-Knoten durchgesetzt, auf denen EPG-Web gespeichert ist. Wenn VRF auf den Egress-Erzwingungsmodus festgelegt ist, wird die Richtlinie von den Grenz-Leaf-Knoten durchgesetzt, auf denen sich L3Out befindet, wenn der VM-Web-Endpunkt auf dem Grenz-Leaf erfasst wird.
Es stehen eine Reihe von Tools und Befehlen zur Verfügung, die bei der Identifizierung einer Richtlinienaufgabe helfen können. Ein Richtlinienverlust kann als Paketverlust definiert werden, wenn er auf eine Vertragskonfiguration zurückzuführen ist oder nicht vorhanden ist.
Die folgenden Tools und Befehle können verwendet werden, um die Zoning-Regeln explizit zu validieren, die auf Leaf-Switches als Ergebnis abgeschlossener Verbraucher-/Provider-Vertragsbeziehungen programmiert sind.
Ein Befehl auf Switch-Ebene, der alle vorhandenen Zoning-Regeln anzeigt.
leaf# show zoning-rule
+---------+--------+--------+----------+----------------+---------+----------+-----------------+----------+----------------------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+----------------+---------+----------+-----------------+----------+----------------------------+
| 4156 | 25 | 16410 | 425 | uni-dir-ignore | enabled | 2818048 | external_to_ntp | permit | fully_qual(7) |
| 4131 | 16410 | 25 | 424 | bi-dir | enabled | 2818048 | external_to_ntp | permit | fully_qual(7) |
+---------+--------+--------+----------+----------------+---------+----------+-----------------+----------+----------------------------+
Ein Filter, der die Sport-/Portinformationen enthält, auf die die Zoning-Regel wirkt. Die Filterprogrammierung kann mit diesem Befehl überprüft werden.
leaf# show zoning-filter
+----------+----------+-------------+-------------+-------------+----------+-------------+-------------+-------------+-------------+----------+
| FilterId | Name | EtherT | Prot | ApplyToFrag | Stateful | SFromPort | SToPort | DFromPort | DToPort | Prio |
+----------+----------+-------------+-------------+-------------+----------+-------------+-------------+-------------+-------------+----------+
| implarp | implarp | arp | unspecified | no | no | unspecified | unspecified | unspecified | unspecified | dport |
| implicit | implicit | unspecified | unspecified | no | no | unspecified | unspecified | unspecified | unspecified | implicit |
| 425 | 425_0 | ip | tcp | no | no | 123 | 123 | unspecified | unspecified | sport |
| 424 | 424_0 | ip | tcp | no | no | unspecified | unspecified | 123 | 123 | dport |
+----------+----------+-------------+-------------+-------------+----------+-------------+-------------+-------------+-------------+----------+
Mit diesem Befehl kann die Anzahl der Treffer pro Zoning-Regel überprüft werden. Dies ist nützlich, um zu bestimmen, ob eine erwartete Regel getroffen wird, im Gegensatz zu einer anderen, z. B. einer impliziten Ablagerungsregel, die eine höhere Priorität haben kann.
leaf# show system internal policy-mgr stats
Requested Rule Statistics
Rule (4131) DN (sys/actrl/scope-2818048/rule-2818048-s-16410-d-25-f-424) Ingress: 0, Egress: 0, Pkts: 0 RevPkts: 0
Rule (4156) DN (sys/actrl/scope-2818048/rule-2818048-s-25-d-16410-f-425) Ingress: 0, Egress: 0, Pkts: 0 RevPkts: 0
Ein Befehl auf Switch-Ebene, der auf iBash-Ebene ausgeführt werden kann und Zugriffskontrolllisten (Contract)-bezogene Auslassungen und Informationen zum Datenfluss meldet, darunter:
leaf# show logging ip access-list internal packet-log deny
[ Tue Oct 1 10:34:37 2019 377572 usecs]: CName: Prod1:VRF1(VXLAN: 2654209), VlanType: Unknown, Vlan-Id: 0, SMac: 0x000c0c0c0c0c, DMac:0x000c0c0c0c0c, SIP: 192.168.21.11, DIP: 192.168.22.11, SPort: 0, DPort: 0, Src Intf: Tunnel7, Proto: 1, PktLen: 98
[ Tue Oct 1 10:34:36 2019 377731 usecs]: CName: Prod1:VRF1(VXLAN: 2654209), VlanType: Unknown, Vlan-Id: 0, SMac: 0x000c0c0c0c0c, DMac:0x000c0c0c0c0c, SIP: 192.168.21.11, DIP: 192.168.22.11, SPort: 0, DPort: 0, Src Intf: Tunnel7, Proto: 1, PktLen: 98
Ein geräteinternes Python-Skript, das eine Ausgabe erzeugt, die die Zoning-Regeln, Filter und Trefferstatistiken während der Namenssuche von IDs korreliert. Dieses Skript ist äußerst nützlich, da es einen mehrstufigen Prozess ausführt und in einen einzigen Befehl umwandelt, der auf bestimmte EPGs/VRFs oder andere vertragsbezogene Werte gefiltert werden kann.
leaf# contract_parser.py
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]
[7:4131] [vrf:common:default] permit ip tcp tn-Prod1/ap-Services/epg-NTP(16410) tn-Prod1/l3out-L3Out1/instP-extEpg(25) eq 123 [contract:uni/tn-Prod1/brc-external_to_ntp] [hit=0]
[7:4156] [vrf:common:default] permit ip tcp tn-Prod1/l3out-L3Out1/instP-extEpg(25) eq 123 tn-Prod1/ap-Services/epg-NTP(16410) [contract:uni/tn-Prod1/brc-external_to_ntp] [hit=0]
[12:4169] [vrf:common:default] deny,log any tn-Prod1/l3out-L3Out1/instP-extEpg(25) epg:any [contract:implicit] [hit=0]
[16:4167] [vrf:common:default] permit any epg:any tn-Prod1/bd-Services(32789) [contract:implicit] [hit=0]
Ein Bericht auf ASIC-Ebene zur Überprüfung der Weiterleitungsdetails, der im Fall eines verworfenen Pakets den Grund für die Verwerfung angibt. Für diesen Abschnitt relevant, kann der Grund ein SECURITY_GROUP_DENY (Verwerfen der Vertragsrichtlinie) sein.
Ein Python-basiertes Dienstprogramm auf dem APIC, das den Paketfluss mit ELAM nachverfolgen kann.
Diese APIC-Anwendung abstrahiert die Komplexität verschiedener ASICs, um die Weiterleitungsentscheidungsprüfung wesentlich bequemer und benutzerfreundlicher zu gestalten.
Im Abschnitt "Intra-Fabric Forwarding" finden Sie weitere Informationen zu den ELAM-, fTriage- und ELAM Assistant-Tools.
Die CAM-Verwendung der Richtlinien auf Leaf-Basis ist ein wichtiger Parameter, der überwacht werden muss, um sicherzustellen, dass sich die Fabric in einem fehlerfreien Zustand befindet. Die schnellste Möglichkeit, dies zu überwachen, besteht darin, das 'Capacity Dashboard' in der GUI zu verwenden und die Spalte 'Policy Cam' explizit zu überprüfen.
Mit diesem Befehl können Sie verschiedene Ressourcenbeschränkungen und die Ressourcennutzung überprüfen, einschließlich des Richtlinien-CAM. Beachten Sie, dass dieser Befehl nur in vsh_lc ausgeführt werden kann, übergeben Sie ihn also mit dem Flag '-c', wenn er von iBash ausgeführt wird.
leaf8# vsh_lc -c "show platform internal hal health-stats"
|Sandbox_ID: 0 Asic Bitmap: 0x0
|-------------------------------------
...
Policy stats:
=============
policy_count : 96
max_policy_count : 65536
policy_otcam_count : 175
max_policy_otcam_count : 8192
policy_label_count : 0
max_policy_label_count : 0
=============
Es gibt zahlreiche Möglichkeiten, ein Verbindungsproblem zwischen zwei Endpunkten zu beheben. Die folgende Methodik bietet einen guten Ausgangspunkt, um schnell und effektiv zu isolieren, ob das Verbindungsproblem das Ergebnis eines Policy Drop (durch einen Vertrag verursacht) ist.
Vor dem Eintauchen sollten Sie einige wichtige Fragen stellen:
Mit den verschiedenen verfügbaren Tools gibt es einige, die besser geeignet und bequemer als andere zu beginnen sind, abhängig von der Ebene der bereits bekannten Informationen über den betroffenen Fluss.
Ist der vollständige Pfad des Pakets in der ACI-Fabric bekannt (Eingangs-Leaf, Ausgangs-Leaf usw.)?
Bitte beachten Sie, dass das fTriage-Tool in diesem Abschnitt nicht im Detail behandelt wird. Weitere Informationen zur Verwendung dieses Tools finden Sie im Kapitel "Intra-Fabric Forwarding".
Zwar können Transparenz und Fehlerbehebung helfen, schnell zu erkennen, wo Pakete zwischen zwei Endpunkten verloren gehen, fTriage bietet jedoch detailliertere Informationen für die weitere Fehlerbehebung. d. h. fTriage hilft bei der Identifizierung von Schnittstelle, Verwerfungsgrund und anderen grundlegenden Details zum betroffenen Datenfluss.
.
In diesem Beispielszenario wird die Fehlerbehebung bei einem Richtlinienverlust zwischen zwei Endpunkten veranschaulicht: 192.168.21.11 und 192.168.23.11
Wenn zwischen diesen beiden Endpunkten Paketverluste auftreten, wird der folgende Workflow zur Fehlerbehebung verwendet, um die Ursache des Problems zu identifizieren:
Identifizieren Sie die am Datenverkehrsfluss beteiligten src/dst-Leaf(s):
Die obigen Schritte werden im nächsten Absatz näher beschrieben.
In diesem Beispielszenario wird die Fehlerbehebung bei einem Richtlinienverlust zwischen zwei Endpunkten veranschaulicht: 192.168.21.11 in EPG-Web und 192.168.23.11 in EPG-DB.
Das Tool für Transparenz und Fehlerbehebung hilft dabei, den Switch, an dem der Paketverlust aufgetreten ist, für einen bestimmten EP-to-EP-Datenstrom darzustellen und zu identifizieren, wo möglicherweise Pakete verloren gegangen sind.
Konfigurieren eines Sitzungsnamens, einer Quelle und eines Zielendpunkts Klicken Sie dann auf "Senden" oder "Bericht erstellen".
Das Tool sucht automatisch nach den Endpunkten in der Fabric und stellt Informationen über den Tenant, das Anwendungsprofil und die EPG bereit, zu denen diese EP gehören.
In diesem Fall wird festgestellt, dass die EPs zum Tenant Prod1 gehören, dem gleichen Anwendungsprofil "AppProf" angehören und verschiedenen EPGs zugewiesen sind: 'Web' und 'DB'.
Das Tool visualisiert automatisch die Topologie des Fehlerbehebungsszenarios. In diesem Fall sind die beiden Endpunkte zufällig mit demselben Leaf-Switch verbunden.
Durch Navigieren zum Untermenü Drop/Stats kann der Benutzer allgemeine Drops auf dem jeweiligen Leaf oder Spine anzeigen. Im Abschnitt "Interface Drops" im Kapitel "Intra-Fabric Forwarding" dieses Buchs finden Sie weitere Informationen darüber, welche Drops relevant sind.
Viele dieser Einbrüche werden als Verhalten erwartet und können ignoriert werden.
Wenn Sie im Switch-Diagramm über die gelbe Schaltfläche "Verworfene Pakete" detaillierte Angaben zum Dropdown-Menü anzeigen, können Sie Details zum verworfenen Fluss anzeigen.
Durch Navigieren zum Untermenü "Contracts" (Verträge) kann der Benutzer erkennen, welcher Vertrag zu einem Verwerfen von Richtlinien zwischen den EPGs führt. Im Beispiel ist es Implicit to Deny Prod1/VRF1, das einige Treffer anzeigt. Dies bedeutet nicht unbedingt, dass der angegebene Fluss (192.168.21.11 und 192.168.23.11) diese implizite Verweigerung trifft. Wenn die Regel "Hits of Context Implicit Deny" ansteigt, impliziert dies, dass es Datenverkehr zwischen Prod1/DB und Prod1/Web gibt, der keinen der Verträge betrifft und daher von der Implicit Deny verworfen wird.
Wählen Sie in der Ansicht "Anwendungsprofil-Topologie" unter Tenant > links den Namen des Anwendungsprofils aus > Topologie, um zu überprüfen, welche Verträge auf die DB-EPG angewendet werden. In diesem Fall wird der EPG kein Vertrag zugewiesen:
Nachdem die Quell- und Ziel-EPGs bekannt sind, können weitere relevante Informationen wie die folgenden identifiziert werden:
Die Klassen-ID und der Umfang können auf einfache Weise über die APIC-GUI abgerufen werden. Öffnen Sie dazu Tenant > wählen Sie links den Tenant-Namen aus > Betrieb > Ressourcen-IDs > EPGs.
In diesem Fall lauten die Klassen-ID und die Bereiche:
Ein interessantes Tool zum Überprüfen der auf einem ACI-Leaf blockierten Pakete ist die iBash-Befehlszeile: 'show logging ip access-list internal packet-log deny':
leaf5# show logging ip access-list internal packet-log deny | grep 192.168.21.11
[2019-10-01T14:25:44.746528000+09:00]: CName: Prod1:VRF1(VXLAN: 2654209), VlanType: FD_VLAN, Vlan-Id: 114, SMac: 0xf6f26c4ec8d0, DMac:0x0022bdf819ff, SIP: 192.168.21.11, DIP: 192.168.23.11, SPort: 0, DPort: 0, Src Intf: Ethernet1/19, Proto: 1, PktLen: 126
[2019-10-01T14:25:44.288653000+09:00]: CName: Prod1:VRF1(VXLAN: 2654209), VlanType: FD_VLAN, Vlan-Id: 116, SMac: 0x3e2593f0eded, DMac:0x0022bdf819ff, SIP: 192.168.23.11, DIP: 192.168.21.11, SPort: 0, DPort: 0, Src Intf: Ethernet1/19, Proto: 1, PktLen: 126
Wie aus der vorherigen Ausgabe ersichtlich, wurden auf dem Leaf-Switch zahlreiche ICMP-Pakete verworfen, die von der EP 192.168.23.11 in Richtung 192.168.21.11 bezogen wurden.
Das contract_parser-Tool hilft bei der Überprüfung der tatsächlichen Richtlinien für die VRF-Instanz, mit der die Endgeräte verknüpft sind:
leaf5# contract_parser.py --vrf Prod1:VRF1
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]
[7:5159] [vrf:Prod1:VRF1] permit ip tcp tn-Prod1/ap-App1/epg-App(32771) eq 5000 tn-Prod1/ap-App1/epg-Web(32772) [contract:uni/tn-Prod1/brc-web_to_app] [hit=0]
[7:5156] [vrf:Prod1:VRF1] permit ip tcp tn-Prod1/ap-App1/epg-Web(32772) tn-Prod1/ap-App1/epg-App(32771) eq 5000 [contract:uni/tn-Prod1/brc-web_to_app] [hit=0]
[16:5152] [vrf:Prod1:VRF1] permit any epg:any tn-Prod1/bd-Web(49154) [contract:implicit] [hit=0]
[16:5154] [vrf:Prod1:VRF1] permit arp epg:any epg:any [contract:implicit] [hit=0]
[21:5155] [vrf:Prod1:VRF1] deny,log any epg:any epg:any [contract:implicit] [hit=38,+10]
[22:5153] [vrf:Prod1:VRF1] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]
Dies kann auch mithilfe der Zoning-Regel überprüft werden, die im Leaf der vom Switch durchgesetzten Richtlinien programmiert ist.
leaf5# show zoning-rule scope 2654209
+---------+--------+--------+----------+----------------+---------+----------+------------+----------+-------------------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+----------------+---------+----------+------------+----------+-------------------------+
| 5155 | 0 | 0 | implicit | uni-dir | enabled | 2654209 | | deny,log | any_any_any(21) |
| 5159 | 32771 | 32772 | 411 | uni-dir-ignore | enabled | 2654209 | web_to_app | permit | fully_qual(7) |
| 5156 | 32772 | 32771 | 410 | bi-dir | enabled | 2654209 | web_to_app | permit | fully_qual(7) |
+---------+--------+--------+----------+----------------+---------+----------+------------+----------+-------------------------+
Wie bereits vom Visibility & Troubleshooting Tool, vom contract_parser Tool und den Zoning-Regeln festgestellt, wird bei der Ausgabe bestätigt, dass es bei der Fehlerbehebung keinen Vertrag zwischen der Quell- und der Ziel-EPGs gibt. Es kann leicht davon ausgegangen werden, dass die verworfenen Pakete mit der impliziten Ablehnungsregel 5155 übereinstimmen.
Die ELAM-Erfassung bietet einen Bericht auf ASIC-Ebene, mit dem die Weiterleitungsdetails geprüft werden. Dieser Bericht gibt bei einem verworfenen Paket den Grund für die Verwerfung an. Wenn der Grund für das Verwerfen ein Verwerfen von Richtlinien ist (wie in diesem Szenario), sieht die Ausgabe der ELAM-Erfassung wie folgt aus.
Bitte beachten Sie, dass Details zur Einrichtung einer ELAM-Erfassung in diesem Kapitel nicht behandelt werden. Weitere Informationen finden Sie im Kapitel "Intra-Fabric Forwarding".
leaf5# vsh_lc
module-1# debug platform internal tah elam asic 0
module-1(DBG-elam)# trigger init in-select 6 out-select 0
module-1(DBG-elam)# trigger reset
module-1(DBG-elam-insel6)# set outer ipv4 src_ip 192.168.21.11 dst_ip 192.168.23.11
module-1(DBG-elam-insel6)# start
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Triggered
Asic 0 Slice 1 Status Armed
module-1(DBG-elam-insel6)# ereport | grep reason
RW drop reason : SECURITY_GROUP_DENY
LU drop reason : SECURITY_GROUP_DENY
pkt.lu_drop_reason: 0x2D
Der oben gezeigte ELAM-Bericht zeigt deutlich, dass das Paket aufgrund einer Richtlinienlöschung verworfen wurde: 'SECURITY_GROUP_DENY'
Das gleiche Ergebnis der ELAM-Erfassung kann über die ELAM Assistant-App auf der APIC-GUI angezeigt werden.
In der Regel konfiguriert der Benutzer sowohl Quell- als auch Zieldetails für den gewünschten Fluss. In diesem Beispiel wird "src IP" verwendet, um den Datenverkehr zum Endpunkt in der Ziel-EPG zu erfassen, der keine Vertragsbeziehung zur Quell-EPG hat.
Es gibt drei Ausgabeebenen, die mit dem ELAM-Assistenten angezeigt werden können. Dies sind Express, Detail und Raw.
Unter dem Express-Ergebnis gibt der Drop-Code-Grund SECURITY_GROUP_DENY an, dass der Verlust das Ergebnis eines Vertrags war.
Es gibt zwei Arten von Richtliniendurchsetzung für EPGs in einer VRF-Instanz, für die eine vom Vertrag bevorzugte Gruppe konfiguriert ist:
Die Funktion der vom Vertrag bevorzugten Gruppe ermöglicht eine bessere Steuerung der Kommunikation zwischen EPGs in einer VRF-Instanz. Wenn die meisten EPGs in der VRF-Instanz über eine offene Kommunikation verfügen sollten, einige jedoch nur über eine eingeschränkte Kommunikation mit den anderen EPGs verfügen sollten, konfigurieren Sie eine Kombination aus einer vom Vertrag bevorzugten Gruppe und Verträgen mit Filtern, um die Kommunikation zwischen EPGs genauer zu steuern.
EPGs, die aus der bevorzugten Gruppe ausgeschlossen sind, können nur mit anderen EPGs kommunizieren, wenn ein Vertrag besteht, der die Standardregel source-any-destination-any-deny außer Kraft setzt.
Im Wesentlichen handelt es sich bei den bevorzugten Vertragsgruppen um eine Kehrseite aus regulären Verträgen. Bei regulären Verträgen werden explizite Zulassen-Zoning-Regeln mit einer impliziten Deny-Zoning-Regel für den VRF-Bereich programmiert. Für bevorzugte Gruppen wird eine implizite PERMIT-Zoning-Regel mit dem höchsten numerischen Prioritätswert programmiert, und spezifische DENY-Zoning-Regeln werden programmiert, um Datenverkehr von EPGs, die keine Mitglieder einer bevorzugten Gruppe sind, zu verbieten. Daher werden die Verweigerungsregeln zuerst ausgewertet. Wenn der Fluss nicht mit diesen Regeln übereinstimmt, wird der Fluss implizit zugelassen.
Für jede EPG außerhalb der bevorzugten Gruppe gibt es immer ein Paar expliziter Deny Zoning-Regeln:
Die folgende Abbildung zeigt eine logische Topologie, in der die EPGs App, App2 und App3 alle als Mitglieder einer bevorzugten Gruppe konfiguriert sind.
VM-App ist Teil von EPG-App und VM-App2 ist Teil von EPG-App2. Sowohl App als auch App2 EPG sollten Teil der bevorzugten sein und somit frei kommunizieren.
VM-App initiiert einen Datenverkehrsfluss auf dem TCP-Port 6000 zu VM-App2. Sowohl EPG-App als auch EPG-App2 sind Preferred Group Members als Teil von VRF1. VM-App2 empfängt keine Pakete auf dem TCP-Port 6000.
1. Das pcTag der EPG-APP und ihre VRF-VNID/ihren VNID/Scope nachschlagen
EPG- und VRF-PC-Tags
2. Überprüfen Sie die Vertragsprogrammierung mit contract_parser.py auf dem Eingangs-Leaf.
Verwenden Sie contract_parser.py und/oder den Befehl "show zoning rule", und geben Sie die VRF-Instanz an.
fab3-leaf8# show zoning-rule scope 2654209
+---------+--------+--------+----------+---------+---------+---------+------+----------+----------------------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+---------+---------+---------+------+----------+----------------------------+
| 4165 | 0 | 0 | implicit | uni-dir | enabled | 2654209 | | permit | grp_any_any_any_permit(20) |
| 4160 | 0 | 0 | implarp | uni-dir | enabled | 2654209 | | permit | any_any_filter(17) |
| 4164 | 0 | 15 | implicit | uni-dir | enabled | 2654209 | | deny,log | grp_any_dest_any_deny(19) |
| 4176 | 0 | 16386 | implicit | uni-dir | enabled | 2654209 | | permit | any_dest_any(16) |
| 4130 | 32770 | 0 | implicit | uni-dir | enabled | 2654209 | | deny,log | grp_src_any_any_deny(18) |
| 4175 | 49159 | 0 | implicit | uni-dir | enabled | 2654209 | | deny,log | grp_src_any_any_deny(18) |
| 4129 | 0 | 49159 | implicit | uni-dir | enabled | 2654209 | | deny,log | grp_any_dest_any_deny(19) |
| 4177 | 32778 | 0 | implicit | uni-dir | enabled | 2654209 | | deny,log | grp_src_any_any_deny(18) |
| 4128 | 0 | 32778 | implicit | uni-dir | enabled | 2654209 | | deny,log | grp_any_dest_any_deny(19) |
| 4178 | 32775 | 0 | implicit | uni-dir | enabled | 2654209 | | deny,log | grp_src_any_any_deny(18) |
| 4179 | 0 | 32775 | implicit | uni-dir | enabled | 2654209 | | deny,log | grp_any_dest_any_deny(19) |
+---------+--------+--------+----------+---------+---------+---------+------+----------+----------------------------+
fab3-leaf8# contract_parser.py --vrf Prod1:VRF1
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]
[16:4176] [vrf:Prod1:VRF1] permit any epg:any tn-Prod1/bd-App(16386) [contract:implicit] [hit=0]
[16:4160] [vrf:Prod1:VRF1] permit arp epg:any epg:any [contract:implicit] [hit=0]
[18:4130] [vrf:Prod1:VRF1] deny,log any tn-Prod1/vrf-VRF1(32770) epg:any [contract:implicit] [hit=?]
[18:4178] [vrf:Prod1:VRF1] deny,log any epg:32775 epg:any [contract:implicit] [hit=?]
[18:4177] [vrf:Prod1:VRF1] deny,log any epg:32778 epg:any [contract:implicit] [hit=?]
[18:4175] [vrf:Prod1:VRF1] deny,log any epg:49159 epg:any [contract:implicit] [hit=?]
[19:4164] [vrf:Prod1:VRF1] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]
[19:4179] [vrf:Prod1:VRF1] deny,log any epg:any epg:32775 [contract:implicit] [hit=?]
[19:4128] [vrf:Prod1:VRF1] deny,log any epg:any epg:32778 [contract:implicit] [hit=?]
[19:4129] [vrf:Prod1:VRF1] deny,log any epg:any epg:49159 [contract:implicit] [hit=?]
[20:4165] [vrf:Prod1:VRF1] permit any epg:any epg:any [contract:implicit] [hit=65]
Bei der Untersuchung der obigen Ausgabe wird die implizite Zulassungseingabe — ruleId 4165 — mit der höchsten Priorität von 20 beobachtet. Diese implizite Zulässigkeitsregel bewirkt, dass alle Datenverkehrsflüsse zugelassen werden, es sei denn, es gibt eine explizite Ablehnungsregel mit einer niedrigeren Priorität, die den Datenverkehrsfluss nicht zulässt.
Darüber hinaus wurden zwei explizite Deny-Regeln für den pcTag 32775 beobachtet, der das pcTag von EPG App2 ist. Diese beiden expliziten Deny-Zoning-Regeln verbieten den Datenverkehr von einer EPG zu EPG App2 und umgekehrt. Diese Regeln haben die Priorität 18 und 19, daher haben sie Vorrang vor der Standard-Zulassungsregel.
Die Schlussfolgerung lautet, dass EPG App2 kein Preferred Group-Mitglied ist, da die expliziten Deny-Regeln eingehalten werden.
3. Konfiguration der bevorzugten Gruppenmitglieder für die EPG überprüfen
Navigieren Sie in der APIC-GUI, und überprüfen Sie die Konfiguration der bevorzugten Gruppenmitglieder für EPG App2 und EPG App Preferred Group. In der folgenden Abbildung ist EPG App2 nicht als bevorzugtes Gruppenmitglied konfiguriert.
EPG App2 — Bevorzugte Gruppenmitgliedschaft ausgeschlossen
EPG-Anwendung - Einstellungen für bevorzugte Gruppenmitglieder enthalten
4. Setzen Sie EPG App2 als bevorzugtes Gruppenmitglied
Durch Ändern der Konfiguration der App2 EPG kann die bevorzugte Gruppe frei als Teil der bevorzugten Gruppe kommunizieren.
EPG App2 — Einstellungen für bevorzugte Gruppenmitglieder enthalten
5. Überprüfen Sie die Vertragsprogrammierung mit contract_parser.py auf dem Leaf, auf dem sich das src-EP befindet.
Verwenden Sie contract_parser.py erneut, und geben Sie den VRF-Namen an, um zu überprüfen, ob die expliziten Verweigerungsregeln für EPG App2 jetzt entfernt sind.
fab3-leaf8# contract_parser.py --vrf Prod1:VRF1
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]
[16:4176] [vrf:Prod1:VRF1] permit any epg:any tn-Prod1/bd-App(16386) [contract:implicit] [hit=0]
[16:4160] [vrf:Prod1:VRF1] permit arp epg:any epg:any [contract:implicit] [hit=0]
[18:4175] [vrf:Prod1:VRF1] deny,log any epg:16390 epg:any [contract:implicit] [hit=0]
[18:4167] [vrf:Prod1:VRF1] deny,log any epg:23 epg:any [contract:implicit] [hit=0]
[18:4156] [vrf:Prod1:VRF1] deny,log any tn-Prod1/vrf-VRF1(32770) epg:any [contract:implicit] [hit=0]
[18:4168] [vrf:Prod1:VRF1] deny,log any epg:49159 epg:any [contract:implicit] [hit=0]
[19:4164] [vrf:Prod1:VRF1] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]
[19:4169] [vrf:Prod1:VRF1] deny,log any epg:any epg:16390 [contract:implicit] [hit=0]
[19:4159] [vrf:Prod1:VRF1] deny,log any epg:any epg:23 [contract:implicit] [hit=0]
[19:4174] [vrf:Prod1:VRF1] deny,log any epg:any epg:49159 [contract:implicit] [hit=0]
[20:4165] [vrf:Prod1:VRF1] permit any epg:any epg:any [contract:implicit] [hit=65]
Die expliziten Deny-Regeln für EPG App2 und sein pcTag 32775 werden in der obigen Ausgabe nicht mehr beachtet. Das bedeutet, dass der Datenverkehr zwischen EPs in EPG App und EPG App2 nun mit der impliziten Zulässigkeitsregel RuleId 4165 mit der höchsten Priorität von 20 übereinstimmt.
Beim Konfigurieren von Verträgen zwischen einer oder mehreren EPGs können Verträge entweder als verwendete oder bereitgestellte Beziehung konfiguriert werden. Mit steigender Anzahl EPGs kann auch die Anzahl der Vertragsbeziehungen zwischen ihnen zunehmen. In einigen gängigen Anwendungsfällen müssen alle EPGs Datenverkehrsflüsse mit einer anderen spezifischen EPG austauschen. Ein solcher Anwendungsfall könnte eine EPG mit EPs sein, die Dienste bereitstellen, die von allen anderen EPGs innerhalb derselben VRF-Instanz genutzt werden müssen (z. B. NTP oder DNS). vzAny ermöglicht einen geringeren betrieblichen Aufwand bei der Konfiguration der Vertragsbeziehungen zwischen allen EPGs und bestimmten EPGs, die Services bereitstellen, die von allen anderen EPGs genutzt werden. Darüber hinaus ermöglicht vzAny eine wesentlich effizientere Nutzung von Sicherheitsrichtlinien-CAMs auf Leaf-Switches, da für jede vzAny-Vertragsbeziehung nur 2 Zoning-Regeln hinzugefügt werden.
Die folgende Abbildung beschreibt einen solchen Anwendungsfall, bei dem VM-Web und VM-App in EPGs Web bzw. App NTP-Services von VM-NTP in EPG-NTP nutzen müssen. Anstatt einen bereitgestellten Vertrag für das EPG-NTP zu konfigurieren und anschließend denselben Vertrag wie einen genutzten Vertrag für das EPG-Web und die EPG-App zu haben, ermöglicht vzAny jeder EPG in VRF Prod:VRF1 die Nutzung von NTP-Services vom EPG-NTP.
vzAny - Jede EPG in VRF Prod:VRF1 kann NTP-Services von EPG NTP nutzen
Stellen Sie sich ein Szenario vor, in dem Verwerfungen zwischen EPGs beobachtet werden, die die NTP-Services nutzen, wenn es keinen Vertrag zwischen diesen gibt.
1. Das pcTag des EPG NTP und seine VRF VNID/Scope nachschlagen
'Tenant > Operational > Resource IDs > EPGs' ermöglicht das Finden des pcTag und des Geltungsbereichs
EPG NTP pcTag und VRF-VNID/Scope
2. Überprüfen Sie, ob ein Vertrag als vzAny-Vertrag konfiguriert ist, der als Teil der VRF-Instanz genutzt wird.
Navigieren Sie zur VRF-Instanz, und überprüfen Sie, ob unter "EPG Collection for VRF" ein als vzAny konfigurierter Consumed-Vertrag vorhanden ist.
Vertrag als genutzter vz konfiguriertJeder Vertrag auf der VRF-Instanz
3. Überprüfen Sie, ob derselbe Vertrag wie ein bereitgestellter Vertrag auf das EPG NTP angewendet wird.
Um eine Vertragsbeziehung herzustellen, muss derselbe Vertrag wie ein bereitgestellter Vertrag auf EPG NTP angewendet werden, das NTP-Services für die anderen EPGs in seiner VRF-Instanz bereitstellt.
4. Überprüfung der Zoning-Regel auf dem Eingangs-Leaf mit contract_parser.py oder 'show zoning-rule'
Der Eingangs-Leaf sollte über 2 Zoning-Regeln verfügen, um bidirektionale Datenverkehrsflüsse zwischen EPG und EPG-NTP zu ermöglichen (wenn der Vertragssubjekt so festgelegt ist, dass beide Richtungen zulässig sind). "Any EPG" wird in der Zoning-Regel-Programmierung als pcTag 0 bezeichnet.
Durch die Verwendung der Befehle contract_parser.py oder "show zoning-rule" auf dem Eingangs-Leaf und die Angabe der VRF-Instanz wird sichergestellt, dass die Zoning-Regel programmiert wird.
Verwenden Sie contract_parser.py und 'show zoning-rule', um das Vorhandensein der vzAny-basierten Zoning-Regeln zu überprüfen.
Hier werden zwei Arten von Regeln deutlich:
Da die niedrigste Priorität Vorrang hat, haben alle EPGs der VRF-Instanz Zugriff auf die NTP-EPG.
fab3-leaf8# contract_parser.py --vrf Prod1:VRF
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]
[13:4156] [vrf:Prod1:VRF1] permit ip tcp tn-Prod1/ap-Services/epg-NTP(49161) eq 123 epg:any [contract:uni/tn-Prod1/brc-any_to_ntp] [hit=0]
[14:4168] [vrf:Prod1:VRF1] permit ip tcp epg:any tn-Prod1/ap-Services/epg-NTP(49161) eq 123 [contract:uni/tn-Prod1/brc-any_to_ntp] [hit=0]
[16:4176] [vrf:Prod1:VRF1] permit any epg:any tn-Prod1/bd-App(16386) [contract:implicit] [hit=0]
[16:4174] [vrf:Prod1:VRF1] permit any epg:any tn-Prod1/bd-Services(32776) [contract:implicit] [hit=0]
[16:4160] [vrf:Prod1:VRF1] permit arp epg:any epg:any [contract:implicit] [hit=0]
[21:4165] [vrf:Prod1:VRF1] deny,log any epg:any epg:any [contract:implicit] [hit=65]
[22:4164] [vrf:Prod1:VRF1] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]
fab3-leaf8# show zoning-rule scope 2654209
+---------+--------+--------+----------+---------+---------+---------+------------+----------+----------------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+---------+---------+---------+------------+----------+----------------------+
| 4165 | 0 | 0 | implicit | uni-dir | enabled | 2654209 | | deny,log | any_any_any(21) |
| 4160 | 0 | 0 | implarp | uni-dir | enabled | 2654209 | | permit | any_any_filter(17) |
| 4164 | 0 | 15 | implicit | uni-dir | enabled | 2654209 | | deny,log | any_vrf_any_deny(22) |
| 4176 | 0 | 16386 | implicit | uni-dir | enabled | 2654209 | | permit | any_dest_any(16) |
| 4174 | 0 | 32776 | implicit | uni-dir | enabled | 2654209 | | permit | any_dest_any(16) |
| 4168 | 0 | 49161 | 424 | uni-dir | enabled | 2654209 | any_to_ntp | permit | any_dest_filter(14) |
| 4156 | 49161 | 0 | 425 | uni-dir | enabled | 2654209 | any_to_ntp | permit | src_any_filter(13) |
+---------+--------+--------+----------+---------+---------+---------+------------+----------+----------------------+
Shared Layer 3 Out ist eine Konfiguration, die ein L3Out in einer VRF-Instanz zulässt, das einige Dienste bereitstellt (externer Zugriff), und eine oder mehrere andere VRFs nutzen dieses L3Out. Weitere Informationen zu gemeinsam genutztem L3Out finden Sie im Kapitel "Externes Routing".
Wenn Sie gemeinsam genutztes L3Out verwenden, wird empfohlen, dass der Anbieter des Vertrags das gemeinsam genutzte L3Out ist und die EPG der Verbraucher des Vertrags ist. Dieses Szenario wird in diesem Abschnitt veranschaulicht.
Es wird nicht empfohlen, das Gegenteil zu tun, d. h. L3Out nutzt einen Service, der von einer EPG bereitgestellt wird. Der Grund dafür liegt in der Skalierbarkeit, da bei Shared Services die Zoning-Regeln nur auf der VRF-Instanz des Verbrauchers installiert werden. Die Prinzipien von Consuming und Provisioning bezeichnen, wo Datenverkehrsflüsse initiiert werden. Bei der standardmäßigen Durchsetzung von Zugangsrichtlinien bedeutet dies, dass die Durchsetzung von Richtlinien auf der Verbraucherseite und insbesondere auf dem Eingangs-Leaf (nicht grenzüberschreitend) erfolgt. Damit der Eingangs-Leaf die Richtlinie erzwingen kann, benötigt er das pcTag des Ziels. In diesem Szenario ist das externe EPG pcTag das Ziel. Der Eingangs-Leaf führt somit die Richtliniendurchsetzung durch und leitet die Pakete an den Grenz-Leaf weiter. Der Grenz-Leaf empfängt das Paket über seine Fabric-Verbindung, die eine Route Lookup (LPM) durchführt, und leitet das Paket an die Adjacency für das Zielpräfix weiter.
Der Grenz-Leaf führt jedoch KEINE Richtliniendurchsetzung durch, wenn Datenverkehr an das Ziel-EP gesendet wird, und tut dies auch nicht, wenn der zurückkehrende Datenverkehr an das Quell-EP zurückfließt.
Daher sind nur auf dem Richtlinien-CAM des Eingangs-Nicht-BL-Leaf Einträge installiert (im Verbraucher-VRF), und der Richtlinien-CAM des BL ist davon nicht betroffen.
1. Überprüfen Sie EPG pcTag und VRF VNID/Scope für die Verbraucher-EPG
Bei gemeinsam genutztem L3Out werden die Zoning-Regeln nur im Verbraucher-VRF installiert. Der Anbieter muss über ein globales pcTag (unter 16k) verfügen, das die Verwendung dieses pcTags in allen Consumer-VRFs ermöglicht. In unserem Szenario ist der Anbieter die externe EPG und verfügt über ein globales pcTag. Die Verbraucher-EPG verfügt wie gewohnt über ein lokales pcTag.
pcTag der Verbraucher-EPG
2. Überprüfen Sie das pcTag und VRF VNID/Scope für die Provider L3Out EPG.
Wie in Schritt 1 angegeben, verfügt die L3Out-EPG des Anbieters über einen globalen Bereich für pcTag als Präfixe von L3Out, die in die VRF-Instanz des Verbrauchers gelangen. Daher muss sich das L3Out EPG pcTag nicht mit pcTags im Consumer-VRF überschneiden und liegt somit im globalen pcTag-Bereich.
pcTag des Anbieters externe EPG
3. Vergewissern Sie sich, dass für die Consumer-EPG entweder ein importierter Tenant-Vertrag oder ein globaler Vertrag konfiguriert ist.
Das EPG-NTP des Privatnutzers mit dem in der EPG/BD definierten Subnetz nutzt den Vertrag mit dem Gültigkeitsbereich "Tenant" oder "global".
Von EPG genutzter Vertrag
4. Überprüfen Sie, ob für den BD der Consumer-EPG ein Subnetz konfiguriert ist, dessen Bereich auf "Shared between VRFs" (Gemeinsam genutzte VRFs) festgelegt ist.
Das Subnetz der EPG wird unter der Bridge-Domäne konfiguriert, muss jedoch das Flag "shared between VRF" (für das Routing von Lecks) und das Flag "advertised external" (für das Ankündigen von L3Out) aufweisen.
5. Überprüfen Sie, ob für die L3Out-EPG des Anbieters entweder ein importierter Vertrag mit Tenant-Gültigkeitsbereich oder ein globaler Vertrag konfiguriert ist.
Für die L3Out-EPG muss entweder ein Vertrag mit Tenant-Umfang oder ein globaler Vertrag als bereitgestellter Vertrag konfiguriert sein.
Vertrag bei Anbieter L3Out
6. Überprüfen Sie, ob für die L3Out-EPG des Anbieters ein Subnetz konfiguriert ist, das die erforderlichen Bereiche aktiviert hat.
Für die Provider-L3Out-EPG sollte das zu durchsickernde Präfix mit den folgenden Bereichen konfiguriert sein:
Weitere Informationen zur Subnetzflagge in der L3Out-EPG finden Sie im Kapitel "Externe Weiterleitung".
Externe EPG-Subnetzeinstellungen
Erweiterte externe EPG-Subnetzeinstellungen
7. Überprüfen Sie das pcTag des L3Out-EPG-Subnetzes auf dem Nicht-BL für die VRF-Instanz des Verbrauchers.
Wenn Datenverkehr, der an das externe EPG-Subnetz gerichtet ist, die Nicht-BL-Domäne erreicht, wird anhand des Zielpräfix eine Suche durchgeführt, um das pcTag zu ermitteln. Dies kann mit dem folgenden Befehl auf der anderen Seite überprüft werden.
Diese Ausgabe erfolgt im Rahmen des VNI 2818048, der VRF-VNID des Verbrauchers. In der Tabelle kann der Verbraucher das pcTag des Ziels finden, auch wenn es sich nicht im gleichen VRF befindet.
fab3-leaf8# vsh -c 'show system internal policy-mgr prefix' | egrep 'Vrf-Vni|==|common:default'
Vrf-Vni VRF-Id Table-Id Table-State VRF-Name Addr Class Shared Remote Complete
======= ====== =========== ======= ============================ ================================= ====== ====== ====== ========
2818048 19 0x13 Up common:default 0.0.0.0/0 15 False False False
2818048 19 0x80000013 Up common:default ::/0 15 False False False
2818048 19 0x13 Up common:default 172.16.10.0/24 25 True True False
Die obige Ausgabe zeigt die Kombination des L3Out EPG-Subnetzes und seines globalen pcTag 25.
8. Überprüfen Sie die programmierten Zoning-Regeln auf dem Nicht-BL für das Verbraucher-VRF.
Verwenden Sie entweder den Befehl "contract_parser.py" oder den Befehl "show zoning-rule", und geben Sie die VRF-Instanz an.
Im Folgenden werden zwei Zoning-Regeln angezeigt, die den Datenverkehr vom lokalen pcTag 16410 der Consumer-EPG zum globalen pcTag 25 der L3Out-EPG zulassen. Dies ist im Bereich 2818048, dem Bereich der Consumer-VRF-Instanz.
fab3-leaf8# show zoning-rule scope 2818048
+---------+--------+--------+----------+----------------+---------+---------+-----------------+----------+-----------------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+----------------+---------+---------+-----------------+----------+-----------------------+
| 4174 | 0 | 0 | implarp | uni-dir | enabled | 2818048 | | permit | any_any_filter(17) |
| 4168 | 0 | 15 | implicit | uni-dir | enabled | 2818048 | | deny,log | any_vrf_any_deny(22) |
| 4167 | 0 | 32789 | implicit | uni-dir | enabled | 2818048 | | permit | any_dest_any(16) |
| 4159 | 0 | 0 | implicit | uni-dir | enabled | 2818048 | | deny,log | any_any_any(21) |
| 4169 | 25 | 0 | implicit | uni-dir | enabled | 2818048 | | deny,log | shsrc_any_any_deny(12)|
| 4156 | 25 | 16410 | 425 | uni-dir-ignore | enabled | 2818048 | external_to_ntp | permit | fully_qual(7) |
| 4131 | 16410 | 25 | 424 | bi-dir | enabled | 2818048 | external_to_ntp | permit | fully_qual(7) |
+---------+--------+--------+----------+----------------+---------+---------+-----------------+----------+-----------------------+
fab3-leaf8# contract_parser.py --vrf common:default
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]
[7:4131] [vrf:common:default] permit ip tcp tn-Prod1/ap-Services/epg-NTP(16410) tn-Prod1/l3out-L3Out1/instP-extEpg(25) eq 123 [contract:uni/tn-Prod1/brc-external_to_ntp] [hit=0]
[7:4156] [vrf:common:default] permit ip tcp tn-Prod1/l3out-L3Out1/instP-extEpg(25) eq 123 tn-Prod1/ap-Services/epg-NTP(16410) [contract:uni/tn-Prod1/brc-external_to_ntp] [hit=0]
[12:4169] [vrf:common:default] deny,log any tn-Prod1/l3out-L3Out1/instP-extEpg(25) epg:any [contract:implicit] [hit=0]
[16:4167] [vrf:common:default] permit any epg:any tn-Prod1/bd-Services(32789) [contract:implicit] [hit=0]
[16:4174] [vrf:common:default] permit arp epg:any epg:any [contract:implicit] [hit=0]
[21:4159] [vrf:common:default] deny,log any epg:any epg:any [contract:implicit] [hit=0]
[22:4168] [vrf:common:default] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]
9. Überprüfen Sie die programmierten Zoning-Regeln auf dem BL für das Provider-VRF.
Verwenden Sie entweder den Befehl "contract_parser.py" oder den Befehl "show zoning-rule", und geben Sie die VRF-Instanz an. Die folgenden Befehlsausgaben zeigen, dass es KEINE spezifischen Zoning-Regeln in der Provider-VRF-Instanz gibt, wie zuvor mehrmals beschrieben.
Der Bereich 2719752 gehört zum Bereich von Provider-VRF.
border-leaf# show zoning-rule scope 2719752
+---------+--------+--------+----------+----------------+---------+---------+--------------+----------+----------------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+----------------+---------+---------+--------------+----------+----------------------+
| 4134 | 10937 | 24 | default | uni-dir-ignore | enabled | 2719752 | vrf1_to_vrf2 | permit | src_dst_any(9) |
| 4135 | 24 | 10937 | default | bi-dir | enabled | 2719752 | vrf1_to_vrf2 | permit | src_dst_any(9) |
| 4131 | 0 | 0 | implicit | uni-dir | enabled | 2719752 | | deny,log | any_any_any(21) |
| 4130 | 0 | 0 | implarp | uni-dir | enabled | 2719752 | | permit | any_any_filter(17) |
| 4132 | 0 | 15 | implicit | uni-dir | enabled | 2719752 | | deny,log | any_vrf_any_deny(22) |
+---------+--------+--------+----------+----------------+---------+---------+--------------+----------+----------------------+
border-leaf# contract_parser.py --vrf Prod1:VRF3
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]
[9:4134] [vrf:Prod1:VRF3] permit any tn-Prod1/l3out-L3Out1/instP-extEpg2(10937) tn-Prod1/l3out-L3Out2/instP-extEpg2(24) [contract:uni/tn-Prod1/brc-vrf1_to_vrf2] [hit=0]
[9:4135] [vrf:Prod1:VRF3] permit any tn-Prod1/l3out-L3Out2/instP-extEpg2(24) tn-Prod1/l3out-L3Out1/instP-extEpg2(10937) [contract:uni/tn-Prod1/brc-vrf1_to_vrf2] [hit=0]
[16:4130] [vrf:Prod1:VRF3] permit arp epg:any epg:any [contract:implicit] [hit=0]
[21:4131] [vrf:Prod1:VRF3] deny,log any epg:any epg:any [contract:implicit] [hit=0]
[22:4132] [vrf:Prod1:VRF3] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
05-Aug-2022 |
Erstveröffentlichung |