Cisco ACI で Policy Control Enforcement Preference 設定時の Policy CAM を確認する
Cisco ACI では同一 VRF 内での通信時に「Contract 設定が必要か?」「不必要か?」を定義する Policy Control Enforcement Preference
という設定があります。 この設定はプライベート ネットワークの設定パラメータ に下記と記載されています。
Policy Control Enforcement Preference:優先ポリシー制御。値は [enforced] または [unenforced] です。[enforced] を選択した場合は、トラフィックを許可するエンドポイント グループ間のコントラクトが必要です。[unenforced] を選択した場合は、プライベート ネットワーク内のすべてのトラフィックが許可されます。デフォルトは [enforced] です。
Policy Control Enforcement Preference
は Enforced
または Unenforced
を設定出来ます。 今回は各々の値を設定した際に Policy CAM がどのように変化するのか、比較してみます。 テストは 5.0(2h) で実施しました。
テスト用 Tenant 未作成の場合
テスト用 Tenant 未作成時だと policy_count
の値は 65 でした。
| leaf# vsh_lc -c 'show platform internal hal health-stats asic-unit all' | grep -e policy_count -e policy_label_count
policy_count : 65
max_policy_count : 65536
policy_label_count : 0
max_policy_label_count : 0
|
Unenforced 設定の場合
以下の設定をし、Policy Control Enforcement Preference
を Unenforced
で VRF を作成します。 設定上、Epg1 と Epg2 は Contract しています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 | tenant Tenant1
access-list Filter1
match icmp
exit
contract Contract1
subject Subject1
access-group Filter1 both
exit
exit
vrf context Vrf1
no contract enforce
exit
bridge-domain Bd1
arp flooding
vrf member Vrf1
exit
application Ap1
epg Epg1
bridge-domain member Bd1
contract consumer Contract1
set qos-class level3
vmware-domain member Vmm1 deploy immediate
exit
exit
epg Epg2
bridge-domain member Bd1
contract provider Contract1
set qos-class level3
vmware-domain member Vmm1 deploy immediate
exit
exit
exit
exit
|
vnid
は 2129923 で VRF が作成されました。
| leaf# show system internal epm vrf Tenant1:Vrf1
+--------------------------------+--------+----------+----------+------+--------
VRF Type VRF vnid Context ID Status Endpoint
Count
+--------------------------------+--------+----------+----------+------+--------
Tenant1:Vrf1 Tenant 2129923 69 Up 0
|
VRF に作成された Zoning-Rule を確認すると implicit (暗黙的) な Src Any : Dst Any ルールが作成されていることが分かります。 また、設定上は Epg1 と Epg2 を Contract させているにも関わらず、explicit (明示的) なルールが作成されていないことが分かります。
| leaf# show zoning-rule scope 2129923
+---------+--------+--------+----------+---------+---------+---------+------+--------+-----------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+---------+---------+---------+------+--------+-----------------+
| 4134 | 0 | 0 | implicit | uni-dir | enabled | 2129923 | | permit | any_any_any(21) |
+---------+--------+--------+----------+---------+---------+---------+------+--------+-----------------+
|
| 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]
[21:4134] [vrf:Tenant1:Vrf1] permit any epg:any epg:any [contract:implicit] [hit=0]
|
Tenant 未作成時は 65 だった policy_count
の値は implicit ルールが「ひとつ」増えたので +1 され、66 になっています。
| leaf# vsh_lc -c 'show platform internal hal health-stats asic-unit all' | grep -e policy_count -e policy_label_count
policy_count : 66
max_policy_count : 65536
policy_label_count : 0
max_policy_label_count : 0
|
Enforced 設定の場合
以下の設定をし、Policy Control Enforcement Preference
を Enforced
で VRF を作成します (未指定の場合、デフォルトで Enforced
です)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 | tenant Tenant1
access-list Filter1
match icmp
exit
contract Contract1
subject Subject1
access-group Filter1 both
exit
exit
vrf context Vrf1
exit
bridge-domain Bd1
arp flooding
vrf member Vrf1
exit
application Ap1
epg Epg1
bridge-domain member Bd1
contract consumer Contract1
set qos-class level3
vmware-domain member Vmm1 deploy immediate
exit
exit
epg Epg2
bridge-domain member Bd1
contract provider Contract1
set qos-class level3
vmware-domain member Vmm1 deploy immediate
exit
exit
exit
exit
|
vnid
は 2129923 で VRF が作成されました。
| leaf# show system internal epm vrf Tenant1:Vrf1
+--------------------------------+--------+----------+----------+------+--------
VRF Type VRF vnid Context ID Status Endpoint
Count
+--------------------------------+--------+----------+----------+------+--------
Tenant1:Vrf1 Tenant 2129923 70 Up 0
|
VRF に作成された Zoning-Rule を確認すると implicit なルールは 4 つ、explicit なルールが 2 つ、合計 6 つのルールが作成されていることが分かります。
| leaf# show zoning-rule scope 2129923
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+
| Rule ID | SrcEPG | DstEPG | FilterID | Dir | operSt | Scope | Name | Action | Priority |
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+
| 4134 | 0 | 0 | implicit | uni-dir | enabled | 2129923 | | deny,log | any_any_any(21) |
| 4174 | 0 | 0 | implarp | uni-dir | enabled | 2129923 | | permit | any_any_filter(17) |
| 4170 | 0 | 15 | implicit | uni-dir | enabled | 2129923 | | deny,log | any_vrf_any_deny(22) |
| 4175 | 0 | 32770 | implicit | uni-dir | enabled | 2129923 | | permit | any_dest_any(16) |
| 4176 | 49155 | 49154 | 5 | uni-dir-ignore | enabled | 2129923 | Tenant1:Contract1 | permit | fully_qual(7) |
| 4173 | 49154 | 49155 | 5 | bi-dir | enabled | 2129923 | Tenant1:Contract1 | permit | fully_qual(7) |
+---------+--------+--------+----------+----------------+---------+---------+-------------------+----------+----------------------+
|
| 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]
[7:4173] [vrf:Tenant1:Vrf1] permit ip icmp tn-Tenant1/ap-Ap1/epg-Epg1(49154) tn-Tenant1/ap-Ap1/epg-Epg2(49155) [contract:uni/tn-Tenant1/brc-Contract1] [hit=0]
[7:4176] [vrf:Tenant1:Vrf1] permit ip icmp tn-Tenant1/ap-Ap1/epg-Epg2(49155) tn-Tenant1/ap-Ap1/epg-Epg1(49154) [contract:uni/tn-Tenant1/brc-Contract1] [hit=0]
[16:4175] [vrf:Tenant1:Vrf1] permit any epg:any tn-Tenant1/bd-Bd1(32770) [contract:implicit] [hit=0]
[16:4174] [vrf:Tenant1:Vrf1] permit arp epg:any epg:any [contract:implicit] [hit=0]
[21:4134] [vrf:Tenant1:Vrf1] deny,log any epg:any epg:any [contract:implicit] [hit=0]
[22:4170] [vrf:Tenant1:Vrf1] deny,log any epg:any pfx-0.0.0.0/0(15) [contract:implicit] [hit=0]
|
Tenant 未作成時は 65 だった policy_count
の値は implicit/explicit ルールの分が増え、合計 70 になっています。
| leaf# vsh_lc -c 'show platform internal hal health-stats asic-unit all' | grep -e policy_count -e policy_label_count
policy_count : 70
max_policy_count : 65536
policy_label_count : 0
max_policy_label_count : 0
|