목차

개요

사용된 소프트웨어

VRF x의 브리지 도메인/EPG 서브넷이 VRF y에 설치된 이유는 무엇입니까?

경로가 소비자 VRF로 예기치 않게 유출되는 경우 계약을 확인합니다.

경로가 공급자 VRF로 예기치 않게 누출되는 경우 계약을 확인합니다.

사용된 vz에 의해 경로가 예기치 않게 유출되는 경우 계약을 식별합니다.모든 계약

vz예 1:소비자 VRF로 경로가 예기치 않게 누출됨

vz예 2:공급자 VRF로 경로가 예기치 않게 누출됨

VRF y의 외부 경로가 VRF x에 설치된 이유는 무엇입니까?

요약

BD/EPG 서브넷에서 경로 유출

L3out에서 경로 유출

개요

ACI는 단순한 정책 구축을 통해 전통적으로 복잡한 라우팅 및 스위칭 컨피그레이션을 처리합니다.이러한 기능 중 하나는 공유 서비스를 용이하게 하기 위해 vrfs 간에 경로를 유출하는 기능입니다.이전에는 경로 대상을 정의하고, BGP 주소군을 생성하고, 구별자를 라우팅하고, 여러 디바이스에서 이 컨피그레이션을 복제하는 등 여러 단계가 포함되었습니다.

ACI 경로 유출 내부는 계약의 조합과 서브넷에 특정 공유 플래그를 설정하여 처리합니다.경로 유출 작업을 수행하는 데 필요한 모든 기존 컨피그레이션은 계약 및 공유 서브넷 컨피그레이션의 결과로 백엔드에서 처리됩니다.

그러나 이 컨피그레이션이 추상화되면서 실제로 어떤 계약이 경로를 유출하는지 파악하는 것이 더욱 어려워질 수 있습니다.이는 특히 많은 epg, vrfs 및 계약이 있는 환경에서 적용됩니다.vrfs 간에 경로가 예기치 않게 유출되는 경우 관리자가 어떤 구성(계약)으로 인해 이런 일이 발생하는지 어떻게 알 수 있습니까?

이 문서의 목적은 ACI에서 어떤 계약 관계가 VRF 간에 경로를 유출하는지 확인하는 것입니다.경로 대상 및 BGP VPNv4와 같은 기존의 경로 유출 개념을 이미 숙지하고 있다면 유용합니다.

사용된 소프트웨어

이 문서의 모든 예는 aci software 4.2(3j)를 기반으로 합니다.

VRF x의 브리지 도메인/EPG 서브넷이 VRF y에 설치된 이유는 무엇입니까?

이 섹션에서는 BD 또는 EPG 서브넷이 예기치 않게 다른 vrf로 유출되는 시나리오를 중점적으로 살펴봅니다.BD/EPG 서브넷을 유출하려면 "Shared Between VRFs(VRF 간 공유)" 플래그를 구성해야 합니다.더 어려운 점은 어떤 계약이 이러한 유출을 유발하는지 파악하는 것입니다. 따라서 이 부분이 해결됩니다.

상위 레벨에서는 BD/EPG 서브넷이 vrfs 간에 누출될 때 발생하는 작업에 대한 워크플로입니다.

그림 1.

*#3은 공유 l3out을 광고할 때만 적용됩니다.#1 및 #2는 공유 l3out이 사용되는지 또는 공유 서비스가 완전히 내부 서비스인지에 관계없이 항상 적용됩니다.

우선, BD 또는 EPG 서브넷의 결과로 설치된 경로가 유출되었는지 사용자가 어떻게 알 수 있습니까?

"show ip route vrf <name>"을 실행할 때 "pervasive" 플래그는 경로가 BD 또는 EPG 서브넷임을 나타냅니다.

예를 들어, 위 토폴로지에서는 외부 vrf(vrf1)의 보더 leaf에서 이를 볼 수 있습니다.

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

또한 다음 명령을 실행하여 서브넷이 누출된 대상 vrf를 볼 수 있습니다.

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

*(목적지 vrf가 lookup vrf와 다른지 여부에 관계없이 vrf crossing 정보가 설정됩니다.)

위의 출력에서 vrf crossing vnid는 0x258003 또는 10진수 2457603으로 설정됩니다. vnid 2457603이 속한 vrf를 어떻게 식별할 수 있습니까?

APIC에서 fvCtx 객체를 쿼리하고 segid를 기반으로 필터링하면 됩니다.

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

예상대로 vrf2 vrf에서 경로를 학습합니다.

현재 어떤 계약이 사용되고 있는지, 어떤 epg가 제공되는지, 어떤 epg가 이 경로를 설치하는 데 사용되는지 아직 알 수 없습니다.공급자 및 소비자 관계와 관련하여 기억해야 할 몇 가지 고려 사항이 있습니다.

1. VRF 간 계약 관계의 경우 계약(및 그에 따른 zoning-rule)은 소비자 epg의 vrf에만 설치됩니다.따라서 공급자 vrf의 "show zoning-rule"은 관계를 표시하지 않습니다.

2. 계약이 소비자 vrf에만 설치되어 있더라도 공급자 vrf는 소비자 vrf BD 서브넷에 대한 경로를 가져와야 합니다. 즉, leaf에 계약에 대한 일부 구성 참조가 있어야 합니다.

경로가 소비자 VRF로 예기치 않게 유출되는 경우 계약을 확인합니다.

leaf의 ipCon 객체는 leaf에 설치되며, leaf는 다음을 참조합니다.

a) 소비자 vrf로 유출되는 경로

나.) 관계를 설정하는 계약

c.) 제공자와 소비자 epg가 관계에 있습니다.

아래의 출력에서 "jy:vrf1"은 경로가 유출되는 소비자 vrf이며 "10.100.100.0/24"은 유출되는 경로입니다.

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       :

위의 출력에서 계약 이름은 "shared"이고 소비자 epg는 l3out epg epg "uni/tn-jy/out-jy-ospf/instP-all"이고 공급자 epg는 "uni/tn-jy/ap-ap1/epg-epg1"입니다.

경로가 공급자 VRF로 예기치 않게 누출되는 경우 계약을 확인합니다.

consNode 개체는 공급자 vrf의 leaf에 설치됩니다.이 키워드는 유출되는 소비자 vrf의 BD 서브넷, 계약 및 관계 내의 epg를 참조합니다.이 객체를 쿼리하기 전에 경로가 구성된 BD 서브넷을 찾습니다.이는 apic에서 fvSubnet 객체를 쿼리하여 수행할 수 있습니다.

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

경로는 tn-jy/BD-bd1 브리지 도메인에 구성됩니다.아래 명령을 실행하려면 이 명령과 공급자 vrf의 vnid(경로가 유출되는 경우)를 사용합니다.

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

위의 출력에서 계약 이름은 "shared"이고 소비자 epg는 "uni/tn-jy/ap-ap1/epg-epg1"이고 공급자 epg는 l3out "tn-jy/out-jy-ospf/instP-all"입니다.

사용된 vz에 의해 경로가 예기치 않게 유출되는 경우 계약을 식별합니다.모든 계약

vzAny 예는 검증 관점에서 기존 공급자/소비자 관계와 동일합니다.아래 예제는 이러한 상황을 보여주는 것입니다.inter-vrf 계약은 vzAny를 소비자로만 지원합니다.

vz예 1:소비자 VRF로 경로가 예기치 않게 누출됨

소비자 vrf에서 검증이 수행된 위치를 살펴본 첫 번째 예와 마찬가지로 ipCon 객체는 다시 사용됩니다.

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       :

위의 출력에서 계약 이름은 "shared"이고 소비자 epg는 vrf1 vzAny "tn-jy/ctx-vrf1/any"이고 공급자 epg는 "uni/tn-jy/ap-ap1/epg-epg1"입니다.

vz예 2:공급자 VRF로 경로가 예기치 않게 누출됨

공급자 vrf에서 검증이 수행된 위치를 살펴본 두 번째 예와 마찬가지로 consNode 객체가 다시 사용됩니다.유출된 서브넷이 구성된 BD의 BD 이름과 유출되는 vrf의 VNID를 받아야 합니다.

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

위의 출력에서 계약 이름은 "shared"이고 소비자 epg는 vrf2 vzAny "tn-jy/ctx-vrf2/any"이고 공급자 epg는 l3out "tn-jy/out-jy-ospf/instP-all"입니다.

VRF y의 외부 경로가 VRF x에 설치된 이유는 무엇입니까?

상위 레벨에서는 vrfs 간에 l3out-learned(외부) 경로가 누출될 때 발생하는 작업에 대한 워크플로입니다.

그림 2.

위에서 볼 수 있듯이 내부 vrf(이 경우 vrf2)는 vrf1과 일치하는 경로 대상 가져오기를 설치합니다. 또한 "공유 경로 제어 서브넷" 플래그가 선택된 l3out에 정의된 모든 항목과 일치하는 접두사 목록 항목이 있어야 하는 bgp 프로세스에 가져오기 맵을 설치합니다.

어떤 epg가 사업자 또는 소비자인지에 관계없이, 검증 단계는 항상 contract에서 경로 대상 가져오기 및 설치할 경로를 유출하는 해당 접두사 목록을 담당하므로 동일합니다.

먼저, 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

위 예에서 오버레이의 다른 leaf를 가리키는 패브릭 bgp 프로세스에서 학습된 사실은 l3out에서 발생했음을 나타냅니다.

학습한 vrf에 대한 자세한 내용을 보려면 다음 정보를 실행하십시오.

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

이 문서의 예와 같이 vnid 0x2d0002/2949122를 다시 작성하면 대상 vrf가 됩니다.외부 경로 예에서 rw-vnid 값이 0이 아닌 값으로 설정되는 것은 다른 vrf에서 학습되었음을 나타냅니다.apic에서 moquery -c fvCtx -f 'fv.Ctx.seg="2949122"를 실행하면 이것이 vrf1에 속함을 나타냅니다.

그런 다음 route-target 가져오기 및 bgp 프로세스에 연결된 import route-map을 찾습니다.

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

위의 내부 vrf는 자체 경로 대상(65001:2457603)을 내보내고 가져오는 중입니다. 또한 65001:2949122를 가져오고 있습니다. 2949122 RT는 가져오는 vrf vnid(vrf1)에 해당합니다. bgpRtCtrlMapP는 접두사 목록을 포함하는 가져오기 경로 맵의 개체 이름입니다.bgpRttEntry는 가져오기 경로 대상의 개체 이름입니다.

그런 다음 외부 vrf 경로를 학습하는 내부 vrf의 vnid를 사용하여 공유 서비스 경로 맵 내에 설치된 모든 접두사 목록을 쿼리합니다.

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

각 항목은 외부 서브넷과 일치해야 합니다."exact / inexact" 특성은 "aggregate shared" 플래그가 외부 서브넷에 설정되었는지 여부를 나타냅니다.0.0.0.0/0 접두사와 부정확한 플래그는 더 구체적인 모든 경로(사실상 모든 경로)와 일치함을 나타냅니다. 정확한 플래그가 있는 10.9.9.0/24 접두사는 해당 /24와 일치함을 나타냅니다.

예기치 않게 유출되는 경로와 일치하는 항목(또는 항목)을 찾습니다.이 경우 접두사는 10.9.9.1/32이며 위의 출력에서 ent-2 및 ent-3과 일치합니다.

prefix-list 이름을 사용하여 경로 맵에서 일치하는 시퀀스 번호를 찾습니다.

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

위 출력에서는 이 항목이 route-map 항목 1001임을 보여줍니다.마지막 부분은 2457603-shared-svc-leak route-map 내에서 route-map 항목 1001을 생성하는 데 어떤 계약이 담당되었는지 파악하는 것입니다.이는 fvAppEpGCons 객체에서 leaf에서 쿼리할 수 있습니다.

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       :

위의 출력에서는 계약 이름이 "shared"이고, 공급자 epg는 "tn-jy/ap-ap1/epg-epg1"이고 소비자 l3out epg는 "tn-jy/out-jy-ospf/instP-all"입니다.

요약

BD/EPG 서브넷에서 경로 유출

유출된 경로에 "show ip route"에 "pervasive" 플래그가 설정된 경우 구성된 BD/EPG 서브넷에서 유출됩니다.다음 두 명령을 사용하여 어떤 계약 관계를 노출시켰는지 확인할 수 있습니다.경로가 예기치 않게 설치된 leaf에서 실행됩니다.

경로가 예기치 않게 유출되는 vrf가 소비자인 경우:

moquery -c ipCon -f 'ip.Con.dn*"jy:vrf1/rt-\[10.100.100.0/24\]" <—jy:vrf1은 경로가 누출되는 vrf의 이름이며 경로는 10.100.100.0/24입니다.

경로가 예기치 않게 유출되는 vrf가 제공자인 경우:

moquery -c conNode -f 'cons.Node.dn*"2949122"' -f 'cons.Node.dn*"tn-jy/BD-bd1"' <—2949122는 경로가 누출되는 vrf의 vnid이며 tn-jy/BD-bd1은 서브넷이 구성된 BD의 이름입니다(경로가 누출되는 vrf 내).

L3out에서 경로 유출

유출된 경로가 내부 패브릭 iBGP 프로세스를 통해 학습되고 vsh -c "show ip route x.x.x/y detail vrf <name>"을 실행하면 0이 아닌 rw-vnid 값이 표시되면 다른 vrf의 l3out에서 경로를 학습하는 것입니다.어떤 epg가 소비자이고 어떤 공급자가 제공자인지에 관계없이 검증은 동일합니다.

1. 내부 vrf bgp 프로세스에서 shared services 가져오기 경로 맵을 식별합니다.

show bgp 프로세스 vrf jy:vrf2 | grep "route-map 가져오기" <—jy:vrf2는 경로가 누출되는 내부 vrf입니다.

2. Shared Services 경로 맵에 있는 누출 경로와 일치하는 접두사 목록을 식별합니다.

moquery -c rtpfxEntry -f 'rtpfx.Entry.dn*"pfxlist-IPv4'.*'2457603-shared-svc-leak" | egrep "criteria|dn|pfx|toPfxLen" <—2457603은 이 예에서 내부 vrf의 vnid입니다.

3. 경로를 참조하는 접두사 목록을 찾은 후 다음 중 해당 목록을 참조하는 경로 맵 시퀀스 번호를 식별합니다.

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는 prefix-list 이름입니다.

4. rtmap 및 entry number를 사용하여 다음 명령을 실행하여 해당 route-map 엔트리를 푸시된 계약 관계를 확인합니다.

moquery -c fvAppEpGCons -f 'fv.AppEpGCons.dn*"rtmap-2457603-shared-svc-leak/ent-1001"' <—rtmap-2457603-shared-svc-leak/ent-1001은 3단계의 route-map 이름 및 엔트리 번호입니다.