内容

概要

背景説明

問題

概要

このドキュメントでは、外部ボーダーゲートウェイプロトコル(BGP)ピアから受信した場合の、誤って設定されたルータのMAC拡張コミュニティアトリビュートのACIファブリックへの影響について説明します。

背景説明

BGPでは、BGPピアにアドバタイズされるプレフィクスを使用して、コミュニティおよび拡張コミュニティのアトリビュートを送信するオプションがあります。これらのコミュニティアトリビュートを使用すると、ルーティングポリシーを変更し、ルーティングされたトラフィックの処理方法を動的に変更できます。

問題

ルータのMAC拡張コミュニティアトリビュートが外部BGPピアからACIファブリックにIPv4 AFIプレフィックスで送信されると、内部MP-BGPプロセスを介してボーダーリーフからルートを受信するファブリック内の任意のリーフで、FIBとHALのミスプログラミングが発生します。これは、RMAC extcommunity属性がBGP L2VPN EVPNアドレスファミリに属しており、BGP IPv4アドレスファミリに挿入されると拒否されるためです。これは、IETFドキュメント『EVPN Interworking with IPVPN』で説明されているルール5.2(Uniform-Propagation-Mode)の違反が原因です。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.***

外部BGPピア(192.168.20.20)から到達する外部ネットワーク内のホストに対してEP（ホスト1）から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  オプションを選択し、コンテキストを追加します。次のいずれかを選択します。  +  Contextsテーブルのアイコン：

ルートマップの作成とコンテキストの作成

コンテキストに名前を付け、  Permit  を選択した後、  +  アイコン  Associated Matched Rules  表、選択  Create Match Rule for a Route Map：を入力します。

ルートコントロールコンテキストを作成し、ルートマップの一致ルールの作成のオプションを選択します。

一致ルールに名前を付け、  Match Prefix  表：

一致ルールの作成と一致プレフィクスの作成

目的のプレフィクスを追加します。次の例は、すべてのプレフィックスの集約を追加する方法を示しています。

一致ルートの宛先ルールの作成

選択した後  OK の  Create Match Route Destination Rule  ウィンドウにプレフィックスが追加されたことを確認します。  Match Prefix  テーブル  Create Match Rule  ウィンドウ：

一致ルールに一致プレフィクスが追加されました

選択した後  Submit  の  Create Match Rule  ウィンドウ、選択  Update  の  Associated Matched Rules  テーブル  Create Route Control Context  ウィンドウ：

ルート制御コンテキストへの関連付けられた一致ルールの追加

関連付けられた一致ルールがコンテキストに追加されます。

関連付けられた一致ルールがルート制御コンテキストに追加されました

次に、  Set Rule  および選択  Create Set Rules for a Route Map：を入力します。

ルートマップのセットルールを作成するオプションの選択

設定ルールに名前を付け、  Set Community  デフォルトの基準を残す  No community  selected:

ルートマップのルール設定の作成

でFinishを選択した後、  Create Set Rules for a Route Map  ウィンドウでset ruleが選択されているのが確認できます。  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

外部BGPピア(192.168.20.20)から到達する外部ネットワーク内のホストに対してEP（ホスト1）から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 Bug ID CSCvx28929の不具合にも記載されています。

- テクニカル サポートとドキュメント - Cisco Systems