La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
ACI gestisce molte configurazioni di routing e switching tradizionalmente complesse attraverso l'implementazione di regole semplici. Tra queste funzionalità vi è la capacità di trafugare le rotte tra le VFR per facilitare la condivisione dei servizi. In genere, questa operazione richiede la definizione di destinazioni di route, la creazione di famiglie di indirizzi BGP, differenziatori di route e la replica di questa configurazione su più dispositivi.
All'interno di ACI la perdita di percorso viene gestita tramite la combinazione di contratti e l'impostazione di specifici flag condivisi sulle subnet. Tutta la configurazione tradizionale necessaria per risolvere le perdite di percorso viene gestita sul back-end come risultato della configurazione del contratto e della subnet condivisa.
Tuttavia, con questa configurazione astratta, può diventare più difficile identificare quale contratto sta effettivamente causando la perdita di un percorso. Ciò è particolarmente vero in ambienti con un gran numero di epg, vrf e contratti. In caso di perdita imprevista di una route tra le VFR, in che modo un amministratore può identificare la configurazione (contratto) che causa il problema?
Lo scopo di questo documento è quello di dimostrare come identificare la relazione contrattuale che causa la fuoriuscita di un percorso in ACI tra VRF. È utile conoscere già i concetti tradizionali di route-leaking, quali route-target e BGP VPNv4.
Tutti gli esempi riportati in questo documento sono basati sul software aci versione 4.2(3j).
In questa sezione verrà esaminato lo scenario in cui una subnet BD o EPG viene inaspettatamente resa a un altro file VRF. Affinché una subnet BD/EPG venga persa, è necessario configurare il flag "Condiviso tra VRF". La parte più difficile è capire quale contratto sta causando la diffusione di questo, in modo che questo è ciò che questa sezione affronterà.
Ad alto livello, questo è il flusso di lavoro per ciò che accade quando una subnet BD/EPG viene sfogliata tra vrf.
Figura 1.
*Notare che #3 è applicabile solo quando si annuncia un l3out condiviso. I numeri 1 e 2 vengono sempre applicati indipendentemente dal fatto che venga utilizzato un l3out condiviso o che i servizi condivisi siano interamente interni.
Prima di tutto, come può l'utente sapere se il percorso installato è trapelato come risultato di una subnet BD o EPG?
Quando si esegue il comando "show ip route vrf <nome>", il flag "pervasive" indica che la route è una subnet BD o EPG.
Ad esempio, nella topologia sopra riportata, questo valore viene visualizzato nella foglia del bordo del file vrf esterno (vrf1):
leaf103# show ip route 10.100.100.100 vrf jy:vrf1 IP Route Table for VRF "jy:vrf1" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%' in via output denotes VRF 10.100.100.0/24, ubest/mbest: 1/0, attached, direct, pervasive *via 10.3.144.68%overlay-1, [1/0], 21:29:54, static, tag 4294967292 recursive next hop: 10.3.144.68/32%overlay-1
È inoltre possibile visualizzare il file vrf di destinazione da cui la subnet è stata persa eseguendo il comando seguente:
leaf103# vsh -c "show ip route 10.100.100.100 detail vrf jy:vrf1" IP Route Table for VRF "jy:vrf1" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%' in via output denotes VRF 10.100.100.0/24, ubest/mbest: 1/0, attached, direct, pervasive *via 10.3.144.68%overlay-1, [1/0], 21:34:16, static, tag 4294967292 recursive next hop: 10.3.144.68/32%overlay-1 vrf crossing information: VNID:0x258003 ClassId:0x18 Flush#:0x2
*(notare che le informazioni di attraversamento del vrf sono impostate indipendentemente dal fatto che il vrf di destinazione sia diverso dal vrf di ricerca).
Nell'output sopra riportato, il vnid di attraversamento VRF è impostato su 0x258003 o sul valore decimale 2457603. Come è possibile identificare il vrf di tale vnid 2457603?
Dall'APIC è sufficiente eseguire una query sull'oggetto fvCtx e sul filtro in base al segmento.
apic1# moquery -c fvCtx -f 'fv.Ctx.seg=="2457603"' Total Objects shown: 1 # fv.Ctx name : vrf2 dn : uni/tn-jy/ctx-vrf2 pcEnfDir : ingress pcEnfPref : enforced pcTag : 49153 scope : 2457603 seg : 2457603
Come previsto, la route viene appresa dal file vrf2 vrf.
A questo punto, non è ancora chiaro quale contratto sia in uso, quale sia l'offerta di epg e quale sia l'opzione utilizzata da epg per installare il percorso. Per quanto riguarda il rapporto tra fornitore e consumatore, occorre tenere presenti alcune considerazioni:
1. Per un rapporto contrattuale inter-vrf, il contratto (e la conseguente regola di suddivisione in zone) è installato solo nel vrf del consumer epg. Di conseguenza, "show zoning-rule" nel file vrf del provider non visualizzerà la relazione.
2. Anche se il contratto è installato solo nel vrf consumer, il vrf provider deve ottenere il percorso per la subnet vrf BD consumer, il che significa che la foglia deve avere alcuni riferimenti di configurazione al contratto.
L'oggetto ipCons nella foglia viene installato nella foglia che fa riferimento a...
a.) il percorso che viene perduto al vrf consumer
b) il contratto che stabilisce il rapporto
c.) gli epg fornitore e consumatore nella relazione.
Nell'output seguente, "jy:vrf1" è il file vrf consumer a cui viene persa la route e "10.100.100.0/24" è la route che viene trapelata.
leaf103# moquery -c ipCons -f 'ip.Cons.dn*"jy:vrf1/rt-\[10.100.100.0/24\]"' Total Objects shown: 1 # ip.Cons consDn : cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no] subConsDn : childAction : dn : sys/ipv4/inst/dom-jy:vrf1/rt-[10.100.100.0/24]/rsrouteToRouteDef-[bd-[uni/tn-jy/BD-bd1]-isSvc-no/epgDn-[uni/tn-jy/ap-ap1/epg-epg1]/rt-[10.100.100.1/24]]/cons-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]]-sub-[] lcOwn : local modTs : 2019-12-23T12:50:51.440-05:00 name : nameAlias : rn : cons-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]]-sub-[] status :
Dall'output sopra riportato, il nome del contratto è "shared", il nome dell'epg consumer è l3out epg "uni/tn-jy/out-jy-ospf/instP-all" e il nome dell'epg provider è "uni/tn-jy/ap-ap1/epg-epg1".
L'oggetto consNode viene installato nella foglia del file vrf del provider. Fa riferimento alla subnet BD nel file vrf consumer che viene divulgato, al contratto e all'interno della relazione. Prima di eseguire una query su questo oggetto, individuare la subnet BD in cui è configurato il percorso. A tale scopo, è possibile eseguire una query sull'oggetto fvSubnet nell'apic:
apic1:~> moquery -c fvSubnet -f 'fv.Subnet.dn*"10.100.100"' # fv.Subnet ip : 10.100.100.1/24 dn : uni/tn-jy/BD-bd1/subnet-[10.100.100.1/24] preferred : no rn : subnet-[10.100.100.1/24] scope : public,shared
Il percorso è configurato nel dominio bridge tn-jy/BD-bd1. Utilizzare questa e l'ID del file vrf del provider (a cui la route sta perdendo) per eseguire il comando seguente.
leaf103# moquery -c consNode -f 'cons.Node.dn*"2949122"' -f 'cons.Node.dn*"tn-jy/BD-bd1"' Total Objects shown: 1 # cons.Node consDn : cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/ap-ap1/epg-epg1]-any-no] annotation : childAction : descr : dn : consroot-[bd-[uni/tn-jy/BD-bd1]-isSvc-no]-[sys/ctx-[vxlan-2949122]]/consnode-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]] extMngdBy : lcOwn : local modTs : 2019-12-23T12:25:36.153-05:00 name : nameAlias : rn : consnode-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]] status : uid : 0
Dall'output sopra riportato il nome del contratto è "shared", il nome dell'epg consumer è "uni/tn-jy/ap-ap1/epg-epg1" e il nome dell'epg provider è l3out "tn-jy/out-jy-ospf/instP-all".
L'esempio di vzAny sarà identico, dal punto di vista della verifica, a un tradizionale rapporto fornitore / consumatore. Gli esempi riportati di seguito illustrano semplicemente l'aspetto che avrebbe. Si noti che un contratto inter-vrf è supportato solo se il cliente è vzAny.
Analogamente al primo esempio in cui è stata eseguita la verifica nel file vrf consumer, l'oggetto ipCons verrà utilizzato di nuovo.
leaf103# moquery -c ipCons -f 'ip.Cons.dn*"jy:vrf1/rt-\[10.100.100.0/24\]"' Total Objects shown: 1 # ip.Cons consDn : cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/ctx-vrf1/any]/fr-[uni/tn-jy/brc-shared/any-[uni/tn-jy/ctx-vrf1/any]-type-cons_as_any/cons-[uni/tn-jy/ctx-vrf1/any]-any-yes]/to-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no] subConsDn : childAction : dn : sys/ipv4/inst/dom-jy:vrf1/rt-[10.100.100.0/24]/rsrouteToRouteDef-[bd-[uni/tn-jy/BD-bd1]-isSvc-no/epgDn-[uni/tn-jy/ap-ap1/epg-epg1]/rt-[10.100.100.1/24]]/cons-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/ctx-vrf1/any]/fr-[uni/tn-jy/brc-shared/any-[uni/tn-jy/ctx-vrf1/any]-type-cons_as_any/cons-[uni/tn-jy/ctx-vrf1/any]-any-yes]/to-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]]-sub-[] lcOwn : local modTs : 2019-12-23T13:11:08.077-05:00 name : nameAlias : rn : cons-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/ctx-vrf1/any]/fr-[uni/tn-jy/brc-shared/any-[uni/tn-jy/ctx-vrf1/any]-type-cons_as_any/cons-[uni/tn-jy/ctx-vrf1/any]-any-yes]/to-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]]-sub-[] status :
Dall'output sopra riportato il nome del contratto è "shared", l'epg consumer è vrf1 vzAny "tn-jy/ctx-vrf1/any" e il provider epg è "uni/tn-jy/ap-ap1/epg-epg1".
Analogamente al secondo esempio in cui è stata eseguita la verifica nel file vrf del provider, l'oggetto consNode verrà utilizzato di nuovo. Ricordarsi di ottenere il nome bd del BD in cui è configurata la subnet trafugata e il vnid del vrf in cui è trapelata.
leaf103# moquery -c consNode -f 'cons.Node.dn*"vxlan-2949122"' -f 'cons.Node.dn*"tn-jy/BD-bd1"' Total Objects shown: 1 # cons.Node consDn : cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/any-[uni/tn-jy/ctx-vrf2/any]-type-cons_as_any/cons-[uni/tn-jy/ctx-vrf2/any]-any-yes] annotation : childAction : descr : dn : consroot-[bd-[uni/tn-jy/BD-bd1]-isSvc-no]-[sys/ctx-[vxlan-2949122]]/consnode-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/any-[uni/tn-jy/ctx-vrf2/any]-type-cons_as_any/cons-[uni/tn-jy/ctx-vrf2/any]-any-yes]] extMngdBy : lcOwn : local modTs : 2019-12-23T13:06:09.016-05:00 name : nameAlias : rn : consnode-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/out-jy-ospf/instP-all]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]/to-[uni/tn-jy/brc-shared/any-[uni/tn-jy/ctx-vrf2/any]-type-cons_as_any/cons-[uni/tn-jy/ctx-vrf2/any]-any-yes]] status : uid : 0
Dall'output sopra riportato, il nome del contratto è "shared", l'epg del consumatore è vrf2 vzAny "tn-jy/ctx-vrf2/any" e il provider epg è l3out "tn-jy/out-jy-ospf/instP-all".
Ad alto livello, questo è il flusso di lavoro per ciò che accade quando una route l3out appresa (esterna) viene persa tra vrfs.
Figura 2.
Come si può vedere sopra, il file vrf interno (vrf2 in questo caso) installa un'importazione route-target che corrisponde al file vrf1. Installa inoltre una mappa di importazione nel processo bgp che deve avere voci di elenco di prefissi corrispondenti a tutto ciò che è definito nell'output l3out e che ha il flag "shared route control subnet" selezionato.
Indipendentemente da quale sia il fornitore o il consumatore, le fasi di verifica sono le stesse in quanto il contratto è sempre responsabile dell'importazione della route-target e degli elenchi di prefissi corrispondenti che perderanno le route da installare.
Prima di tutto, verificare che il percorso venga effettivamente appreso tramite l3out:
leaf101# show ip route 10.9.9.1 vrf jy:vrf2 IP Route Table for VRF "jy:vrf2" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%' in via output denotes VRF 10.9.9.1/32, ubest/mbest: 1/0 * via 10.3.248.4% overlay-1, [200/5], 00:00:13, bgp-65001, internal, tag 65001
Nell'esempio precedente, il fatto che venga appreso dal processo bgp della struttura puntando a un'altra foglia nella sovrapposizione indica che questo proviene da un l3out.
Eseguire le informazioni seguenti per ottenere ulteriori informazioni sul file vrf da cui è stato appreso:
leaf101# vsh -c "show ip route 10.9.9.1 detail vrf jy:vrf2" IP Route Table for VRF "jy:vrf2" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%' in via output denotes VRF 10.9.9.1/32, ubest/mbest: 1/0 *via 10.3.248.4%overlay-1, [200/5], 00:05:46, bgp-65001, internal, tag 65001 (mpls-vpn) MPLS[0]: Label=0 E=0 TTL=0 S=0 (VPN) client-specific data: 6b recursive next hop: 10.3.248.4/32%overlay-1 extended route information: BGP origin AS 65001 BGP peer AS 65001 rw-vnid: 0x2d0002 table-id: 0x17 rw-mac: 0
Come mostrato in precedenza in questo documento, riscrivere il vnid 0x2d0002 / 2949122 è il vrf di destinazione. Il valore rw-vnid impostato su un valore diverso da zero in un esempio di route esterna indica che è stato appreso da un diverso file vrf. L'esecuzione di moquery -c fvCtx -f 'fv.Ctx.seg="2949122"' sull'apic indica che appartiene alla vrf1.
Individuare quindi le importazioni route-target e la route-map di importazione associata al processo bgp.
leaf101# show bgp process vrf jy:vrf2 Information regarding configured VRFs: BGP Information for VRF jy:vrf2 VRF Type : System VRF Id : 23 VRF state : UP VRF configured : yes VRF refcount : 0 VRF VNID : 2457603 Router-ID : 10.100.100.1 Configured Router-ID : 0.0.0.0 Confed-ID : 0 Cluster-ID : 0.0.0.0 MSITE Cluster-ID : 0.0.0.0 No. of configured peers : 0 No. of pending config peers : 0 No. of established peers : 0 VRF RD : 101:2457603 VRF EVPN RD : 101:2457603 Information for address family IPv4 Unicast in VRF jy:vrf2 Table Id : 17 Table state : UP Table refcount : 5 Peers Active-peers Routes Paths Networks Aggregates 0 0 2 2 0 0 Redistribution None Wait for IGP convergence is not configured Import route-map 2457603-shared-svc-leak <-- bgpRtCtrlMapP Export RT list: 65001:2457603 Import RT list: 65001:2457603 65001:2949122 <-- bgpRttEntry Label mode: per-prefix
Il file VFR interno di cui sopra esporta e importa il proprio router di destinazione (65001:2457603). Sta anche importando 65001:2949122. La 2949122 RT corrisponde al vnid vrf che sta importando (vrf1). bgpRtCtrlMapP è il nome oggetto per la route-map di importazione che contiene gli elenchi di prefissi. bgpRttEntry è il nome dell'oggetto per la route-target di importazione.
Quindi, utilizzando il vnid della vrf interna che sta apprendendo le route vrf esterne, eseguire una query su tutti gli elenchi di prefissi installati nella route-map dei servizi condivisi.
leaf101# moquery -c rtpfxEntry -f 'rtpfx.Entry.dn*"pfxlist-IPv4'.*'2457603-shared-svc-leak"' | egrep "criteria|dn|pfx|toPfxLen" # rtpfx.Entry criteria : inexact dn : sys/rpm/pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak/ent-2 pfx : 0.0.0.0/0 toPfxLen : 32 # rtpfx.Entry criteria : exact dn : sys/rpm/pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak/ent-3 pfx : 10.9.9.1/32 toPfxLen : 0 # rtpfx.Entry criteria : exact dn : sys/rpm/pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak/ent-1 pfx : 10.9.9.0/24 toPfxLen : 0
Ogni voce deve corrispondere a una subnet esterna. L'attributo "accuracy / inprecise" indica se il flag "aggregate shared" è stato impostato sulla subnet esterna. Il prefisso 0.0.0.0/0 con il flag inesatto indica che corrisponderebbe a tutte le route più specifiche (di fatto tutte). Il prefisso 10.9.9.0/24 con il flag esatto indica che corrisponde solo a /24.
Trovare la voce (o le voci) che corrispondono alla route che viene persa in modo imprevisto. In questo caso, il prefisso è 10.9.9.1/32; nelle uscite precedenti, ai due prefissi corrisponderebbe un prefisso ent-2 e ent-3.
Utilizzando il nome prefisso-elenco, trovare il numero di sequenza nella route-map corrispondente.
leaf101# moquery -c rtmapRsRtDstAtt -f 'rtmap.RsRtDstAtt.tDn*"pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak"' Total Objects shown: 1 # rtmap.RsRtDstAtt tDn : sys/rpm/pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak childAction : dn : sys/rpm/rtmap-2457603-shared-svc-leak/ent-1001/mrtdst/rsrtDstAtt-[sys/rpm/pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak] forceResolve : yes lcOwn : local modTs : 2019-12-24T11:17:08.668-05:00 rType : mo rn : rsrtDstAtt-[sys/rpm/pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak] state : formed stateQual : none status : tCl : rtpfxRule tSKey : IPv4-2949122-24-25-2457603-shared-svc-leak tType : mo
L'output precedente mostra che questa è la voce route-map 1001. La parte finale è capire quale contratto è stato responsabile della creazione della voce 1001 della route-map all'interno della route-map 2457603-shared-svc-leak. È possibile eseguire una query sulla foglia dall'oggetto fvAppEpGCons.
leaf101# moquery -c fvAppEpGCons -f 'fv.AppEpGCons.dn*"rtmap-2457603-shared-svc-leak/ent-1001"' Total Objects shown: 1 # fv.AppEpGCons consDn : cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/ap-ap1/epg-epg1]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]/to-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/out-jy-ospf/instP-all]-any-no] childAction : descr : dn : uni/ctxrefcont/ctxref-[sys/ctx-[vxlan-2457603]]/epgref-[uni/tn-jy/ap-ap1/epg-epg1]/epgpol-[sys/rpm/rtmap-2457603-shared-svc-leak/ent-1001]/epgcons-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/ap-ap1/epg-epg1]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]/to-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]] lcOwn : local modTs : 2019-12-23T14:36:48.753-05:00 name : nameAlias : ownerKey : ownerTag : rn : epgcons-[cdef-[uni/tn-jy/brc-shared]/epgCont-[uni/tn-jy/ap-ap1/epg-epg1]/fr-[uni/tn-jy/brc-shared/dirass/prov-[uni/tn-jy/ap-ap1/epg-epg1]-any-no]/to-[uni/tn-jy/brc-shared/dirass/cons-[uni/tn-jy/out-jy-ospf/instP-all]-any-no]] status :
L'output precedente mostra che il nome del contratto è "shared", il provider epg è "tn-jy/ap-ap1/epg-epg1" e il consumer l3out epg è "tn-jy/out-jy-ospf/instP-all"
Se su una route perduta è impostato il flag "pervasivo" in "show ip route", la route viene persa da una subnet BD/EPG configurata. I due comandi seguenti possono essere utilizzati per verificare quale relazione di contratto causa la perdita di informazioni. Verrebbero eseguite sulla foglia in cui il percorso è installato in modo imprevisto.
Se il file VRF in cui il percorso è stato inaspettatamente perso è il consumer:
moquery -c ipCons -f 'ip.Cons.dn*"jy:vrf1/rt-\[10.100.100.0/24\]"' <—jy:vrf1 è il nome del vrf a cui la route perde, la route è 10.100.100.0/24
Se il file vrf in cui la route è stata persa in modo imprevisto è il provider:
moquery -c consNode -f 'cons.Node.dn*"2949122"' -f 'cons.Node.dn*"tn-jy/BD-bd1"' <—2949122 è il vnid del vrf a cui è perduto il percorso, tn-jy/BD-bd1 è il nome del BD da cui è configurata la subnet (all'interno del vrf da cui è perduto il percorso).
Se la route perduta viene appresa tramite il processo iBGP dell'infrastruttura interna e l'esecuzione di vsh -c "show ip route x.x.x/y detail vrf <name>" mostra un valore rw-vnid diverso da zero, la route viene appresa da un l3out in un'altra vrf. La convalida è la stessa indipendentemente da quale epg sia il consumer e quale sia il provider.
1. Identificare la route-map di importazione dei servizi condivisi nel processo bgp interno del file vrf:
show bgp process vrf jy:vrf2 | grep "Importa route-map" <—jy:vrf2 è la vrf interna verso la quale la route perde
2. Identificare l'elenco di prefissi all'interno della route-map dei servizi condivisi che corrisponde alla route perduta:
moquery -c rtpfxEntry -f 'rtpfx.Entry.dn*"pfxlist-IPv4'.*'2457603-shared-svc-leak"' | egrep "criteri|dn|pfx|toPfxLen" <—2457603 è il vnid della vrf interna in questo esempio
3. Dopo aver individuato gli elenchi di prefissi che fanno riferimento al percorso, identificare il numero di sequenza del percorso-mappa che fa riferimento agli elenchi:
moquery -c rtmapRsRtDstAtt -f 'rtmap.RsRtDstAtt.tDn*"pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak"' <—pfxlist-IPv4-2949122-24-25-2457603-shared-svc-leak è il nome dell'elenco di prefissi
4. Utilizzando la mappa percorso e il numero di voce, eseguire il comando seguente per individuare la relazione di contratto su cui è stata inserita la voce della mappa percorso:
moquery -c fvAppEpGCons -f 'fv.AppEpGCons.dn*"rtmap-2457603-shared-svc-leak/ent-1001"' <—rtmap-2457603-shared-svc-leak/ent-1001 è il nome della route-map e il numero di voce del passaggio 3.