diff options
| author | songyanchao <[email protected]> | 2024-01-12 09:18:53 +0000 |
|---|---|---|
| committer | songyanchao <[email protected]> | 2024-01-12 09:18:53 +0000 |
| commit | daaf9316fb1acd9620ff7a7c592d5567130a873a (patch) | |
| tree | 7876ec6e5aa7f1ceb2f77511ad0658456ba03707 | |
| parent | d61f6b7b9c1fd4955074c9a49ecb07a5adb6803f (diff) | |
✨ feat(DPISDN-33): Support non-contiguous configuration for Ef adapter id.
Support non-contiguous configuration for Ef adapter id.
| -rw-r--r-- | include/internal/adapter_define.h | 2 | ||||
| -rw-r--r-- | service/src/node_classifier.c | 14 | ||||
| -rw-r--r-- | service/src/node_etherfabric.c | 100 | ||||
| -rw-r--r-- | test/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | test/bfd_test.py | 6 | ||||
| -rw-r--r-- | test/bridge_test.py | 6 | ||||
| -rw-r--r-- | test/classifier_test.py | 18 | ||||
| -rw-r--r-- | test/endpoint_dev_test.py | 6 | ||||
| -rw-r--r-- | test/etherfabric_test.py | 234 | ||||
| -rw-r--r-- | test/health_check_test.py | 6 | ||||
| -rw-r--r-- | test/load_balance_test.py | 6 | ||||
| -rw-r--r-- | test/msgpack_test.py | 18 | ||||
| -rw-r--r-- | test/tera_test.py | 36 | ||||
| -rw-r--r-- | test/vwire_test.py | 12 |
14 files changed, 423 insertions, 43 deletions
diff --git a/include/internal/adapter_define.h b/include/internal/adapter_define.h index b0e1b8d..0275904 100644 --- a/include/internal/adapter_define.h +++ b/include/internal/adapter_define.h @@ -11,8 +11,8 @@ enum adapter_type ADAPTER_TYPE_NONE }; -unsigned int nr_ef_adapters_get(); unsigned int nr_max_vwires_get(); +unsigned int nr_max_ef_adapters_get(); unsigned int nr_tera_adapters_get(); int ef_adapter_id_check(uint32_t ef_adapter_id); int vwire_id_check(uint32_t vwire_id); diff --git a/service/src/node_classifier.c b/service/src/node_classifier.c index 052c8d7..7babd18 100644 --- a/service/src/node_classifier.c +++ b/service/src/node_classifier.c @@ -26,7 +26,7 @@ struct classifier_stats struct node_classifier_main { - unsigned int nr_ef_adapters; + unsigned int nr_max_ef_adapters; unsigned int nr_max_vwires; unsigned int nr_tera_adapters; unsigned int ignore_all_icmp_pkts; @@ -62,8 +62,8 @@ static inline int classifier_rules_verify(const struct rule_list_parsed rule_lis { if (vwire_id_check(rule_field_parser->adapter.id) == RT_ERR) { - MR_ERROR("The rule ID '%u' with configured vwire adapter ID '%u' is invalid.", - rule_field_parser->rule_id, rule_field_parser->adapter.id); + MR_ERROR("The rule ID '%u' with configured vwire ID '%u' is invalid.", rule_field_parser->rule_id, + rule_field_parser->adapter.id); return RT_ERR; } } @@ -102,10 +102,10 @@ static inline uint16_t domain_field_generator_for_classifier(enum adapter_type t domain_field = adapter_id; break; case ADAPTER_TYPE_VWIRE: - domain_field = classifier_main->nr_ef_adapters + adapter_id; + domain_field = classifier_main->nr_max_ef_adapters + adapter_id; break; case ADAPTER_TYPE_TERA: - domain_field = classifier_main->nr_ef_adapters + classifier_main->nr_max_vwires + adapter_id; + domain_field = classifier_main->nr_max_ef_adapters + classifier_main->nr_max_vwires + adapter_id; break; default: domain_field = UINT16_MAX; @@ -216,11 +216,11 @@ int classifier_init(struct sc_main * sc) &classifier_main->ignore_all_icmp6_pkts, 0); /* Create a new packet classifier engine. */ - classifier_main->nr_ef_adapters = nr_ef_adapters_get(); + classifier_main->nr_max_ef_adapters = nr_max_ef_adapters_get(); classifier_main->nr_max_vwires = nr_max_vwires_get(); classifier_main->nr_tera_adapters = nr_tera_adapters_get(); - uint16_t nr_domains = classifier_main->nr_ef_adapters; + uint16_t nr_domains = classifier_main->nr_max_ef_adapters; nr_domains += classifier_main->nr_max_vwires; nr_domains += +classifier_main->nr_tera_adapters; diff --git a/service/src/node_etherfabric.c b/service/src/node_etherfabric.c index 35f9087..7c84423 100644 --- a/service/src/node_etherfabric.c +++ b/service/src/node_etherfabric.c @@ -1,21 +1,15 @@ #include <cJSON.h> -#include <netinet/in.h> #include <rte_graph.h> #include <rte_graph_worker.h> #include <rte_hash.h> #include <rte_hash_crc.h> -#include <sys/socket.h> +#include <rte_malloc.h> #include <MESA_prof_load.h> -#include <common.h> -#include <ldbc.h> #include <link_db.h> #include <mrb_define.h> #include <port_adapter_mapping.h> -#include <sc_common.h> -#include <sc_node.h> #include <sc_node_common.h> -#include <sc_vdev.h> /* Etherfabric ingress next node */ enum @@ -45,6 +39,7 @@ enum ef_adapter_mode struct ef_adapter { enum ef_adapter_mode mode; + uint32_t ef_adapter_id; struct mr_dev_desc * listen_device; }; @@ -111,23 +106,31 @@ struct node_ef_main /* Global etherfabric main and etherfabric max entry */ static struct node_ef_main * g_ef_main = NULL; -static unsigned int g_ef_adapter_max_rules = 256; +static unsigned int nr_max_ef_adapters = 256; /* Set the pkt offset */ const static int ef_encap_len = sizeof(struct rte_ether_hdr) + sizeof(struct rte_ipv4_hdr) + sizeof(struct rte_udp_hdr) + sizeof(struct g_vxlan_hdr); /* Etherfabric adapters num get */ -unsigned int nr_ef_adapters_get() +unsigned int nr_max_ef_adapters_get() { - return g_ef_main->ef_mgr.nr_adapters; + return nr_max_ef_adapters; } /* Etherfabric adapter id check */ int ef_adapter_id_check(uint32_t ef_adapter_id) { /* Etherfabric rule id is continuous */ - if (ef_adapter_id >= g_ef_main->ef_mgr.nr_adapters) + if (ef_adapter_id >= nr_max_ef_adapters) + return RT_ERR; + + struct ef_adapter * ef_adapter = &g_ef_main->ef_mgr.ef_adapters[ef_adapter_id]; + + if (ef_adapter->mode == MODE_INVALID) + return RT_ERR; + + if (ef_adapter->ef_adapter_id != ef_adapter_id) return RT_ERR; return RT_SUCCESS; @@ -195,7 +198,7 @@ int parser_ef_adapter_config(struct sc_main * sc, struct ef_mgr * ef_mgr) /* Parsing all config */ int ret; uint16_t nr_adapters = 0; - for (int index = 0; index < g_ef_adapter_max_rules; index++) + for (int index = 0; index < nr_max_ef_adapters; index++) { char str_conf_section[MR_STRING_MAX] = {}; snprintf(str_conf_section, sizeof(str_conf_section), "ef_adapter:%d", index); @@ -221,6 +224,22 @@ int parser_ef_adapter_config(struct sc_main * sc, struct ef_mgr * ef_mgr) return RT_ERR; } + /* Get etherfabric adapter id */ + uint32_t ef_adapter_id = 0; + ret = MESA_load_profile_uint_nodef(sc->local_cfgfile, str_conf_section, "ef_adapter_id", &ef_adapter_id); + + if (ret < 0) + { + MR_ERROR("The : %s ,No config the 'ef_adapter_id'.", str_conf_section); + return RT_ERR; + } + + if (ef_adapter_id >= nr_max_ef_adapters) + { + MR_ERROR("The : %s 'ef_adapter_id' is invalid: %u", str_conf_section, ef_adapter_id); + return RT_ERR; + } + /* Parsing listen device */ char str_listen_device[MR_STRING_MAX] = {}; ret = MESA_load_profile_string_nodef(sc->local_cfgfile, str_conf_section, "listen_device", str_listen_device, @@ -249,8 +268,9 @@ int parser_ef_adapter_config(struct sc_main * sc, struct ef_mgr * ef_mgr) port_adapter_mapping_insert(dev_desc->port_id, ADAPTER_TYPE_EF); /* Save The Listen Device Port Index */ - struct ef_adapter * ef_adapter = &ef_mgr->ef_adapters[nr_adapters]; + struct ef_adapter * ef_adapter = &ef_mgr->ef_adapters[ef_adapter_id]; ef_adapter->mode = mode; + ef_adapter->ef_adapter_id = ef_adapter_id; ef_adapter->listen_device = dev_desc; nr_adapters++; } @@ -264,8 +284,14 @@ int parser_ef_adapter_config(struct sc_main * sc, struct ef_mgr * ef_mgr) } /* Inserter sid to forwarder table */ - for (uint16_t sid = sid_start; sid < sid_start + nr_adapters; sid++) - forwarder_table_inserter(sid, FORWARDER_TYPE_EF); + for (int i = 0; i < nr_max_ef_adapters; i++) + { + struct ef_adapter * ef_adapter = &ef_mgr->ef_adapters[i]; + if (ef_adapter->mode == MODE_INVALID) + continue; + + forwarder_table_inserter(sid_start + ef_adapter->ef_adapter_id, FORWARDER_TYPE_EF); + } /* Save the etherfabric adapter config num */ ef_mgr->nr_adapters = nr_adapters; @@ -284,7 +310,7 @@ void dump_ef_adapter_config(struct ef_mgr * ef_mgr) MR_INFO("Etherfabric adapter, total num: %u, sid num: %u, sid start: %u, sid end:%u", ef_mgr->nr_adapters, ef_mgr->nr_sids, ef_mgr->sid_start, ef_mgr->sid_end); - for (int i = 0; i < ef_mgr->nr_adapters; i++) + for (int i = 0; i < nr_max_ef_adapters; i++) { char str_mode[MR_STRING_MAX] = {}; struct ef_adapter * ef_adapter = &ef_mgr->ef_adapters[i]; @@ -297,11 +323,11 @@ void dump_ef_adapter_config(struct ef_mgr * ef_mgr) sprintf(str_mode, "tap"); break; default: - break; + continue; } - MR_INFO("Etherfabric adapter, config id: %u, mode: %s, listen device: %s", i, str_mode, - ef_adapter->listen_device->symbol); + MR_INFO("Etherfabric adapter, config id: %u,ef adapter id:%u, mode: %s, listen device: %s", i, + ef_adapter->ef_adapter_id, str_mode, ef_adapter->listen_device->symbol); } } @@ -317,11 +343,11 @@ int ef_init(struct sc_main * sc) sc->node_ef_main = ef_main; /* Get ef max entry,default is 256 */ - MESA_load_profile_uint_def(sc->local_cfgfile, "ef_adapters", "max_rules", &g_ef_adapter_max_rules, 256); + MESA_load_profile_uint_def(sc->local_cfgfile, "limits", "nr_max_ef_adapters", &nr_max_ef_adapters, 256); /* Malloc etherfabric adapter */ struct ef_mgr * ef_mgr = &ef_main->ef_mgr; - ef_mgr->ef_adapters = ZMALLOC(sizeof(struct ef_adapter) * g_ef_adapter_max_rules); + ef_mgr->ef_adapters = ZMALLOC(sizeof(struct ef_adapter) * nr_max_ef_adapters); MR_VERIFY_MALLOC(ef_mgr->ef_adapters); /* Parsing the etherfabric adapter config */ @@ -333,7 +359,7 @@ int ef_init(struct sc_main * sc) /* Link db ctx create */ uint32_t max_entries; - MESA_load_profile_uint_def(sc->local_cfgfile, "link_dbs", "max_rules", &max_entries, 32); + MESA_load_profile_uint_def(sc->local_cfgfile, "limits", "nr_max_link_dbs", &max_entries, 32); ef_mgr->link_db_ctx = link_db_create(LINK_DB_TYPE_EF, max_entries); if (ef_mgr->link_db_ctx == NULL) return RT_ERR; @@ -354,14 +380,18 @@ int ef_init(struct sc_main * sc) /************************************** Etherfabric Node **************************************/ /* Etherfabric adapter lookup */ -int ef_adapter_lookup(struct ef_mgr * mgr, uint32_t dst_addr, uint16_t * out_adapter_id) +int ef_adapter_lookup(struct ef_mgr * mgr, uint32_t dst_addr, uint16_t * out_ef_adapter_id) { - for (uint16_t index = 0; index < mgr->nr_adapters; index++) + for (uint16_t index = 0; index < nr_max_ef_adapters; index++) { - struct ef_adapter * adapter_item = &mgr->ef_adapters[index]; - if (dst_addr == adapter_item->listen_device->in_addr.s_addr) + struct ef_adapter * ef_adapter = &mgr->ef_adapters[index]; + + if (ef_adapter->mode == MODE_INVALID) + continue; + + if (dst_addr == ef_adapter->listen_device->in_addr.s_addr) { - *out_adapter_id = index; + *out_ef_adapter_id = ef_adapter->ef_adapter_id; return RT_SUCCESS; } } @@ -455,8 +485,8 @@ static __rte_always_inline uint16_t ef_ingress_node_process(struct rte_graph * g assert(outer_g_vxlan_hdr != NULL); /* Etherfabric adapter lookup */ - uint16_t adapter_id = 0; - int ret = ef_adapter_lookup(ef_mgr, outer_ipv4_hdr->dst_addr, &adapter_id); + uint16_t ef_adapter_id = 0; + int ret = ef_adapter_lookup(ef_mgr, outer_ipv4_hdr->dst_addr, &ef_adapter_id); if (unlikely(ret == RT_ERR)) { stat.drop_for_adapter_not_exist++; @@ -484,14 +514,14 @@ static __rte_always_inline uint16_t ef_ingress_node_process(struct rte_graph * g /* Fill ef_peer index and dir */ struct mrb_metadata * mrb_meta = mrbuf_cz_data(mbuf, MR_NODE_CTRLZONE_ID); mrb_meta->adapter_type = ADAPTER_TYPE_EF; - mrb_meta->adapter_id = adapter_id; + mrb_meta->adapter_id = ef_adapter_id; mrb_meta->ef_link_id = outer_g_vxlan_hdr->link_id; mrb_meta->traffic_link_id = result; mrb_meta->dir = outer_g_vxlan_hdr->dir; mrb_meta->ef_peer_index = (uint16_t)ef_peer_index; /* Insert sid*/ - uint16_t sids[1] = {ef_mgr->sid_start + adapter_id}; + uint16_t sids[1] = {ef_mgr->sid_start + ef_adapter_id}; if (unlikely(sid_list_prepend(&mrb_meta->sid_list, sids, 1) == RT_ERR)) { stat.drop_for_append_sid_err++; @@ -656,9 +686,11 @@ static __rte_always_inline uint16_t ef_egress_node_process(struct rte_graph * gr /* Get etherfabric adapter item */ struct mrb_metadata * mrb_meta = mrbuf_cz_data(mbuf, MR_NODE_CTRLZONE_ID); - uint16_t ef_adapter_index = mrb_meta->cur_sid - sid_start; - assert(ef_adapter_index < ef_mgr->nr_adapters); - struct ef_adapter * ef_adapter = &ef_adapters[ef_adapter_index]; + uint16_t ef_adapter_id = mrb_meta->cur_sid - sid_start; + + assert(ef_adapter_id < nr_max_ef_adapters); + + struct ef_adapter * ef_adapter = &ef_adapters[ef_adapter_id]; switch (ef_adapter->mode) { diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fa518bb..d2dacd6 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -75,7 +75,7 @@ add_test( NAME etherfabric_test COMMAND /usr/local/bin/ptf --test-dir ${CMAKE_SOURCE_DIR}/test --interface 0@veth0-ptf0 - virtual_wire_mode tap_mode ef_route_ctx_test --test-params "source_dir='${CMAKE_SOURCE_DIR}'" + virtual_wire_mode tap_mode ef_route_ctx_test ef_adapter_id_non_contiguous_test --test-params "source_dir='${CMAKE_SOURCE_DIR}'" ) # Add health_check test diff --git a/test/bfd_test.py b/test/bfd_test.py index 049a7f9..06ec56f 100644 --- a/test/bfd_test.py +++ b/test/bfd_test.py @@ -26,6 +26,12 @@ iocore = 1 distmode = 2 hashmode = 0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr = 0x600000000000 loglevel = 7 diff --git a/test/bridge_test.py b/test/bridge_test.py index fca9d42..bf1dfff 100644 --- a/test/bridge_test.py +++ b/test/bridge_test.py @@ -45,6 +45,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 diff --git a/test/classifier_test.py b/test/classifier_test.py index 686a2a7..8d9a4ac 100644 --- a/test/classifier_test.py +++ b/test/classifier_test.py @@ -52,6 +52,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -504,6 +510,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -770,6 +782,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 diff --git a/test/endpoint_dev_test.py b/test/endpoint_dev_test.py index e9fcce5..fa46b44 100644 --- a/test/endpoint_dev_test.py +++ b/test/endpoint_dev_test.py @@ -25,6 +25,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 diff --git a/test/etherfabric_test.py b/test/etherfabric_test.py index a974426..2cbfc89 100644 --- a/test/etherfabric_test.py +++ b/test/etherfabric_test.py @@ -25,6 +25,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -74,6 +80,7 @@ sid_end=200 max_rules=256 [ef_adapter:0] +ef_adapter_id=0 mode=virtual-wire listen_device=veth0 """ @@ -123,6 +130,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -172,6 +185,7 @@ sid_end=200 max_rules=256 [ef_adapter:0] +ef_adapter_id=0 mode=tap listen_device=veth0 """ @@ -242,6 +256,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -291,6 +311,7 @@ sid_start=1000 sid_end=2000 [ef_adapter:0] +ef_adapter_id=0 mode=virtual-wire listen_device=veth0 @@ -342,3 +363,216 @@ class IPv4TestForRouteCtx(BaseTest): verify_packets(self, verify_pkt, [0]) finally: mrzcpd.stop() + +start_conf_with_non_contiguous_test = """ +[device] +device = veth0,veth1,veth2,veth3,veth4,veth5 +sz_tunnel = 8192 +sz_buffer = 0 + +[device:veth0] +in_addr=10.254.60.100 +in_mask=255.255.255.0 +promisc = 1 +mtu = 1500 +driver = 2 +role = 3 + +[device:veth1] +promisc = 1 +mtu = 1500 +driver=2 +role=4 + +[device:veth2] +in_addr=10.254.60.101 +in_mask=255.255.255.0 +promisc = 1 +mtu = 1500 +driver = 2 +role = 3 + +[device:veth3] +promisc = 1 +mtu = 1500 +driver=2 +role=4 + +[device:veth4] +in_addr=10.254.60.102 +in_mask=255.255.255.0 +promisc = 1 +mtu = 1500 +driver = 2 +role = 3 + +[device:veth5] +promisc = 1 +mtu = 1500 +driver=2 +role=4 + +[service] +iocore = 1 +distmode = 2 +hashmode = 0 + +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + +[eal] +virtaddr = 0x600000000000 +loglevel = 7 +nohuge = 1 +mem = 65535 + +[keepalive] +check_spinlock = 1 + +[ctrlzone] +ctrlzone0 = tunnat, 64 +ctrlzone1 = vsys, 64 + +[pool] +create_mode = 3 +sz_direct_pktmbuf = 4096 +sz_indirect_pktmbuf = 4096 +sz_cache = 256 +sz_data = 3000 + +[ctrlmsg] +listen_addr = 0.0.0.0 +listen_port = 46789 + +[rpc] +addr = 127.0.0.1 +port = 56789 + +# sid +[ef_adapters] +sid_start=100 +sid_end=200 +max_rules=256 + +[vwires] +sid_start=300 +sid_end=400 +max_rules=256 + +[service_lb] +sid_start=1000 +sid_end=2000 + +# load balance +[load_balance:0] +mode=balance +devices=veth1,normal + +[load_balance:1] +mode=balance +devices=veth3,normal + +[load_balance:2] +mode=balance +devices=veth5,normal + +# adapter +[ef_adapter:0] +ef_adapter_id=0 +mode=virtual-wire +listen_device=veth0 + +[ef_adapter:1] +ef_adapter_id=2 +mode=virtual-wire +listen_device=veth2 + +[ef_adapter:2] +ef_adapter_id=4 +mode=virtual-wire +listen_device=veth4 +""" + +dynamic_conf_with_non_contiguous_test = """ +[classifier_rule:0] +rule_id=1 +ruleset_type=classifier +action=nf_steering +priority=1 +category=0 +sid=1000 +ef_adapter_id=0 + +[classifier_rule:1] +rule_id=2 +ruleset_type=classifier +action=nf_steering +priority=1 +category=0 +sid=1001 +ef_adapter_id=2 + +[classifier_rule:2] +rule_id=2 +ruleset_type=classifier +action=nf_steering +priority=1 +category=0 +sid=1002 +ef_adapter_id=4 +""" + +""" + +--------------+ +----------++-----------+----------+ + | PTF | | Mrzcpd | + +--------------+ +----------++-----------+----------+ +------------+ + | veth0-ptf0 | ---> | veth0 | | veth1 | ---> | veth1-ptf1 | + +--------------+ +----------+ +----------+ +------------+ + | veth2-ptf2 | <-\- | veth2 | | veth3 | ---> | veth3-ptf3 | + +--------------+ +----------+ +----------+ +------------+ + | veth4-ptf4 | ---> | veth4 | | veth5 | ---> | veth5-ptf5 | + +--------------+ +----------+ +----------+ +------------+ +""" +@group("ef_adapter_id_non_contiguous_test") +class EfAdapterIdNonContiguousTest(BaseTest): + # Base test init + def __init__(self): + BaseTest.__init__(self) + + # Dataplane set up + def setUp(self): + self.dataplane = ptf.dataplane_instance + + # Run test + def runTest(self): + try: + # Init & Start mrzcpd + mrzcpd = Mrzcpd(start_conf_with_non_contiguous_test,dynamic_conf_with_non_contiguous_test) + mrzcpd.start() + + send_pkts = [] + verify_pkts = [] + + # Create packets + for i in range(0,3): + tcp_pkt = simple_tcp_packet() + verify_pkts.append(tcp_pkt) + + send_pkts.append(simple_vxlan_packet(eth_src='0a:0a:0a:0a:01:28', + eth_dst='10:70:fd:03:c0:bd', + ip_src='10.254.50.' + str(100 + i), ip_dst='10.254.60.' + str(100 + i), + vxlan_vni=32,inner_frame=tcp_pkt)) + + + # Traverse all ports + for i in range(0, 3): + # Send pkt for the port + send_packet(self, i * 2 , send_pkts[i]) + # Verify pkt for specified port + verify_packets(self, verify_pkts[i], [1 + i*2]) + + finally: + mrzcpd.stop() diff --git a/test/health_check_test.py b/test/health_check_test.py index c32f83a..71a48d9 100644 --- a/test/health_check_test.py +++ b/test/health_check_test.py @@ -23,6 +23,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 diff --git a/test/load_balance_test.py b/test/load_balance_test.py index 78aa758..f762214 100644 --- a/test/load_balance_test.py +++ b/test/load_balance_test.py @@ -47,6 +47,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 diff --git a/test/msgpack_test.py b/test/msgpack_test.py index f5e1c9e..d46955f 100644 --- a/test/msgpack_test.py +++ b/test/msgpack_test.py @@ -41,6 +41,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -181,6 +187,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -329,6 +341,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 diff --git a/test/tera_test.py b/test/tera_test.py index bb11883..2a596f3 100644 --- a/test/tera_test.py +++ b/test/tera_test.py @@ -26,6 +26,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -131,6 +137,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -241,6 +253,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -564,6 +582,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -994,6 +1018,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 @@ -1317,6 +1347,12 @@ iocore=1 distmode=2 hashmode=0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr=0x600000000000 loglevel=7 diff --git a/test/vwire_test.py b/test/vwire_test.py index fa9141d..3d8e7b8 100644 --- a/test/vwire_test.py +++ b/test/vwire_test.py @@ -160,6 +160,12 @@ iocore = 1 distmode = 2 hashmode = 0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr = 0x600000000000 loglevel = 7 @@ -386,6 +392,12 @@ iocore = 1 distmode = 2 hashmode = 0 +[limits] +nr_max_ef_adapters=32 +nr_max_vwires=32 +nr_max_tera_adapters=32 +nr_max_link_dbs=32 + [eal] virtaddr = 0x600000000000 loglevel = 7 |
