概要
このドキュメントでは、外部ボーダーゲートウェイプロトコル(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
他の(あまり好ましくない)ソリューションは、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.***
関連情報