らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

ACI で Intra EPG Isolation を設定し、同一 EPG 内の通信を拒否する

Cisco ACI では通常、同一 EPG に所属している EndPoint 同士は通信出来てしまいます。 従来のネットワークで言うところの「Private VLAN」と近い感覚で「同一 EPG に所属する EndPoint 同士の通信を 拒否する」には Intra EPG Isolation の設定を行います。 今回は 5.0(2h) 環境で Intra EPG Isolation 無効時 / 有効時を比較してみました。

Intra EPG Isolation 無効 (デフォルト)

Intra EPG Isolation 設定は EPG の設定内に存在します。 デフォルトでは無効 (Unenforced) です。

f:id:sig9:20201019232319p:plain

通信結果

適切に Contract が設定されていれば「同一 EPG 内」「異なる EPG 間」を問わず、通信出来るはずです。

f:id:sig9:20201019233556p:plain

show zoning-rule

この場合、zoning-rule に目立った点はありません。

leaf# show zoning-rule scope 2555910
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+
| Rule ID | SrcEPG | DstEPG | FilterID |      Dir       |  operSt |  Scope  |        Name       |  Action  |       Priority       |
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+
|   4179  |   0    |   0    | implicit |    uni-dir     | enabled | 2555910 |                   | deny,log |   any_any_any(21)    |
|   4154  |   0    |   0    | implarp  |    uni-dir     | enabled | 2555910 |                   |  permit  |  any_any_filter(17)  |
|   4134  |   0    |   15   | implicit |    uni-dir     | enabled | 2555910 |                   | deny,log | any_vrf_any_deny(22) |
|   4146  |   0    | 16387  | implicit |    uni-dir     | enabled | 2555910 |                   |  permit  |   any_dest_any(16)   |
|   4184  |   0    | 49153  | implicit |    uni-dir     | enabled | 2555910 |                   |  permit  |   any_dest_any(16)   |
|   4153  | 32770  | 16388  | default  |     bi-dir     | enabled | 2555910 | Tenant1:Contract1 |  permit  |    src_dst_any(9)    |
|   4176  | 16388  | 32770  | default  | uni-dir-ignore | enabled | 2555910 | Tenant1:Contract1 |  permit  |    src_dst_any(9)    |
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+

contract_parser.py

leaf# contract_parser.py --vrf Tenant1:Vrf1
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]

[9:4176] [vrf:Tenant1:Vrf1] permit any tn-Tenant1/ap-Ap1/epg-Epg2(16388) tn-Tenant1/ap-Ap1/epg-Epg1(32770) [contract:uni/tn-Tenant1/brc-Contract1] [hit=0]
[9:4153] [vrf:Tenant1:Vrf1] permit any tn-Tenant1/ap-Ap1/epg-Epg1(32770) tn-Tenant1/ap-Ap1/epg-Epg2(16388) [contract:uni/tn-Tenant1/brc-Contract1] [hit=0]
[16:4146] [vrf:Tenant1:Vrf1] permit any epg:any tn-Tenant1/bd-Bd1(16387) [contract:implicit] [hit=0]
[16:4184] [vrf:Tenant1:Vrf1] permit any epg:any tn-Tenant1/bd-Bd2(49153) [contract:implicit] [hit=0]
[16:4154] [vrf:Tenant1:Vrf1] permit arp epg:any epg:any [contract:implicit] [hit=0]
[21:4179] [vrf:Tenant1:Vrf1] deny,log any epg:any epg:any [contract:implicit] [hit=0]
[22:4134] [vrf:Tenant1:Vrf1] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]

Intra EPG Isolation 有効

Intra EPG Isolation を有効化してみます。 Intra EPG Isolation を有効化のみ、proxy-arp を設定出来るようになります (デフォルトは無効)。

f:id:sig9:20201019232322p:plain

通信結果

Intra EPG Isolation を有効化している為、「同一 EPG 内の通信」は拒否されてしまいます (※ ARP は許可されます)。 適切に Contract が設定されていれば「異なる EPG 宛の通信」は許可されます。

f:id:sig9:20201019233559p:plain

show zoning-rule

Intra EPG Isolation 無効時と比べて Src / Dst EPG が同じ (どちらも 32770) を deny する zoning-rule が増えていることが分かります。 しかも、この zoning-rule は Priority 2 と、非常に優先度が高く設定されます。

leaf# show zoning-rule scope 2555910
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+
| Rule ID | SrcEPG | DstEPG | FilterID |      Dir       |  operSt |  Scope  |        Name       |  Action  |       Priority       |
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+
|   4179  |   0    |   0    | implicit |    uni-dir     | enabled | 2555910 |                   | deny,log |   any_any_any(21)    |
|   4154  |   0    |   0    | implarp  |    uni-dir     | enabled | 2555910 |                   |  permit  |  any_any_filter(17)  |
|   4134  |   0    |   15   | implicit |    uni-dir     | enabled | 2555910 |                   | deny,log | any_vrf_any_deny(22) |
|   4146  |   0    | 16387  | implicit |    uni-dir     | enabled | 2555910 |                   |  permit  |   any_dest_any(16)   |
|   4184  |   0    | 49153  | implicit |    uni-dir     | enabled | 2555910 |                   |  permit  |   any_dest_any(16)   |
|   4153  | 32770  | 16388  | default  |     bi-dir     | enabled | 2555910 | Tenant1:Contract1 |  permit  |    src_dst_any(9)    |
|   4176  | 16388  | 32770  | default  | uni-dir-ignore | enabled | 2555910 | Tenant1:Contract1 |  permit  |    src_dst_any(9)    |
|   4192  | 32770  | 32770  | implicit |    uni-dir     | enabled | 2555910 |                   | deny,log |   class-eq-deny(2)   |
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+

contract_parser.py

leaf# contract_parser.py --vrf Tenant1:Vrf1
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]

[2:4192] [vrf:Tenant1:Vrf1] deny,log any tn-Tenant1/ap-Ap1/epg-Epg1(32770) tn-Tenant1/ap-Ap1/epg-Epg1(32770) [contract:implicit] [hit=0]
[9:4176] [vrf:Tenant1:Vrf1] permit any tn-Tenant1/ap-Ap1/epg-Epg2(16388) tn-Tenant1/ap-Ap1/epg-Epg1(32770) [contract:uni/tn-Tenant1/brc-Contract1] [hit=0]
[9:4153] [vrf:Tenant1:Vrf1] permit any tn-Tenant1/ap-Ap1/epg-Epg1(32770) tn-Tenant1/ap-Ap1/epg-Epg2(16388) [contract:uni/tn-Tenant1/brc-Contract1] [hit=0]
[16:4146] [vrf:Tenant1:Vrf1] permit any epg:any tn-Tenant1/bd-Bd1(16387) [contract:implicit] [hit=0]
[16:4184] [vrf:Tenant1:Vrf1] permit any epg:any tn-Tenant1/bd-Bd2(49153) [contract:implicit] [hit=0]
[16:4154] [vrf:Tenant1:Vrf1] permit arp epg:any epg:any [contract:implicit] [hit=0]
[21:4179] [vrf:Tenant1:Vrf1] deny,log any epg:any epg:any [contract:implicit] [hit=0]
[22:4134] [vrf:Tenant1:Vrf1] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]

参考