Support IPv4 multicast in P4 fabric pipeline
- Multicast can use the same table as unicast. Merge into one.
- Allow masked destination MAC in classifier table
Note:
- Pipeliner now translates all exact MAC match to masked match with FF:FF:FF:FF:FF:FF mask.
- Interpreter now only uses masked src/dst MAC
Change-Id: Ibd27ebfb2d72ba929031f07a29927eb6f1844f11
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
index c3f101c..a5dd8cf 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
@@ -142,7 +142,7 @@
id: 2
name: "hdr.ethernet.dst_addr"
bitwidth: 48
- match_type: EXACT
+ match_type: TERNARY
}
match_fields {
id: 3
@@ -212,9 +212,9 @@
}
tables {
preamble {
- id: 33586372
- name: "FabricIngress.forwarding.unicast_v4"
- alias: "unicast_v4"
+ id: 33562650
+ name: "FabricIngress.forwarding.routing_v4"
+ alias: "routing_v4"
}
match_fields {
id: 1
@@ -223,13 +223,13 @@
match_type: LPM
}
action_refs {
- id: 16828976
+ id: 16777434
}
action_refs {
id: 16800567
annotations: "@defaultonly()"
}
- direct_resource_ids: 318768492
+ direct_resource_ids: 318811107
size: 1024
idle_timeout_behavior: NO_TIMEOUT
}
@@ -333,38 +333,9 @@
}
tables {
preamble {
- id: 33578363
- name: "FabricIngress.forwarding.multicast_v4"
- alias: "multicast_v4"
- }
- match_fields {
- id: 1
- name: "hdr.vlan_tag.vlan_id"
- bitwidth: 12
- match_type: EXACT
- }
- match_fields {
- id: 2
- name: "hdr.ipv4.dst_addr"
- bitwidth: 32
- match_type: LPM
- }
- action_refs {
- id: 16809157
- }
- action_refs {
- id: 16800567
- annotations: "@defaultonly()"
- }
- direct_resource_ids: 318797896
- size: 1024
- idle_timeout_behavior: NO_TIMEOUT
-}
-tables {
- preamble {
- id: 33568751
- name: "FabricIngress.forwarding.unicast_v6"
- alias: "unicast_v6"
+ id: 33614081
+ name: "FabricIngress.forwarding.routing_v6"
+ alias: "routing_v6"
}
match_fields {
id: 1
@@ -373,42 +344,13 @@
match_type: LPM
}
action_refs {
- id: 16823773
+ id: 16809751
}
action_refs {
id: 16800567
annotations: "@defaultonly()"
}
- direct_resource_ids: 318820865
- size: 1024
- idle_timeout_behavior: NO_TIMEOUT
-}
-tables {
- preamble {
- id: 33581295
- name: "FabricIngress.forwarding.multicast_v6"
- alias: "multicast_v6"
- }
- match_fields {
- id: 1
- name: "hdr.vlan_tag.vlan_id"
- bitwidth: 12
- match_type: EXACT
- }
- match_fields {
- id: 2
- name: "hdr.ipv6.dst_addr"
- bitwidth: 128
- match_type: LPM
- }
- action_refs {
- id: 16819612
- }
- action_refs {
- id: 16800567
- annotations: "@defaultonly()"
- }
- direct_resource_ids: 318815310
+ direct_resource_ids: 318799210
size: 1024
idle_timeout_behavior: NO_TIMEOUT
}
@@ -905,9 +847,9 @@
}
actions {
preamble {
- id: 16828976
- name: "FabricIngress.forwarding.set_next_id_unicast_v4"
- alias: "set_next_id_unicast_v4"
+ id: 16777434
+ name: "FabricIngress.forwarding.set_next_id_routing_v4"
+ alias: "set_next_id_routing_v4"
}
params {
id: 1
@@ -957,33 +899,9 @@
}
actions {
preamble {
- id: 16809157
- name: "FabricIngress.forwarding.set_next_id_multicast_v4"
- alias: "set_next_id_multicast_v4"
- }
- params {
- id: 1
- name: "next_id"
- bitwidth: 32
- }
-}
-actions {
- preamble {
- id: 16823773
- name: "FabricIngress.forwarding.set_next_id_unicast_v6"
- alias: "set_next_id_unicast_v6"
- }
- params {
- id: 1
- name: "next_id"
- bitwidth: 32
- }
-}
-actions {
- preamble {
- id: 16819612
- name: "FabricIngress.forwarding.set_next_id_multicast_v6"
- alias: "set_next_id_multicast_v6"
+ id: 16809751
+ name: "FabricIngress.forwarding.set_next_id_routing_v6"
+ alias: "set_next_id_routing_v6"
}
params {
id: 1
@@ -1692,14 +1610,14 @@
}
direct_counters {
preamble {
- id: 318768492
- name: "FabricIngress.forwarding.unicast_v4_counter"
- alias: "unicast_v4_counter"
+ id: 318811107
+ name: "FabricIngress.forwarding.routing_v4_counter"
+ alias: "routing_v4_counter"
}
spec {
unit: BOTH
}
- direct_table_id: 33586372
+ direct_table_id: 33562650
}
direct_counters {
preamble {
@@ -1714,36 +1632,14 @@
}
direct_counters {
preamble {
- id: 318797896
- name: "FabricIngress.forwarding.multicast_v4_counter"
- alias: "multicast_v4_counter"
+ id: 318799210
+ name: "FabricIngress.forwarding.routing_v6_counter"
+ alias: "routing_v6_counter"
}
spec {
unit: BOTH
}
- direct_table_id: 33578363
-}
-direct_counters {
- preamble {
- id: 318820865
- name: "FabricIngress.forwarding.unicast_v6_counter"
- alias: "unicast_v6_counter"
- }
- spec {
- unit: BOTH
- }
- direct_table_id: 33568751
-}
-direct_counters {
- preamble {
- id: 318815310
- name: "FabricIngress.forwarding.multicast_v6_counter"
- alias: "multicast_v6_counter"
- }
- spec {
- unit: BOTH
- }
- direct_table_id: 33581295
+ direct_table_id: 33614081
}
direct_counters {
preamble {