목차

소개

배경 정보

문제

소개

이 문서에서는 외부 BGP(Border Gateway Protocol) 피어로부터 수신된 경우 잘못 구성된 라우터 MAC 확장 커뮤니티 특성이 ACI 패브릭에 미치는 영향에 대해 설명합니다.

배경 정보

BGP에서는 BGP 피어에 광고되는 접두사와 함께 커뮤니티 및 확장 커뮤니티 특성을 보낼 수 있습니다. 이러한 커뮤니티 특성을 사용하면 라우팅 정책을 수정하고 라우팅된 트래픽을 처리하는 방법을 동적으로 변경할 수 있습니다.

문제

라우터 MAC 확장 커뮤니티 특성이 IPv4 AFI 접두사와 함께 외부 BGP 피어에서 ACI 패브릭으로 전송되면 내부 MP-BGP 프로세스를 통해 보더 리프로부터 경로를 수신하는 패브릭의 모든 리프에 FIB 및 HAL 오프로그래밍이 발생합니다. 이는 RMAC extcommunity 특성이 BGP L2VPN EVPN 주소군에 속하며 BGP IPv4 주소군에 삽입되면 거부되기 때문입니다. 이는 규칙 5.2(Uniform-Propagation-Mode)를 위반했기 때문이며, 이는 IETF 문서 "EVPN과 IPVPN의 상호 연동"에 설명되어 있습니다. 15페이지 4c 항목에서 특정 문제를 다룹니다.

4.  As discussed, Communities, Extended Communities and Large

Communities SHOULD be kept by the gateway PE from the originating

SAFI route.  Exceptions of Extended Communities that SHOULD NOT

be kept are:

C.  All the extended communities of type EVPN.

The gateway PE SHOULD NOT copy the above extended communities

from the originating ISF route to the re-advertised ISF route.

문서 링크: IPVPN과 EVPN 상호 연동

다음은 iBGP 문제의 예입니다. 그러나 eBGP에서도 문제가 나타납니다.

토폴로지 다이어그램:

토폴로지 다이어그램

외부 BGP 피어 디바이스(라우터 1)에서 경로 맵을 구성하고 EVPN RMAC extcommunity 특성을 설정합니다.

Router-1# show run | sec route-map

route-map RMAC permit 10

set extcommunity evpn rmac aaaa.bbbb.cccc

BGP 인접 디바이스 IPv4 주소군 컨피그레이션에서 BGP 확장 커뮤니티를 구성하고 아웃바운드 방향의 경로 맵을 구성합니다.

Router-1# show run bgp

<output omitted>

feature bgp

router bgp 65001

vrf example

router-id 192.168.20.20

address-family ipv4 unicast

network 192.168.20.0/24

neighbor 192.168.30.30

remote-as 65001

update-source loopback1

address-family ipv4 unicast

send-community extended

route-map RMAC out

BL 101에서 BGP 상태를 확인합니다.

leaf-101# show ip bgp 192.168.20.0 vrf example:example

BGP routing table information for VRF example:example, address family IPv4 Unicast

BGP routing table entry for 192.168.20.0/24, version 40 dest ptr 0xa0fec840

Paths: (1 available, best #1)

Flags: (0x80c001a 00000000) on xmit-list, is in urib, is best urib route, is in HW, exported

vpn: version 2725, (0x100002) on xmit-list

Multipath: eBGP iBGP

Advertised path-id 1, VPN AF advertised path-id 1

Path type (0xa96485b8): internal 0x18 0x0 ref 0 adv path ref 2, path is valid, is best path

AS-Path: NONE, path sourced internal to AS

192.168.20.20 (metric 5) from 192.168.20.20 (192.168.20.20)

Origin IGP, MED not set, localpref 100, weight 0 tag 0, propagate 0

Extcommunity:

RT:65001:2162688

COST:pre-bestpath:163:1879048192

Router MAC:aaaa.bbbb.cccc

***Notice that the router mac is present here.***

VNID:2162688

VRF advertise information:

Path-id 1 not advertised to any peer

VPN AF advertise information:

Path-id 1 advertised to peers:

10.0.216.65        10.0.216.66

CL 102에서 RIB 체크:

leaf-102# show ip route 192.168.20.0 vrf example:example

IP Route Table for VRF "example:example"

'*' denotes best ucast next-hop

'**' denotes best mcast next-hop

'[x/y]' denotes [preference/metric]

'%<string>' in via output denotes VRF <string>

192.168.20.0/24, ubest/mbest: 1/0

*via 10.0.210.70%overlay-1, [200/0], 00:00:43, bgp-65001, internal, tag 65001, rwVnid: vxlan-2162688

recursive next hop: 10.0.210.70/32%overlay-1

***Notice that we have the route here and our next-hop address is correct (showing the TEP IP of BL 101). Also, notice that there is an rwVnid entry here.***

leaf-102# acidiag fnvread | grep 101

101        1             leaf-101      <output omitted>     10.0.210.70/32    leaf         active   0

CL 102에서 FIB를 선택합니다.

module-1(DBG-elam-insel6)# show forwarding route 192.168.20.0 vrf example:example

ERROR: no longest match in IPv4 table 0xf5df36b0

***No entry is present.***

CL 102에서 HAL 테이블을 확인합니다.

module-1(DBG-elam-insel6)# show platform internal hal l3 routes | grep 192.168.20.0

***No entry is present.***

EP(Host 1)에서 외부 BGP 피어(192.168.20.20)에서 오는 외부 네트워크의 호스트로의 ping:

Host-1# ping 192.168.20.20 vrf example

PING 192.168.20.20 (192.168.20.20): 56 data bytes

Request 0 timed out

Request 1 timed out

Request 2 timed out

Request 3 timed out

Request 4 timed out

--- 192.168.20.20 ping statistics ---

5 packets transmitted, 0 packets received, 100.00% packet loss

***No connectivity.***

CL 102에서 ELAM을 선택합니다.

leaf-102# vsh_lc

module-1# debug platform internal roc elam asic 0

module-1(DBG-elam)# trigger reset

module-1(DBG-elam)# trigger init in-select 6 out-select 0

module-1(DBG-elam-insel6)# set outer ipv4 src_ip 192.168.10.10 dst_ip 192.168.20.20

module-1(DBG-elam-insel6)# start

module-1(DBG-elam-insel6)# stat

ELAM STATUS

===========

Asic 0 Slice 0 Status Armed

Asic 0 Slice 1 Status Triggered

module-1(DBG-elam-insel6)# ereport

Python available. Continue ELAM decode with LC Pkg

ELAM REPORT

<output omitted>

------------------------------------------------------------------------------------------------------------------------------------------------------

Lookup Drop

------------------------------------------------------------------------------------------------------------------------------------------------------

LU drop reason                          : UC_PC_CFG_TABLE_DROP

***Notice the drop vector here.***

솔루션

해결 방법은 외부 BGP 피어에서 ACI 패브릭으로 IPv4 주소군 접두사를 사용하는 라우터 MAC 확장 커뮤니티 특성의 전송을 중지하는 것입니다.

이전에 구성된 경로 맵을 제거하고 외부 BGP 피어 디바이스(라우터 1)에서 확장 커뮤니티 전송을 중지합니다. 다음 구성 중 하나 또는 둘 모두를 제거하면 작동합니다.

Router-1# show run bgp

feature bgp

router bgp 65001

vrf example

router-id 192.168.20.20

address-family ipv4 unicast

network 192.168.20.0/24

neighbor 192.168.30.30

remote-as 65001

update-source loopback1

address-family ipv4 unicast

다른(선호도가 낮은) 솔루션은 ACI에서 구성된 L3Out에 경로 맵을 만들어 외부 BGP 피어 디바이스에서 수신한 모든 커뮤니티를 필터링하는 것입니다.

탐색:  Tenant > Policies > Protocol > Route Maps for Route Control > Create Route Maps for Route Control:

경로 제어를 위한 경로 맵 생성 옵션을 선택합니다

경로 맵의 이름을 지정하고  Route-Map Continue  컨텍스트를 추가합니다. 다음을 선택합니다.  +  컨텍스트 테이블의 아이콘:

경로 맵 생성 및 컨텍스트 생성

컨텍스트의 이름을 지정하고 기본 작업을  Permit  선택한 다음  +  아이콘  Associated Matched Rules  테이블 및 선택  Create Match Rule for a Route Map:

경로 제어 컨텍스트 생성 및 경로 맵에 대한 Create Match Rule(일치 규칙 생성) 옵션 선택

일치 규칙의 이름을 지정한 다음,에서 + 아이콘을 선택하여 새 접두사를 추가합니다.  Match Prefix  표:

일치 규칙 생성 및 일치 접두사 생성

원하는 접두사를 추가합니다. 이 예에서는 모든 접두사의 집계를 추가하는 방법을 보여 줍니다.

일치 경로 대상 규칙 만들기

선택한 후  OK 의  Create Match Route Destination Rule  창에 접두사가 추가되어  Match Prefix  표  Create Match Rule  창:

Match Prefix가 이제 Match Rule에 추가되었습니다.

선택한 후  Submit  의  Create Match Rule  창에서 다음을 선택합니다.  Update  의  Associated Matched Rules  표  Create Route Control Context  창:

경로 제어 컨텍스트에 관련 일치 규칙 추가

이제 연결된 일치 규칙이 컨텍스트에 추가됩니다.

이제 연결된 일치 규칙이 경로 제어 컨텍스트에 추가되었습니다.

다음으로, 다음 옆의 드롭다운 메뉴를 선택합니다.  Set Rule  및 선택  Create Set Rules for a Route Map:

Create Set Rules for a Route Map 옵션을 선택합니다.

집합 규칙의 이름을 지정한 다음  Set Community  기본 조건을  No community  selected:

경로 맵에 대한 규칙 설정 생성

Finish(마침)를 선택한 후  Create Set Rules for a Route Map  창에서 선택한 규칙 집합이 표시됩니다.  Create Route Control Context  창:

이제 Set Rule이 Route Control Context에 추가되었습니다

선택한 후  OK  의  Create Route Control Context  창에 컨텍스트가 추가되어  Contexts  표  Create Route Maps for Route Control  창입니다. 마지막으로  Submit  컨피그레이션을 완료하려면

이제 컨텍스트가 경로 맵에 추가되었습니다.

L3Out에서 BGP 피어 연결 프로파일로 이동하여  +  아이콘  Route Control Profile  테이블을 클릭한 다음 기본 방향을 사용하여 경로 맵을 추가합니다.  Route Import Policy  selected:

BGP 피어 연결 프로파일에 경로 맵 추가

경로 맵에 대해 Update(업데이트)를 선택하면 다음에 추가된 경로 맵이 표시됩니다.  Route Control Profile  표:

이제 경로 맵이 BGP 피어 연결 프로파일에 추가되었습니다.

*ACI의 경로 맵 컨피그레이션 옵션에 대한 자세한 내용은 ACI 패브릭 L3Out 백서를 참조하십시오

위의 해결 방법 중 하나를 구현한 후 문제가 해결되었는지 확인합니다.

BL 101에서 BGP 상태를 확인합니다.

leaf-101# show ip bgp 192.168.20.0 vrf example:example

BGP routing table information for VRF example:example, address family IPv4 Unicast

BGP routing table entry for 192.168.20.0/24, version 46 dest ptr 0xa0fec840

Paths: (1 available, best #1)

Flags: (0x80c001a 00000000) on xmit-list, is in urib, is best urib route, is in HW, exported

vpn: version 2731, (0x100002) on xmit-list

Multipath: eBGP iBGP

Advertised path-id 1, VPN AF advertised path-id 1

Path type (0xa96485b8): internal 0x18 0x0 ref 0 adv path ref 2, path is valid, is best path

AS-Path: NONE, path sourced internal to AS

192.168.20.20 (metric 5) from 192.168.20.20 (192.168.20.20)

Origin IGP, MED not set, localpref 100, weight 0 tag 0, propagate 0

Extcommunity:

RT:65001:2162688

COST:pre-bestpath:163:1879048192

***Notice that no router mac is present here.***

VNID:2162688

VRF advertise information:

Path-id 1 not advertised to any peer

VPN AF advertise information:

Path-id 1 advertised to peers:

10.0.216.65        10.0.216.66

CL 102에서 RIB 체크:

leaf-102# show ip route 192.168.20.0 vrf example:example

IP Route Table for VRF "example:example"

'*' denotes best ucast next-hop

'**' denotes best mcast next-hop

'[x/y]' denotes [preference/metric]

'%<string>' in via output denotes VRF <string>

192.168.20.0/24, ubest/mbest: 1/0

*via 10.0.210.70%overlay-1, [200/0], 00:00:06, bgp-65001, internal, tag 65001

recursive next hop: 10.0.210.70/32%overlay-1

***Notice that no rwVnid entry is present here.***

참고: rwVnid 항목의 부재 또는 존재만으로는 문제의 발생 여부가 결정됩니다. 문제가 해결되면 라우트에서 rwVnid 항목이 제거되는 경우가 많습니다. 그러나 항상 그런 것은 아니다. 문제가 해결되었는지 확인하기 위해 항상 FIB 및 HAL 테이블을 확인합니다.

CL 102에서 FIB를 선택합니다.

module-1(DBG-elam-insel6)# show forwarding route 192.168.20.0 vrf example:example

IPv4 routes for table example:example/base

------------------+------------------+----------------------+------------------------

Prefix            | Next-hop         | Interface/VRF        | Additional Info

------------------+------------------+----------------------+------------------------

*192.168.20.0/24      10.0.210.70        overlay-1

***Notice that we have the route here and our next-hop address is correct (showing the TEP IP of BL 101).***

Route Class-id:0x0

Policy Prefix 0.0.0.0/0

leaf-102# acidiag fnvread | grep 101

101        1             leaf-101           10.0.210.70/32    leaf         active   0

CL 102의 HAL 테이블:

module-1(DBG-elam-insel6)# show platform internal hal l3 routes | grep 192.168.20.0

| 4662| 192.168.20.0/ 24| UC|  686|     20601| TRIE|   a5| 5/  0| 60a5|A|     8443|    86b6|  ef5| 1/  2|       a5|  0|      0|   f|  3|   0| 0| 1| sc,spi,dpi

***Notice that we have an entry here and it's in the correct VRF.***

module-1(DBG-elam-insel6)# hex 4662

0x1236

module-1(DBG-elam-insel6)# show platform internal hal l3 vrf pi

============================================================================================================

| -- TOR --  | - Spine -  |                ACL                  |     |

Vrf           Hw    I I Vrf     | SB    NB   | Proxy ACI  |      Ing               Egr          | vpn |

VrfId Name          VrfId I S Vnid    | BDId  BDId | Ou Bd Enc  | Lbl      Msk      Lbl      Msk      | lbl |

============================================================================================================

26    example:example         1236  0 0 210000    0     0      0     1      0        0        0        0        0

EP(Host 1)에서 외부 BGP 피어(192.168.20.20)에서 오는 외부 네트워크의 호스트로의 ping:

Host-1# ping 192.168.20.20 vrf example

PING 192.168.20.20 (192.168.20.20): 56 data bytes

64 bytes from 192.168.20.20: icmp_seq=0 ttl=252 time=1.043 ms

64 bytes from 192.168.20.20: icmp_seq=1 ttl=252 time=1.292 ms

64 bytes from 192.168.20.20: icmp_seq=2 ttl=252 time=1.004 ms

64 bytes from 192.168.20.20: icmp_seq=3 ttl=252 time=0.769 ms

64 bytes from 192.168.20.20: icmp_seq=4 ttl=252 time=1.265 ms

--- 192.168.20.20 ping statistics ---

5 packets transmitted, 5 packets received, 0.00% packet loss

round-trip min/avg/max = 0.769/1.074/1.292 ms

***Connectivity is there.***

CL 102의 ELAM:

leaf-102# vsh_lc

module-1# debug platform internal roc elam asic 0

module-1(DBG-elam)# trigger reset

module-1(DBG-elam)# trigger init in-select 6 out-select 0

module-1(DBG-elam-insel6)# set outer ipv4 src_ip 192.168.10.10 dst_ip 192.168.20.20

module-1(DBG-elam-insel6)# start

module-1(DBG-elam-insel6)# stat

ELAM STATUS

===========

Asic 0 Slice 0 Status Armed

Asic 0 Slice 1 Status Triggered

module-1(DBG-elam-insel6)# ereport

Python available. Continue ELAM decode with LC Pkg

ELAM REPORT

<output omitted>

------------------------------------------------------------------------------------------------------------------------------------------------------

Lookup Drop

------------------------------------------------------------------------------------------------------------------------------------------------------

LU drop reason                          : no drop

***Traffic forwards correctly.***

관련 정보

- 이러한 동작은 이 결함에도 설명되어 있습니다. Cisco 버그 ID CSCvx28929

- 기술 지원 및 문서 − Cisco Systems