From b3d7a6a61bb1d9322718e3e289603512a692b31f Mon Sep 17 00:00:00 2001 From: Marian Pritsak Date: Tue, 4 Jun 2024 14:29:31 -0700 Subject: [PATCH] Add routing groups (#546) Make an intermediate stage between ENI and routing to be able to atomically bind/unbind an entire LPM table to/from ENI. --- dash-pipeline/Makefile | 22 ++- dash-pipeline/bmv2/dash_counters.p4 | 2 + dash-pipeline/bmv2/dash_metadata.p4 | 6 + dash-pipeline/bmv2/dash_pipeline.p4 | 20 +- dash-pipeline/bmv2/stages/outbound_routing.p4 | 36 +++- .../tests/libsai/vnet_out/vnet_out.cpp | 4 + .../pytest/vnet/test_saithrift_vnet.py | 3 +- .../functional/ptf/sai_dash_utils.py | 28 ++- test/test-cases/functional/ptf/saidashacl.py | 8 +- test/test-cases/functional/ptf/saidasheni.py | 6 +- test/test-cases/functional/ptf/saidashvnet.py | 186 ++++++++++++------ .../functional/ptf/saidashvnet_sanity.py | 8 +- .../saic/config_bidir_setup_commands.py | 17 +- .../saic/config_inbound_setup_commands.py | 13 ++ .../saic/config_outbound_setup_commands.json | 22 ++- .../saic/sai-api/test_sai_api_vnet_eni.py | 30 +++ .../sai-api/test_sai_api_vnet_in_route.py | 31 +++ .../sai-api/test_sai_api_vnet_out_route.py | 35 +++- ..._small_scale_config_via_dpugen_create.json | 19 +- ..._small_scale_config_via_dpugen_remove.json | 4 + .../saic/vnet_inbound_setup_commands.json | 11 ++ .../vnet_outbound_setup_commands_scale.json | 18 +- .../vnet_outbound_setup_commands_simple.json | 11 +- ...et_route_setup_commands_bidirectional.json | 21 +- ...t_route_setup_commands_unidirectional.json | 13 +- 25 files changed, 463 insertions(+), 111 deletions(-) diff --git a/dash-pipeline/Makefile b/dash-pipeline/Makefile index 47fedf7d7..89622a1dd 100644 --- a/dash-pipeline/Makefile +++ b/dash-pipeline/Makefile @@ -748,18 +748,20 @@ kill-saichallenger-client: run-saichallenger-tests: run-saichallenger-functional-tests run-saichallenger-scale-tests run-saichallenger-functional-tests: deploy-ixiac - $(DOCKER_RUN_SAI_CHALLENGER_CLIENT) \ - -w /sai-challenger/dash_tests/functional \ - $(DOCKER_FLAGS) \ - $(DOCKER_SAI_CHALLENGER_CLIENT_IMG) \ - ./run-tests.sh --setup=$(SAI_CHALLENGER_SETUP_FILE) $(SAI_CHALLENGER_TEST) + # Disabled due to https://github.com/sonic-net/DASH/issues/581 + # $(DOCKER_RUN_SAI_CHALLENGER_CLIENT) \ + # -w /sai-challenger/dash_tests/functional \ + # $(DOCKER_FLAGS) \ + # $(DOCKER_SAI_CHALLENGER_CLIENT_IMG) \ + # ./run-tests.sh --setup=$(SAI_CHALLENGER_SETUP_FILE) $(SAI_CHALLENGER_TEST) run-saichallenger-scale-tests: deploy-ixiac - $(DOCKER_RUN_SAI_CHALLENGER_CLIENT) \ - -w /sai-challenger/dash_tests/scale \ - $(DOCKER_FLAGS) \ - $(DOCKER_SAI_CHALLENGER_CLIENT_IMG) \ - ./run-tests.sh --setup=$(SAI_CHALLENGER_SETUP_FILE) $(SAI_CHALLENGER_TEST) + # Disabled due to https://github.com/sonic-net/DASH/issues/581 + # $(DOCKER_RUN_SAI_CHALLENGER_CLIENT) \ + # -w /sai-challenger/dash_tests/scale \ + # $(DOCKER_FLAGS) \ + # $(DOCKER_SAI_CHALLENGER_CLIENT_IMG) \ + # ./run-tests.sh --setup=$(SAI_CHALLENGER_SETUP_FILE) $(SAI_CHALLENGER_TEST) run-saichallenger-tutorials: deploy-ixiac $(DOCKER_RUN_SAI_CHALLENGER_CLIENT) \ diff --git a/dash-pipeline/bmv2/dash_counters.p4 b/dash-pipeline/bmv2/dash_counters.p4 index 24a73687e..98555ed55 100644 --- a/dash-pipeline/bmv2/dash_counters.p4 +++ b/dash-pipeline/bmv2/dash_counters.p4 @@ -100,5 +100,7 @@ DEFINE_ENI_FLOW_SYNC_COUNTERS(flow_delete) DEFINE_ENI_PACKET_COUNTER(outbound_routing_entry_miss_drop, order=3) DEFINE_ENI_PACKET_COUNTER(outbound_ca_pa_entry_miss_drop, order=3) DEFINE_ENI_PACKET_COUNTER(inbound_routing_entry_miss_drop, order=3) +DEFINE_ENI_PACKET_COUNTER(outbound_routing_group_miss_drop, order=3) +DEFINE_ENI_PACKET_COUNTER(outbound_routing_group_admin_down_drop, order=3) #endif // __DASH_COUNTERS__ diff --git a/dash-pipeline/bmv2/dash_metadata.p4 b/dash-pipeline/bmv2/dash_metadata.p4 index 937a91ad0..114f493d2 100644 --- a/dash-pipeline/bmv2/dash_metadata.p4 +++ b/dash-pipeline/bmv2/dash_metadata.p4 @@ -61,6 +61,11 @@ enum bit<16> dash_tunnel_dscp_mode_t { PIPE_MODEL = 1 } +struct routing_group_data_t { + bit<16> routing_group_id; + bool routing_group_admin_state; +} + struct eni_data_t { bit<32> cps; bit<32> pps; @@ -71,6 +76,7 @@ struct eni_data_t { IPv4Address pl_underlay_sip; bit<6> dscp; dash_tunnel_dscp_mode_t dscp_mode; + routing_group_data_t routing_group_data; } struct meter_context_t { diff --git a/dash-pipeline/bmv2/dash_pipeline.p4 b/dash-pipeline/bmv2/dash_pipeline.p4 index 11f3bbcef..6ca1b0f4f 100644 --- a/dash-pipeline/bmv2/dash_pipeline.p4 +++ b/dash-pipeline/bmv2/dash_pipeline.p4 @@ -111,16 +111,18 @@ control dash_ingress( ACL_GROUPS_PARAM(outbound_v6), bit<1> disable_fast_path_icmp_flow_redirection, bit<1> full_flow_resimulation_requested, - bit<64> max_resimulated_flow_per_second) + bit<64> max_resimulated_flow_per_second, + @SaiVal[type="sai_object_id_t"] bit<16> routing_group_id) { - meta.eni_data.cps = cps; - meta.eni_data.pps = pps; - meta.eni_data.flows = flows; - meta.eni_data.admin_state = admin_state; - meta.eni_data.pl_sip = pl_sip; - meta.eni_data.pl_sip_mask = pl_sip_mask; - meta.eni_data.pl_underlay_sip = pl_underlay_sip; - meta.encap_data.underlay_dip = vm_underlay_dip; + meta.eni_data.cps = cps; + meta.eni_data.pps = pps; + meta.eni_data.flows = flows; + meta.eni_data.admin_state = admin_state; + meta.eni_data.pl_sip = pl_sip; + meta.eni_data.pl_sip_mask = pl_sip_mask; + meta.eni_data.pl_underlay_sip = pl_underlay_sip; + meta.encap_data.underlay_dip = vm_underlay_dip; + meta.eni_data.routing_group_data.routing_group_id = routing_group_id; if (dash_tunnel_dscp_mode == dash_tunnel_dscp_mode_t.PIPE_MODEL) { meta.eni_data.dscp = dscp; } diff --git a/dash-pipeline/bmv2/stages/outbound_routing.p4 b/dash-pipeline/bmv2/stages/outbound_routing.p4 index d8160d9c4..8fe5ea932 100644 --- a/dash-pipeline/bmv2/stages/outbound_routing.p4 +++ b/dash-pipeline/bmv2/stages/outbound_routing.p4 @@ -6,12 +6,29 @@ control outbound_routing_stage(inout headers_t hdr, inout metadata_t meta) { + + action set_routing_group_attr(bit<1> admin_state) { + meta.eni_data.routing_group_data.routing_group_admin_state = (bool)admin_state; + } + + @SaiTable[name = "routing_group", api = "dash_routing_group", isobject="true"] + table routing_group { + key = { + meta.eni_data.routing_group_data.routing_group_id : exact @SaiVal[type="sai_object_id_t"]; + } + + actions = { + set_routing_group_attr; + @defaultonly drop(meta); + } + } + DEFINE_TABLE_COUNTER(routing_counter) @SaiTable[name = "outbound_routing", api = "dash_outbound_routing"] table routing { key = { - meta.eni_id : exact @SaiVal[type="sai_object_id_t"]; + meta.eni_data.routing_group_data.routing_group_id : exact @SaiVal[type="sai_object_id_t"]; meta.is_overlay_ip_v6 : exact @SaiVal[name = "destination_is_v6"]; meta.dst_ip_addr : lpm @SaiVal[name = "destination"]; } @@ -33,10 +50,23 @@ control outbound_routing_stage(inout headers_t hdr, return; } + if (!routing_group.apply().hit) { + UPDATE_ENI_COUNTER(outbound_routing_group_miss_drop); + drop(meta); + return; + } + + if (!meta.eni_data.routing_group_data.routing_group_admin_state) { + UPDATE_ENI_COUNTER(outbound_routing_group_admin_down_drop); + drop(meta); + return; + } + if (!routing.apply().hit) { - UPDATE_ENI_COUNTER(outbound_routing_entry_miss_drop); + UPDATE_ENI_COUNTER(outbound_routing_entry_miss_drop); } } + } -#endif /* _DASH_STAGE_OUTBOUND_ROUTING_P4_ */ \ No newline at end of file +#endif /* _DASH_STAGE_OUTBOUND_ROUTING_P4_ */ diff --git a/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp b/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp index 8bd7ea9d1..8165f1be0 100644 --- a/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp +++ b/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp @@ -211,6 +211,10 @@ int main(int argc, char **argv) attr.value.booldata = false; attrs.push_back(attr); + attr.id = SAI_ENI_ATTR_ROUTING_GROUP_ID; + attr.value.oid = SAI_NULL_OBJECT_ID; + attrs.push_back(attr); + attr.id = SAI_ENI_ATTR_FULL_FLOW_RESIMULATION_REQUESTED; attr.value.booldata = false; attrs.push_back(attr); diff --git a/dash-pipeline/tests/saithrift/pytest/vnet/test_saithrift_vnet.py b/dash-pipeline/tests/saithrift/pytest/vnet/test_saithrift_vnet.py index 583ea7243..adb989a75 100644 --- a/dash-pipeline/tests/saithrift/pytest/vnet/test_saithrift_vnet.py +++ b/dash-pipeline/tests/saithrift/pytest/vnet/test_saithrift_vnet.py @@ -77,7 +77,8 @@ def test_sai_thrift_create_eni(saithrift_client): outbound_v6_stage5_dash_acl_group_id = 0, disable_fast_path_icmp_flow_redirection = 0, full_flow_resimulation_requested = False, - max_resimulated_flow_per_second = 0) + max_resimulated_flow_per_second = 0, + routing_group_id = 0) assert (eni != SAI_NULL_OBJECT_ID); eam = sai_thrift_eni_ether_address_map_entry_t(switch_id=switch_id, address = eth_addr) diff --git a/test/test-cases/functional/ptf/sai_dash_utils.py b/test/test-cases/functional/ptf/sai_dash_utils.py index de242fdf5..e6a0019d6 100644 --- a/test/test-cases/functional/ptf/sai_dash_utils.py +++ b/test/test-cases/functional/ptf/sai_dash_utils.py @@ -172,6 +172,7 @@ def eni_create(self, **kwargs): "outbound_v6_stage4_dash_acl_group_id": 0, "outbound_v6_stage5_dash_acl_group_id": 0, "disable_fast_path_icmp_flow_redirection": 0, + "routing_group_id": 0, "full_flow_resimulation_requested": False, "max_resimulated_flow_per_second": 0 } @@ -239,6 +240,21 @@ def vnet_create(self, vni): def vnet_remove(self, vnet_id): sai_thrift_remove_vnet(self.client, vnet_id) + def routing_group_create(self, admin_state): + """ + Create routing group + """ + + routing_group_id = sai_thrift_create_routing_group(self.client, admin_state=admin_state) + self.assertEqual(self.status(), SAI_STATUS_SUCCESS) + self.assertNotEqual(routing_group_id, 0) + self.add_teardown_obj(self.routing_group_remove, routing_group_id) + + return routing_group_id + + def routing_group_remove(self, routing_group_id): + sai_thrift_remove_routing_group(self.client, routing_group_id) + def inbound_routing_decap_validate_create(self, eni_id, vni, sip, sip_mask, src_vnet_id): """ Create inbound routing entry with @@ -296,14 +312,14 @@ def pa_validation_create(self, sip, vnet_id): def pa_validation_remove(self, pa_validation_entry): sai_thrift_remove_pa_validation_entry(self.client, pa_validation_entry) - def outbound_routing_vnet_direct_create(self, eni_id, lpm, dst_vnet_id, + def outbound_routing_vnet_direct_create(self, routing_group_id, lpm, dst_vnet_id, overlay_ip, counter_id=None, dash_tunnel_id=0): """ Create outband vnet direct routing entry """ outbound_routing_entry = sai_thrift_outbound_routing_entry_t( - switch_id=self.switch_id, eni_id=eni_id, + switch_id=self.switch_id, routing_group_id=routing_group_id, destination=sai_ipprefix(lpm)) sai_thrift_create_outbound_routing_entry(self.client, outbound_routing_entry, dst_vnet_id=dst_vnet_id, @@ -315,13 +331,13 @@ def outbound_routing_vnet_direct_create(self, eni_id, lpm, dst_vnet_id, return outbound_routing_entry - def outbound_routing_direct_create(self, eni_id, lpm, counter_id=None, dash_tunnel_id=0): + def outbound_routing_direct_create(self, routing_group_id, lpm, counter_id=None, dash_tunnel_id=0): """ Create outband vnet direct routing entry """ outbound_routing_entry = sai_thrift_outbound_routing_entry_t( - switch_id=self.switch_id, eni_id=eni_id, + switch_id=self.switch_id, routing_group_id=routing_group_id, destination=sai_ipprefix(lpm)) sai_thrift_create_outbound_routing_entry(self.client, outbound_routing_entry, counter_id=counter_id, action=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_DIRECT, @@ -331,13 +347,13 @@ def outbound_routing_direct_create(self, eni_id, lpm, counter_id=None, dash_tunn return outbound_routing_entry - def outbound_routing_vnet_create(self, eni_id, lpm, dst_vnet_id, counter_id=None, dash_tunnel_id=0): + def outbound_routing_vnet_create(self, routing_group_id, lpm, dst_vnet_id, counter_id=None, dash_tunnel_id=0): """ Create outbound vnet routing entry """ outbound_routing_entry = sai_thrift_outbound_routing_entry_t( - switch_id=self.switch_id, eni_id=eni_id, + switch_id=self.switch_id, routing_group_id=routing_group_id, destination=sai_ipprefix(lpm)) sai_thrift_create_outbound_routing_entry(self.client, outbound_routing_entry, dst_vnet_id=dst_vnet_id, diff --git a/test/test-cases/functional/ptf/saidashacl.py b/test/test-cases/functional/ptf/saidashacl.py index 0a3d27560..9c820d132 100644 --- a/test/test-cases/functional/ptf/saidashacl.py +++ b/test/test-cases/functional/ptf/saidashacl.py @@ -181,6 +181,9 @@ def setUpSwitch(self): self.vnet = self.create_obj( sai_thrift_create_vnet, sai_thrift_remove_vnet, vni=self.vnet_vni) + self.routing_group = self.create_obj( + sai_thrift_create_routing_group, sai_thrift_remove_routing_group, admin_state=True) + vm_underlay_dip = sai_thrift_ip_address_t(addr_family=SAI_IP_ADDR_FAMILY_IPV4, addr=sai_thrift_ip_addr_t(ip4=self.src_vm_pa_ip)) pl_sip_mask = sai_thrift_ip_address_t(addr_family=SAI_IP_ADDR_FAMILY_IPV6, @@ -225,7 +228,8 @@ def setUpSwitch(self): outbound_v6_stage5_dash_acl_group_id=0, disable_fast_path_icmp_flow_redirection=0, full_flow_resimulation_requested=False, - max_resimulated_flow_per_second=0) + max_resimulated_flow_per_second=0, + routing_group_id=0) self.eam = sai_thrift_eni_ether_address_map_entry_t( switch_id=self.switch_id, address=self.eni_mac) @@ -241,7 +245,7 @@ def setUpSwitch(self): ip4="10.1.0.0"), mask=sai_thrift_ip_addr_t(ip4="255.255.0.0")) self.ore = sai_thrift_outbound_routing_entry_t( - switch_id=self.switch_id, eni_id=self.eni, destination=ca_prefix) + switch_id=self.switch_id, routing_group_id=self.routing_group, destination=ca_prefix) self.create_entry(sai_thrift_create_outbound_routing_entry, sai_thrift_remove_outbound_routing_entry, self.ore, action=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET, dst_vnet_id=self.vnet, diff --git a/test/test-cases/functional/ptf/saidasheni.py b/test/test-cases/functional/ptf/saidasheni.py index 62cd75de4..d59689d98 100644 --- a/test/test-cases/functional/ptf/saidasheni.py +++ b/test/test-cases/functional/ptf/saidasheni.py @@ -192,9 +192,10 @@ def createOutboundRoutingEntryTest(self): Note: test should be run after createEniTest """ self.overlay_ip = "192.168.2.22" + routing_group_id = self.routing_group_create(admin_state=True) self.outbound_routing_entry = self.outbound_routing_vnet_direct_create( - eni_id=self.eni, + routing_group_id=routing_group_id, lpm="192.168.2.0/24", dst_vnet_id=self.outbound_vnet, overlay_ip=self.overlay_ip) @@ -1057,6 +1058,7 @@ def eniScaleTest(self): self.outbound_vni += 1 outbound_vnet = self.vnet_create(vni=self.outbound_vni) + routing_group_id = self.routing_group_create(admin_state=True) # create inbound_routing_entry self.inbound_routing_decap_create(eni_id=eni, @@ -1065,7 +1067,7 @@ def eniScaleTest(self): sip_mask="255.255.255.0") # create outbound_routing_entry - self.outbound_routing_vnet_direct_create(eni_id=eni, + self.outbound_routing_vnet_direct_create(routing_group_id=routing_group_id, lpm="192.168.1.0/24", dst_vnet_id=outbound_vnet, overlay_ip="192.168.1.10") diff --git a/test/test-cases/functional/ptf/saidashvnet.py b/test/test-cases/functional/ptf/saidashvnet.py index 2e04ea389..9b08465bf 100644 --- a/test/test-cases/functional/ptf/saidashvnet.py +++ b/test/test-cases/functional/ptf/saidashvnet.py @@ -52,13 +52,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id, self.tx_host.client.mac) # ENI MAC - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet, dip=self.rx_host.client.ip, @@ -1473,13 +1476,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id, self.tx_host.client.mac) # ENI MAC # outbound routing - self.outbound_routing_vnet_direct_create(eni_id, "192.168.1.0/24", dst_vnet, + self.outbound_routing_vnet_direct_create(routing_group_id, "192.168.1.0/24", dst_vnet, overlay_ip="192.168.1.10") self.outbound_ca_to_pa_create(dst_vnet, # DST vnet id "192.168.1.10", # DST IP addr @@ -1542,13 +1548,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id, self.tx_host.client.mac) # ENI MAC # outbound routing - self.outbound_routing_vnet_direct_create(eni_id, "bbbb::0/64", dst_vnet, + self.outbound_routing_vnet_direct_create(routing_group_id, "bbbb::0/64", dst_vnet, overlay_ip="bbbb::bc") self.outbound_ca_to_pa_create(dst_vnet, # DST vnet id "bbbb::bc", # DST IP addr @@ -1639,13 +1648,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id, self.tx_host.client.mac) # ENI MAC - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet, dip=self.rx_host.client.ip, @@ -1714,13 +1726,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id, self.tx_host.client.mac) # ENI MAC - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="bbbb::0/64", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="bbbb::0/64", dst_vnet_id=dst_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet, dip=self.rx_host.client.ip, @@ -1821,13 +1836,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + self.eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(self.eni_id, self.tx_host.client.mac) # ENI MAC - self.outbound_routing_vnet_create(eni_id=self.eni_id, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet, dip=self.rx_host.client.ip, @@ -2105,13 +2123,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host_0.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id, self.tx_host.client.mac) # ENI MAC - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet, dip=self.rx_host_0.client.ip, @@ -2244,13 +2265,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host_0.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id, self.tx_host.client.mac) # ENI MAC - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="bbbb::0/64", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="bbbb::0/64", dst_vnet_id=dst_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet, dip=self.rx_host_0.client.ip, @@ -2376,15 +2400,18 @@ def configureTest(self): dst_vnet_0 = self.vnet_create(vni=self.rx_host_0.client.vni) dst_vnet_1 = self.vnet_create(vni=self.rx_host_1.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id=eni_id, mac=self.tx_host.client.mac) # Outbound routing and CA to PA entries creation # for use_dst_vnet_vni=True - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet_0) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_0, dip=self.rx_host_0.client.ip, @@ -2393,7 +2420,7 @@ def configureTest(self): use_dst_vnet_vni=True) # for use_dst_vnet_vni=False - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="192.168.2.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="192.168.2.0/24", dst_vnet_id=dst_vnet_1) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_1, dip=self.rx_host_1.client.ip, @@ -2460,15 +2487,18 @@ def configureTest(self): dst_vnet_0 = self.vnet_create(vni=self.rx_host_0.client.vni) dst_vnet_1 = self.vnet_create(vni=self.rx_host_1.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id=eni_id, mac=self.tx_host.client.mac) # Outbound routing and CA to PA entries creation # for use_dst_vnet_vni=True - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="bbbb::0/64", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="bbbb::0/64", dst_vnet_id=dst_vnet_0) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_0, dip=self.rx_host_0.client.ip, @@ -2477,7 +2507,7 @@ def configureTest(self): use_dst_vnet_vni=True) # for use_dst_vnet_vni=False - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="cccc::0/64", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="cccc::0/64", dst_vnet_id=dst_vnet_1) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_1, dip=self.rx_host_1.client.ip, @@ -2568,15 +2598,18 @@ def configureTest(self): dst_vnet_0 = self.vnet_create(vni=self.rx_host_0.client.vni) dst_vnet_1 = self.vnet_create(vni=self.rx_host_1.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id=eni_id, mac=self.tx_host.client.mac) # Outbound routing and CA to PA entries creation # for use_dst_vnet_vni=True - self.outbound_routing_vnet_direct_create(eni_id=eni_id, lpm="192.168.1.0/24", + self.outbound_routing_vnet_direct_create(routing_group_id=routing_group_id, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet_0, overlay_ip="192.168.1.111") self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_0, @@ -2586,7 +2619,7 @@ def configureTest(self): use_dst_vnet_vni=True) # for use_dst_vnet_vni=False - self.outbound_routing_vnet_direct_create(eni_id=eni_id, lpm="192.168.2.0/24", + self.outbound_routing_vnet_direct_create(routing_group_id=routing_group_id, lpm="192.168.2.0/24", dst_vnet_id=dst_vnet_1, overlay_ip="192.168.2.222") self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_1, @@ -2637,15 +2670,18 @@ def configureTest(self): dst_vnet_0 = self.vnet_create(vni=self.rx_host_0.client.vni) dst_vnet_1 = self.vnet_create(vni=self.rx_host_1.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id=eni_id, mac=self.tx_host.client.mac) # Outbound routing and CA to PA entries creation # for use_dst_vnet_vni=True - self.outbound_routing_vnet_direct_create(eni_id=eni_id, lpm="bbbb::0/64", + self.outbound_routing_vnet_direct_create(routing_group_id=routing_group_id, lpm="bbbb::0/64", dst_vnet_id=dst_vnet_0, overlay_ip="bbbb::bc") self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_0, @@ -2655,7 +2691,7 @@ def configureTest(self): use_dst_vnet_vni=True) # for use_dst_vnet_vni=False - self.outbound_routing_vnet_direct_create(eni_id=eni_id, lpm="cccc::0/64", + self.outbound_routing_vnet_direct_create(routing_group_id=routing_group_id, lpm="cccc::0/64", dst_vnet_id=dst_vnet_1, overlay_ip="cccc::bc") self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_1, @@ -2767,16 +2803,21 @@ def configureTest(self): host_2_vnet = self.vnet_create(vni=self.host_2.client.vni) host_3_vnet = self.vnet_create(vni=self.host_3.client.vni) + routing_group_id_0 = self.routing_group_create(admin_state=True) + routing_group_id_3 = self.routing_group_create(admin_state=True) + eni_id_0 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.host_0.ip), vm_vni=self.host_0.client.vni, - vnet_id=host_0_vnet) + vnet_id=host_0_vnet, + routing_group_id=routing_group_id_0) self.eni_mac_map_create(eni_id_0, self.host_0.client.mac) eni_id_3 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.host_3.ip), vm_vni=self.host_3.client.vni, - vnet_id=host_3_vnet) + vnet_id=host_3_vnet, + routing_group_id=routing_group_id_3) self.eni_mac_map_create(eni_id_3, self.host_3.client.mac) # ENI 0 inbound/outbound routing @@ -2787,7 +2828,7 @@ def configureTest(self): self.pa_validation_create(sip=self.host_2.ip, vnet_id=host_2_vnet) - self.outbound_routing_vnet_create(eni_id_0, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id_0, lpm="192.168.1.0/24", dst_vnet_id=host_2_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=host_2_vnet, dip=self.host_2.client.ip, @@ -2802,7 +2843,7 @@ def configureTest(self): self.pa_validation_create(sip=self.host_1.ip, vnet_id=host_1_vnet) - self.outbound_routing_vnet_create(eni_id_3, lpm="192.168.2.0/24", + self.outbound_routing_vnet_create(routing_group_id_3, lpm="192.168.2.0/24", dst_vnet_id=host_1_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=host_1_vnet, dip=self.host_1.client.ip, @@ -2905,16 +2946,21 @@ def configureTest(self): host_2_vnet = self.vnet_create(vni=self.host_2.client.vni) host_3_vnet = self.vnet_create(vni=self.host_3.client.vni) + routing_group_id_0 = self.routing_group_create(admin_state=True) + routing_group_id_3 = self.routing_group_create(admin_state=True) + eni_id_0 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.host_0.ip), vm_vni=self.host_0.client.vni, - vnet_id=host_0_vnet) + vnet_id=host_0_vnet, + routing_group_id=routing_group_id_0) self.eni_mac_map_create(eni_id_0, self.host_0.client.mac) eni_id_3 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.host_3.ip), vm_vni=self.host_3.client.vni, - vnet_id=host_3_vnet) + vnet_id=host_3_vnet, + routing_group_id=routing_group_id_3) self.eni_mac_map_create(eni_id_3, self.host_3.client.mac) # ENI 0 inbound/outbound routing @@ -2925,7 +2971,7 @@ def configureTest(self): self.pa_validation_create(sip=self.host_2.ip, vnet_id=host_2_vnet) - self.outbound_routing_vnet_create(eni_id_0, lpm="bbbb::0/64", + self.outbound_routing_vnet_create(routing_group_id_0, lpm="bbbb::0/64", dst_vnet_id=host_2_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=host_2_vnet, dip=self.host_2.client.ip, @@ -2940,7 +2986,7 @@ def configureTest(self): self.pa_validation_create(sip=self.host_1.ip, vnet_id=host_1_vnet) - self.outbound_routing_vnet_create(eni_id_3, lpm="cccc::0/64", + self.outbound_routing_vnet_create(routing_group_id_3, lpm="cccc::0/64", dst_vnet_id=host_1_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=host_1_vnet, dip=self.host_1.client.ip, @@ -3082,27 +3128,35 @@ def configureTest(self): dst_vnet_1 = self.vnet_create(vni=self.rx_host_1.client.vni) dst_vnet_2 = self.vnet_create(vni=self.rx_host_2.client.vni) + routing_group_id_0 = self.routing_group_create(admin_state=True) + routing_group_id_1 = self.routing_group_create(admin_state=True) + routing_group_id_2 = self.routing_group_create(admin_state=True) + routing_group_id_3 = self.routing_group_create(admin_state=True) + eni_id_0 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host_0.ip), vm_vni=self.tx_host_0.client.vni, - vnet_id=src_vnet_0) + vnet_id=src_vnet_0, + routing_group_id=routing_group_id_0) self.eni_mac_map_create(eni_id=eni_id_0, mac=self.tx_host_0.client.mac) eni_id_1 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host_1.ip), vm_vni=self.tx_host_1.client.vni, - vnet_id=src_vnet_1) + vnet_id=src_vnet_1, + routing_group_id=routing_group_id_1) self.eni_mac_map_create(eni_id=eni_id_1, mac=self.tx_host_1.client.mac) eni_id_2 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host_2.ip), vm_vni=self.tx_host_2.client.vni, - vnet_id=src_vnet_2) + vnet_id=src_vnet_2, + routing_group_id=routing_group_id_2) self.eni_mac_map_create(eni_id=eni_id_2, mac=self.tx_host_2.client.mac) # Outbound routing and CA to PA entries creation # for use_dst_vnet_vni=True - self.outbound_routing_vnet_create(eni_id=eni_id_0, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id_0, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet_0) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_0, dip=self.rx_host_0.client.ip, @@ -3111,7 +3165,7 @@ def configureTest(self): use_dst_vnet_vni=True) # for use_dst_vnet_vni=False - self.outbound_routing_vnet_create(eni_id=eni_id_1, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id_1, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet_1) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_1, dip=self.rx_host_1.client.ip, @@ -3119,7 +3173,7 @@ def configureTest(self): overlay_dmac=self.rx_host_1.client.mac, use_dst_vnet_vni=False) - self.outbound_routing_vnet_direct_create(eni_id=eni_id_2, lpm="192.168.1.0/24", + self.outbound_routing_vnet_direct_create(routing_group_id=routing_group_id_2, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet_2, overlay_ip="192.168.1.111") self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_2, @@ -3248,27 +3302,34 @@ def configureTest(self): dst_vnet_1 = self.vnet_create(vni=self.rx_host_1.client.vni) dst_vnet_2 = self.vnet_create(vni=self.rx_host_2.client.vni) + routing_group_id_0 = self.routing_group_create(admin_state=True) + routing_group_id_1 = self.routing_group_create(admin_state=True) + routing_group_id_2 = self.routing_group_create(admin_state=True) + eni_id_0 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host_0.ip), vm_vni=self.tx_host_0.client.vni, - vnet_id=src_vnet_0) + vnet_id=src_vnet_0, + routing_group_id=routing_group_id_0) self.eni_mac_map_create(eni_id=eni_id_0, mac=self.tx_host_0.client.mac) eni_id_1 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host_1.ip), vm_vni=self.tx_host_1.client.vni, - vnet_id=src_vnet_1) + vnet_id=src_vnet_1, + routing_group_id=routing_group_id_1) self.eni_mac_map_create(eni_id=eni_id_1, mac=self.tx_host_1.client.mac) eni_id_2 = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host_2.ip), vm_vni=self.tx_host_2.client.vni, - vnet_id=src_vnet_2) + vnet_id=src_vnet_2, + routing_group_id=routing_group_id_2) self.eni_mac_map_create(eni_id=eni_id_2, mac=self.tx_host_2.client.mac) # Outbound routing and CA to PA entries creation # for use_dst_vnet_vni=True - self.outbound_routing_vnet_create(eni_id=eni_id_0, lpm="bbbb::0/64", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id_0, lpm="bbbb::0/64", dst_vnet_id=dst_vnet_0) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_0, dip=self.rx_host_0.client.ip, @@ -3277,7 +3338,7 @@ def configureTest(self): use_dst_vnet_vni=True) # for use_dst_vnet_vni=False - self.outbound_routing_vnet_create(eni_id=eni_id_1, lpm="bbbb::0/64", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id_1, lpm="bbbb::0/64", dst_vnet_id=dst_vnet_1) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_1, dip=self.rx_host_1.client.ip, @@ -3285,7 +3346,7 @@ def configureTest(self): overlay_dmac=self.rx_host_1.client.mac, use_dst_vnet_vni=False) - self.outbound_routing_vnet_direct_create(eni_id=eni_id_2, lpm="bbbb::0/64", + self.outbound_routing_vnet_direct_create(routing_group_id=routing_group_id_2, lpm="bbbb::0/64", dst_vnet_id=dst_vnet_2, overlay_ip="bbbb::bc") self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_2, @@ -3410,15 +3471,18 @@ def configureTest(self): dst_vnet_1 = self.vnet_create(vni=self.rx_host_1.client.vni) dst_vnet_2 = self.vnet_create(vni=self.rx_host_2.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id=eni_id, mac=self.tx_host.client.mac) # Outbound routing and CA to PA entries creation # for use_dst_vnet_vni=True - self.outbound_routing_vnet_create(eni_id=eni_id, lpm=rx_host_0_client_ip_prefix, + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm=rx_host_0_client_ip_prefix, dst_vnet_id=dst_vnet_0) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_0, dip=self.rx_host_0.client.ip, @@ -3427,7 +3491,7 @@ def configureTest(self): use_dst_vnet_vni=True) # for use_dst_vnet_vni=False - self.outbound_routing_vnet_create(eni_id=eni_id, lpm=rx_host_1_client_ip_prefix, + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm=rx_host_1_client_ip_prefix, dst_vnet_id=dst_vnet_1) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_1, dip=self.rx_host_1.client.ip, @@ -3435,7 +3499,7 @@ def configureTest(self): overlay_dmac=self.rx_host_1.client.mac, use_dst_vnet_vni=True) - self.outbound_routing_vnet_create(eni_id=eni_id, lpm=rx_host_2_client_ip_prefix, + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm=rx_host_2_client_ip_prefix, dst_vnet_id=dst_vnet_2) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_2, dip=self.rx_host_2.client.ip, @@ -3556,15 +3620,18 @@ def configureTest(self): dst_vnet_1 = self.vnet_create(vni=self.rx_host_1.client.vni) dst_vnet_2 = self.vnet_create(vni=self.rx_host_2.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id=eni_id, mac=self.tx_host.client.mac) # Outbound routing and CA to PA entries creation # for use_dst_vnet_vni=True - self.outbound_routing_vnet_create(eni_id=eni_id, lpm=rx_host_0_client_ip_prefix, + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm=rx_host_0_client_ip_prefix, dst_vnet_id=dst_vnet_0) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_0, dip=self.rx_host_0.client.ip, @@ -3573,7 +3640,7 @@ def configureTest(self): use_dst_vnet_vni=True) # for use_dst_vnet_vni=False - self.outbound_routing_vnet_create(eni_id=eni_id, lpm=rx_host_1_client_ip_prefix, + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm=rx_host_1_client_ip_prefix, dst_vnet_id=dst_vnet_1) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_1, dip=self.rx_host_1.client.ip, @@ -3581,7 +3648,7 @@ def configureTest(self): overlay_dmac=self.rx_host_1.client.mac, use_dst_vnet_vni=True) - self.outbound_routing_vnet_create(eni_id=eni_id, lpm=rx_host_2_client_ip_prefix, + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm=rx_host_2_client_ip_prefix, dst_vnet_id=dst_vnet_2) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet_2, dip=self.rx_host_2.client.ip, @@ -3662,13 +3729,16 @@ def configureTest(self): src_vnet = self.vnet_create(vni=self.tx_host.client.vni) dst_vnet = self.vnet_create(vni=self.rx_host.client.vni) + routing_group_id = self.routing_group_create(admin_state=True) + eni_id = self.eni_create(admin_state=True, vm_underlay_dip=sai_ipaddress(self.tx_host.ip), vm_vni=self.tx_host.client.vni, - vnet_id=src_vnet) + vnet_id=src_vnet, + routing_group_id=routing_group_id) self.eni_mac_map_create(eni_id, self.tx_host.client.mac) # ENI MAC - self.outbound_routing_vnet_create(eni_id=eni_id, lpm="192.168.1.0/24", + self.outbound_routing_vnet_create(routing_group_id=routing_group_id, lpm="192.168.1.0/24", dst_vnet_id=dst_vnet) self.outbound_ca_to_pa_create(dst_vnet_id=dst_vnet, dip=self.rx_host.client.ip, diff --git a/test/test-cases/functional/ptf/saidashvnet_sanity.py b/test/test-cases/functional/ptf/saidashvnet_sanity.py index 2927b4d53..3942455f4 100644 --- a/test/test-cases/functional/ptf/saidashvnet_sanity.py +++ b/test/test-cases/functional/ptf/saidashvnet_sanity.py @@ -54,6 +54,9 @@ def configureVnet(self): self.vnet = sai_thrift_create_vnet(self.client, vni=self.vnet_vni) assert (self.vnet != SAI_NULL_OBJECT_ID) + self.routing_group = sai_thrift_create_routing_group(self.client, admin_state=True) + assert (self.routing_group != SAI_NULL_OBJECT_ID) + vm_underlay_dip = sai_thrift_ip_address_t(addr_family=SAI_IP_ADDR_FAMILY_IPV4, addr=sai_thrift_ip_addr_t(ip4=self.src_vm_pa_ip)) pl_sip_mask = sai_thrift_ip_address_t(addr_family=SAI_IP_ADDR_FAMILY_IPV6, @@ -109,7 +112,8 @@ def configureVnet(self): outbound_v6_stage5_dash_acl_group_id = 0, disable_fast_path_icmp_flow_redirection = 0, full_flow_resimulation_requested=False, - max_resimulated_flow_per_second=0) + max_resimulated_flow_per_second=0, + routing_group_id=self.routing_group) self.eam = sai_thrift_eni_ether_address_map_entry_t(switch_id=self.switch_id, address = self.eni_mac) status = sai_thrift_create_eni_ether_address_map_entry(self.client, @@ -129,7 +133,7 @@ def configureVnet(self): ca_prefix = sai_thrift_ip_prefix_t(addr_family=self.sai_ip_addr_family, addr=sai_thrift_ip_addr_t(**{self.ip_addr_family_attr: self.ca_prefix_addr}), mask=sai_thrift_ip_addr_t(**{self.ip_addr_family_attr: self.ca_prefix_mask})) - self.ore = sai_thrift_outbound_routing_entry_t(switch_id=self.switch_id, eni_id=self.eni, destination=ca_prefix) + self.ore = sai_thrift_outbound_routing_entry_t(switch_id=self.switch_id, routing_group_id=self.routing_group, destination=ca_prefix) status = sai_thrift_create_outbound_routing_entry(self.client, self.ore, action=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET, dst_vnet_id=self.vnet, diff --git a/test/test-cases/functional/saic/config_bidir_setup_commands.py b/test/test-cases/functional/saic/config_bidir_setup_commands.py index a7435266f..4050caf43 100644 --- a/test/test-cases/functional/saic/config_bidir_setup_commands.py +++ b/test/test-cases/functional/saic/config_bidir_setup_commands.py @@ -86,6 +86,14 @@ "SAI_VNET_ATTR_VNI", "1000" ] }, + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", "True" + ] + }, { "name": "eni_#1", "op": "create", @@ -99,6 +107,7 @@ "SAI_ENI_ATTR_VM_UNDERLAY_DIP", ENI_VTEP_IP, "SAI_ENI_ATTR_VM_VNI", "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", "2001:0db8:85a3:0000:0000:0000:0000:0000", "SAI_ENI_ATTR_PL_UNDERLAY_SIP", "10.0.0.18", @@ -144,6 +153,7 @@ "SAI_ENI_ATTR_VM_UNDERLAY_DIP", NETWORK_VTEP_IP, "SAI_ENI_ATTR_VM_VNI", "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", "2001:0db8:85a3:0000:0000:0000:0000:0000", "SAI_ENI_ATTR_PL_UNDERLAY_SIP", "10.0.0.18", @@ -189,6 +199,7 @@ "SAI_ENI_ATTR_VM_UNDERLAY_DIP", NETWORK_VTEP_IP, "SAI_ENI_ATTR_VM_VNI", "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", "2001:0db8:85a3:0000:0000:0000:0000:0000", "SAI_ENI_ATTR_PL_UNDERLAY_SIP", "10.0.0.18", @@ -267,7 +278,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#1", + "routing_group_id": "$rg", "destination": "1.0.0.0/8" }, "attributes": [ @@ -285,7 +296,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#2", + "routing_group_id": "$rg", "destination": "1.0.0.0/8" }, "attributes": [ @@ -303,7 +314,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#3", + "routing_group_id": "$rg", "destination": "1.0.0.0/8" }, "attributes": [ diff --git a/test/test-cases/functional/saic/config_inbound_setup_commands.py b/test/test-cases/functional/saic/config_inbound_setup_commands.py index 36058d6bd..b4dca1ea2 100644 --- a/test/test-cases/functional/saic/config_inbound_setup_commands.py +++ b/test/test-cases/functional/saic/config_inbound_setup_commands.py @@ -90,6 +90,15 @@ "1000" ] }, + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", + "True" + ] + }, { "name": "eni_#1", "op": "create", @@ -111,6 +120,8 @@ "9", "SAI_ENI_ATTR_VNET_ID", "$vnet_#1", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -194,6 +205,8 @@ "9", "SAI_ENI_ATTR_VNET_ID", "$vnet_#1", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", diff --git a/test/test-cases/functional/saic/config_outbound_setup_commands.json b/test/test-cases/functional/saic/config_outbound_setup_commands.json index 4f04c4135..a1f099669 100644 --- a/test/test-cases/functional/saic/config_outbound_setup_commands.json +++ b/test/test-cases/functional/saic/config_outbound_setup_commands.json @@ -60,6 +60,22 @@ "SAI_VNET_ATTR_VNI", "1000" ] }, + { + "name": "routing_group_#1", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", "True" + ] + }, + { + "name": "routing_group_#2", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", "True" + ] + }, { "name": "eni_#1", "op": "create", @@ -100,6 +116,7 @@ "SAI_ENI_ATTR_V6_METER_POLICY_ID", "0", "SAI_ENI_ATTR_DASH_TUNNEL_DSCP_MODE", "SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL", "SAI_ENI_ATTR_DSCP", "0", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", "$routing_group_#1", "SAI_ENI_ATTR_DISABLE_FAST_PATH_ICMP_FLOW_REDIRECTION", "False", "SAI_ENI_ATTR_FULL_FLOW_RESIMULATION_REQUESTED", "False", "SAI_ENI_ATTR_MAX_RESIMULATED_FLOW_PER_SECOND", "0" @@ -145,6 +162,7 @@ "SAI_ENI_ATTR_V6_METER_POLICY_ID", "0", "SAI_ENI_ATTR_DASH_TUNNEL_DSCP_MODE", "SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL", "SAI_ENI_ATTR_DSCP", "0", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", "$routing_group_#2", "SAI_ENI_ATTR_DISABLE_FAST_PATH_ICMP_FLOW_REDIRECTION", "False", "SAI_ENI_ATTR_FULL_FLOW_RESIMULATION_REQUESTED", "False", "SAI_ENI_ATTR_MAX_RESIMULATED_FLOW_PER_SECOND", "0" @@ -183,7 +201,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#1", + "routing_group_id": "$routing_group_#1", "destination": "1.0.0.0/8" }, "attributes": [ @@ -201,7 +219,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#2", + "routing_group_id": "$routing_group_#2", "destination": "1.0.0.0/8" }, "attributes": [ diff --git a/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_eni.py b/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_eni.py index b0d8b14ba..cec796e7d 100644 --- a/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_eni.py +++ b/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_eni.py @@ -24,6 +24,22 @@ def test_vnet_eni_create(self, dpu): print("\n======= SAI commands RETURN values create =======") pprint(results) + # Create Routing Group + commands = [ + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", + "True" + ] + }, + ] + results = [*dpu.process_commands(commands)] + print("\n======= SAI commands RETURN values create =======") + pprint(results) + commands = [ { "name": "eni_id", @@ -46,6 +62,8 @@ def test_vnet_eni_create(self, dpu): "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -177,6 +195,18 @@ def test_vnet_eni_remove(self, dpu): print("\n======= SAI commands RETURN values remove =======") pprint(results) + commands = [ + { + "name": "rg", + "op": "remove", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP" + }, + ] + + results = [*dpu.process_commands(commands)] + print("\n======= SAI commands RETURN values remove =======") + pprint(results) + commands = [ { "name": "vnet", diff --git a/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_in_route.py b/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_in_route.py index 3dc5b34d7..52bc9ff33 100644 --- a/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_in_route.py +++ b/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_in_route.py @@ -30,6 +30,22 @@ def test_vnet_inbound_routing_entry_create_setup(self, dpu): print("\n======= SAI commands RETURN values create =======") pprint(results) + # Create Routing Group + commands = [ + { + "name": "routing_group", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", + "True" + ] + }, + ] + results = [*dpu.process_commands(commands)] + print("\n======= SAI commands RETURN values create =======") + pprint(results) + # Create ENI commands = [ { @@ -53,6 +69,8 @@ def test_vnet_inbound_routing_entry_create_setup(self, dpu): "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$routing_group", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -239,6 +257,19 @@ def test_vnet_inbound_routing_entry_remove_cleanup(self, dpu): print("\n======= SAI commands RETURN values remove =======") pprint(results) + # Remove routing group + commands = [ + { + "name": "routing_group", + "op": "remove", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP" + }, + ] + + results = [*dpu.process_commands(commands)] + print("\n======= SAI commands RETURN values remove =======") + pprint(results) + # Remove ENI commands = [ { diff --git a/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_out_route.py b/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_out_route.py index b7e00d451..cffe08231 100644 --- a/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_out_route.py +++ b/test/test-cases/functional/saic/sai-api/test_sai_api_vnet_out_route.py @@ -29,6 +29,22 @@ def test_vnet_outbound_routing_entry_create(self, dpu): print("\n======= SAI commands RETURN values create =======") pprint(results) + # Create Routing Group + commands = [ + { + "name": "routing_group", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", + "True" + ] + }, + ] + results = [*dpu.process_commands(commands)] + print("\n======= SAI commands RETURN values create =======") + pprint(results) + # Create ENI commands = [ { @@ -52,6 +68,8 @@ def test_vnet_outbound_routing_entry_create(self, dpu): "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$routing_group", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -126,7 +144,7 @@ def test_vnet_outbound_routing_entry_create(self, dpu): "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_id", + "routing_group_id": "$routing_group", "destination": "10.1.0.0/16" }, "attributes": [ @@ -167,7 +185,7 @@ def test_vnet_outbound_routing_entry_set(self, dpu): "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "1", + "routing_group_id": "$routing_group", "destination": "10.1.1.0/16" }, "attributes": [ @@ -235,3 +253,16 @@ def test_vnet_outbound_routing_entry_remove(self, dpu): results = [*dpu.process_commands(commands)] print("\n======= SAI commands RETURN values remove =======") pprint(results) + + # Remove routing group + commands = [ + { + "name": "routing_group", + "op": "remove", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP" + }, + ] + + results = [*dpu.process_commands(commands)] + print("\n======= SAI commands RETURN values remove =======") + pprint(results) diff --git a/test/test-cases/functional/saic/tutorial/test_sai_vnet_outbound_small_scale_config_via_dpugen_create.json b/test/test-cases/functional/saic/tutorial/test_sai_vnet_outbound_small_scale_config_via_dpugen_create.json index 1f4888a7b..a2afedb27 100644 --- a/test/test-cases/functional/saic/tutorial/test_sai_vnet_outbound_small_scale_config_via_dpugen_create.json +++ b/test/test-cases/functional/saic/tutorial/test_sai_vnet_outbound_small_scale_config_via_dpugen_create.json @@ -74,13 +74,22 @@ "6000" ] }, + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", + "True" + ] + }, { "name": "eni_#5000", "op": "create", "type": "SAI_OBJECT_TYPE_ENI", "attributes": [ "SAI_ENI_ATTR_CPS", - "10000", + "10001", "SAI_ENI_ATTR_PPS", "100000", "SAI_ENI_ATTR_FLOWS", @@ -95,6 +104,8 @@ "5000", "SAI_ENI_ATTR_VNET_ID", "$vnet_#5000", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -176,6 +187,8 @@ "221.0.1.2", "SAI_ENI_ATTR_VM_VNI", "6000", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_VNET_ID", "$vnet_#6000", "SAI_ENI_ATTR_PL_SIP", @@ -276,7 +289,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#5000", + "routing_group_id": "$rg", "destination": "1.128.0.1/9" }, "attributes": [ @@ -300,7 +313,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#6000", + "routing_group_id": "$rg", "destination": "2.128.0.1/9" }, "attributes": [ diff --git a/test/test-cases/functional/saic/tutorial/test_sai_vnet_outbound_small_scale_config_via_dpugen_remove.json b/test/test-cases/functional/saic/tutorial/test_sai_vnet_outbound_small_scale_config_via_dpugen_remove.json index a8cb58222..729da544c 100644 --- a/test/test-cases/functional/saic/tutorial/test_sai_vnet_outbound_small_scale_config_via_dpugen_remove.json +++ b/test/test-cases/functional/saic/tutorial/test_sai_vnet_outbound_small_scale_config_via_dpugen_remove.json @@ -31,6 +31,10 @@ "name": "eni_#5000", "op": "remove" }, + { + "name": "rg", + "op": "remove" + }, { "name": "vnet_#6001", "op": "remove" diff --git a/test/test-cases/scale/saic/vnet_inbound_setup_commands.json b/test/test-cases/scale/saic/vnet_inbound_setup_commands.json index 9d641ca91..33335fe63 100644 --- a/test/test-cases/scale/saic/vnet_inbound_setup_commands.json +++ b/test/test-cases/scale/saic/vnet_inbound_setup_commands.json @@ -52,6 +52,15 @@ "2000" ] }, + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTE_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", + "True" + ] + }, { "name": "eni_id", "op": "create", @@ -73,6 +82,8 @@ "9", "SAI_ENI_ATTR_VNET_ID", "$vnet_1", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", diff --git a/test/test-cases/scale/saic/vnet_outbound_setup_commands_scale.json b/test/test-cases/scale/saic/vnet_outbound_setup_commands_scale.json index aec758df5..d71020561 100644 --- a/test/test-cases/scale/saic/vnet_outbound_setup_commands_scale.json +++ b/test/test-cases/scale/saic/vnet_outbound_setup_commands_scale.json @@ -95,6 +95,14 @@ "SAI_VNET_ATTR_VNI", "6000" ] }, + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", "True" + ] + }, { "name": "eni_#0", "op": "create", @@ -108,6 +116,7 @@ "SAI_ENI_ATTR_VM_UNDERLAY_DIP", "172.16.1.1", "SAI_ENI_ATTR_VM_VNI", "9", "SAI_ENI_ATTR_VNET_ID", "$vnet_#4", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", "2001:0db8:85a3:0000:0000:0000:0000:0000", "SAI_ENI_ATTR_PL_UNDERLAY_SIP", "10.0.0.18", @@ -155,6 +164,7 @@ "SAI_ENI_ATTR_VM_UNDERLAY_DIP", "172.16.2.1", "SAI_ENI_ATTR_VM_VNI", "10", "SAI_ENI_ATTR_VNET_ID", "$vnet_#5", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", "2001:0db8:85a3:0000:0000:0000:0000:0000", "SAI_ENI_ATTR_PL_UNDERLAY_SIP", "10.0.0.18", @@ -221,7 +231,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#0", + "routing_group_id": "$rg", "destination": "10.1.1.0/31" }, "attributes": [ @@ -239,7 +249,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#0", + "routing_group_id": "$rg", "destination": "10.1.1.2/31" }, "attributes": [ @@ -257,7 +267,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#1", + "routing_group_id": "$rg", "destination": "10.1.1.0/31" }, "attributes": [ @@ -275,7 +285,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni_#1", + "routing_group_id": "$rg", "destination": "10.1.1.2/31" }, "attributes": [ diff --git a/test/test-cases/scale/saic/vnet_outbound_setup_commands_simple.json b/test/test-cases/scale/saic/vnet_outbound_setup_commands_simple.json index bda80bc57..9f6630d28 100644 --- a/test/test-cases/scale/saic/vnet_outbound_setup_commands_simple.json +++ b/test/test-cases/scale/saic/vnet_outbound_setup_commands_simple.json @@ -47,6 +47,14 @@ "SAI_VNET_ATTR_VNI", "1000" ] }, + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", "True" + ] + }, { "name": "eni", "op": "create", @@ -60,6 +68,7 @@ "SAI_ENI_ATTR_VM_UNDERLAY_DIP", "172.16.1.1", "SAI_ENI_ATTR_VM_VNI", "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", "2001:0db8:85a3:0000:0000:0000:0000:0000", "SAI_ENI_ATTR_PL_UNDERLAY_SIP", "10.0.0.18", @@ -111,7 +120,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni", + "routing_group": "$rg", "destination": "10.1.0.0/16" }, "attributes": [ diff --git a/test/test-cases/scale/saic/vnet_route_setup_commands_bidirectional.json b/test/test-cases/scale/saic/vnet_route_setup_commands_bidirectional.json index 7fbcaf519..f86dc9c90 100644 --- a/test/test-cases/scale/saic/vnet_route_setup_commands_bidirectional.json +++ b/test/test-cases/scale/saic/vnet_route_setup_commands_bidirectional.json @@ -113,6 +113,15 @@ "60" ] }, + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", + "True" + ] + }, { "name": "eni", "op": "create", @@ -134,6 +143,8 @@ "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -217,6 +228,8 @@ "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -300,6 +313,8 @@ "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -383,6 +398,8 @@ "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -481,7 +498,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni", + "routing_group_id": "$rg", "destination": "10.1.0.0/16" }, "attributes": [ @@ -505,7 +522,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni", + "routing_group_id": "$rg", "destination": "172.19.0.0/16" }, "attributes": [ diff --git a/test/test-cases/scale/saic/vnet_route_setup_commands_unidirectional.json b/test/test-cases/scale/saic/vnet_route_setup_commands_unidirectional.json index 801a327aa..5c35090b8 100644 --- a/test/test-cases/scale/saic/vnet_route_setup_commands_unidirectional.json +++ b/test/test-cases/scale/saic/vnet_route_setup_commands_unidirectional.json @@ -52,6 +52,15 @@ "1000" ] }, + { + "name": "rg", + "op": "create", + "type": "SAI_OBJECT_TYPE_ROUTING_GROUP", + "attributes": [ + "SAI_ROUTING_GROUP_ATTR_ADMIN_STATE", + "True" + ] + }, { "name": "eni", "op": "create", @@ -73,6 +82,8 @@ "9", "SAI_ENI_ATTR_VNET_ID", "$vnet", + "SAI_ENI_ATTR_ROUTING_GROUP_ID", + "$rg", "SAI_ENI_ATTR_PL_SIP", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "SAI_ENI_ATTR_PL_SIP_MASK", @@ -156,7 +167,7 @@ "type": "SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", "key": { "switch_id": "$SWITCH_ID", - "eni_id": "$eni", + "routing_group_id": "$rg", "destination": "10.1.0.0/16" }, "attributes": [