らくがきちょう

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

Cisco ACI で Deny Filter を利用する

Cisco ACI で通信の許可 / 拒否を制御するには Contract を利用しますが、特に「拒否」を制御するには Taboo Contract を利用する方法があります。 しかし、Taboo Contract は「必ず Provider 側にしか設定出来ない」や「特定の EPG との間にだけ、設定することは出来ない」などの制約があります。 ケース・バイ・ケースではありますが、場合によっては Deny Filter を利用する方が柔軟に通信制御を行うことが可能です。

構成

以下の構成を考えます。

f:id:sig9:20200819234205p:plain

この設定により、ICMP だけが拒否され、他の通信は許可されます。 実際に Leaf において、どのような Zoning-rule が展開されたのか?は show zoning-rule などで確認することが出来ますが、contract_parser.py を利用する方が簡単です。 contract_parser.py は様々な実行方法がありますが、例えば以下のように実行するのが簡単です。 show zoning-rule と異なり、VRF / EPG の pcTag などが分からなくても、設定名から Zoning-rule を表示出来る点が優れています。

contract_parser.py  --sepg [SRC-EPG]  --depg [DST-EPG]

今回のケースであれば以下のように表示されました。 Deny Filter が挿入されていることがわかります。

leaf# contract_parser.py \
>   --sepg tn-Tenant1/ap-Ap1/epg-Epg1 \
>   --depg tn-Tenant1/ap-Ap1/epg-Epg2
Key:
[prio:RuleId] [vrf:{str}] action protocol src-epg [src-l4] dst-epg [dst-l4] [flags][contract:{str}] [hit=count]

[7:4147] [vrf:Tenant1:Vrf1] deny ip icmp tn-Tenant1/ap-Ap1/epg-Epg1(49153) tn-Tenant1/ap-Ap1/epg-Epg2(32770) [contract:uni/tn-Tenant1/brc-Contract1] [hit=0]
[9:4146] [vrf:Tenant1:Vrf1] permit any tn-Tenant1/ap-Ap1/epg-Epg1(49153) tn-Tenant1/ap-Ap1/epg-Epg2(32770) [contract:uni/tn-Tenant1/brc-Contract1] [hit=0]