diff options
| author | songyanchao <[email protected]> | 2024-01-08 10:33:54 +0000 |
|---|---|---|
| committer | songyanchao <[email protected]> | 2024-01-08 10:43:08 +0000 |
| commit | 5e99a82cecb2f1f370c797aa2c391eb7c8a3cfb4 (patch) | |
| tree | 3b695051659bdaadf3df5469d47e4f39d6f58477 | |
| parent | 144397383716bff8039adaabb1bd1c8acbe88e08 (diff) | |
🎈 perf: Update Classifier rule parameters.
Update Classifier rule parameters.
| -rw-r--r-- | service/src/classifier_rule_parser.c | 31 | ||||
| -rw-r--r-- | service/src/node_tera.c | 30 | ||||
| -rw-r--r-- | test/classifier_test.py | 21 | ||||
| -rw-r--r-- | test/load_balance_test.py | 1 | ||||
| -rw-r--r-- | test/msgpack_test.py | 3 | ||||
| -rw-r--r-- | test/tera_test.py | 202 |
6 files changed, 153 insertions, 135 deletions
diff --git a/service/src/classifier_rule_parser.c b/service/src/classifier_rule_parser.c index 51a71b1..9ba95ab 100644 --- a/service/src/classifier_rule_parser.c +++ b/service/src/classifier_rule_parser.c @@ -21,15 +21,13 @@ int pkt_classifier_local_rule_parser(struct sc_main * sc, enum ruleset_type rule /* Retrieve the ruleset type; if there's no configured ruleset, break the current rule */ char str_ruleset_type[MR_SYMBOL_MAX] = {}; -#if 0 ret = MESA_load_profile_string_nodef(sc->local_cfgfile, str_section, "ruleset_type", str_ruleset_type, - if (ret < 0) - continue; sizeof(str_ruleset_type)); -#else - ret = MESA_load_profile_string_def(sc->local_cfgfile, str_section, "ruleset_type", str_ruleset_type, - sizeof(str_ruleset_type), "classifier"); -#endif + if (ret < 0) + { + MR_ERROR("Pkt classifier rule name : %s ,no config the 'ruleset_type'.", str_section); + return RT_ERR; + } /* Verify if the ruleset type is invalid or not required */ if (strcmp(str_ruleset_type, "classifier") == 0) @@ -49,6 +47,7 @@ int pkt_classifier_local_rule_parser(struct sc_main * sc, enum ruleset_type rule else { MR_ERROR("Pkt classifier rule name : %s ,ruleset type is invalid.", str_section); + return RT_ERR; } /* Initialize rule field with default values */ @@ -118,11 +117,7 @@ int pkt_classifier_local_rule_parser(struct sc_main * sc, enum ruleset_type rule /* Retrieve the priority */ uint32_t priority; -#if 0 ret = MESA_load_profile_uint_nodef(sc->local_cfgfile, str_section, "priority", &priority); -#else - ret = MESA_load_profile_uint_def(sc->local_cfgfile, str_section, "category", &priority, 0); -#endif if (ret < 0) { MR_ERROR("Pkt classifier rule name : %s ,must config the 'priority'.", str_section); @@ -226,12 +221,14 @@ int pkt_classifier_local_rule_parser(struct sc_main * sc, enum ruleset_type rule /* Retrieve the action */ char str_action[MR_SYMBOL_MAX] = {}; -#if 0 - MESA_load_profile_string_nodef(sc->local_cfgfile, str_section, "action", str_action, sizeof(str_action)); -#else - MESA_load_profile_string_def(sc->local_cfgfile, str_section, "action", str_action, sizeof(str_action), - "nf_steering"); -#endif + ret = MESA_load_profile_string_nodef(sc->local_cfgfile, str_section, "action", str_action, sizeof(str_action)); + if (ret < 0) + { + MR_ERROR("Pkt classifier rule name : %s ,no config the 'action'.", str_section); + return RT_ERR; + } + + /* Verify if the action type is invalid */ if (strcmp(str_action, "drop") == 0) { rule_field_parser.action.type = ACTION_DROP; diff --git a/service/src/node_tera.c b/service/src/node_tera.c index aac841a..4e62841 100644 --- a/service/src/node_tera.c +++ b/service/src/node_tera.c @@ -30,8 +30,8 @@ struct tera_adapter { uint8_t mac_flipping; uint16_t tera_id; - uint16_t vlan_ingress; - uint16_t vlan_egress; + uint16_t vlan_int; + uint16_t vlan_ext; struct mr_dev_desc * listen_device; }; @@ -111,16 +111,16 @@ int tera_config_parse(struct sc_main * sc, struct node_tera_main * tera_main) snprintf(str_conf_section, sizeof(str_conf_section), "tera_adapter:%d", index); /* Get vlan conf */ - uint32_t vlan_ingress; - ret = MESA_load_profile_uint_nodef(sc->local_cfgfile, str_conf_section, "vlan_ingress", &vlan_ingress); + uint32_t vlan_int; + ret = MESA_load_profile_uint_nodef(sc->local_cfgfile, str_conf_section, "vlan_int", &vlan_int); if (ret < 0) continue; - uint32_t vlan_egress; - ret = MESA_load_profile_uint_nodef(sc->local_cfgfile, str_conf_section, "vlan_egress", &vlan_egress); + uint32_t vlan_ext; + ret = MESA_load_profile_uint_nodef(sc->local_cfgfile, str_conf_section, "vlan_ext", &vlan_ext); if (ret < 0) { - MR_ERROR("The : %s ,No config the 'vlan_egress'.", str_conf_section); + MR_ERROR("The : %s ,No config the 'vlan_ext'.", str_conf_section); return RT_ERR; } @@ -149,8 +149,8 @@ int tera_config_parse(struct sc_main * sc, struct node_tera_main * tera_main) /* Save the adapter */ struct tera_adapter * adapter = &tera_main->adapters[nr_adapters]; - adapter->vlan_ingress = htons((uint16_t)vlan_ingress); - adapter->vlan_egress = htons((uint16_t)vlan_egress); + adapter->vlan_int = htons((uint16_t)vlan_int); + adapter->vlan_ext = htons((uint16_t)vlan_ext); adapter->mac_flipping = (uint8_t)mac_flipping; adapter->listen_device = dev_desc; adapter->tera_id = nr_adapters; @@ -188,8 +188,8 @@ void tera_info_dump(struct node_tera_main * tera_main) for (int index = 0; index < tera_main->nr_adapters; index++) { struct tera_adapter * adapter = &tera_main->adapters[index]; - MR_INFO("Tera adapter, config id: %u, listen device: %s, vlan_ingress: %u, vlan_egress: %u, mac_flipping:%u", - index, adapter->listen_device->symbol, ntohs(adapter->vlan_ingress), ntohs(adapter->vlan_egress), + MR_INFO("Tera adapter, config id: %u, listen device: %s, vlan_int: %u, vlan_ext: %u, mac_flipping:%u", index, + adapter->listen_device->symbol, ntohs(adapter->vlan_int), ntohs(adapter->vlan_ext), adapter->mac_flipping); } } @@ -253,18 +253,18 @@ static inline struct tera_adapter * tera_adapter_match(const struct node_tera_ma continue; } - if (adapter->vlan_ingress == pkt_vlan_id) + if (adapter->vlan_int == pkt_vlan_id) { /* i to e */ *out_dir = 0; - *out_vlan_couple = adapter->vlan_egress; + *out_vlan_couple = adapter->vlan_ext; return adapter; } - else if (adapter->vlan_egress == pkt_vlan_id) + else if (adapter->vlan_ext == pkt_vlan_id) { /* e to i */ *out_dir = 1; - *out_vlan_couple = adapter->vlan_ingress; + *out_vlan_couple = adapter->vlan_int; return adapter; } } diff --git a/test/classifier_test.py b/test/classifier_test.py index 9e358da..ff09e3b 100644 --- a/test/classifier_test.py +++ b/test/classifier_test.py @@ -119,6 +119,7 @@ devices=veth3,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier dst_ip_addr_v4=172.17.2.100 dst_ip_mask_v4=32 action=nf_steering @@ -129,6 +130,7 @@ vwire_id=0 [classifier_rule:1] rule_id=2 +ruleset_type=classifier dst_ip_addr_v4=172.17.2.101 dst_ip_mask_v4=32 action=nf_steering @@ -139,6 +141,7 @@ vwire_id=0 [classifier_rule:2] rule_id=3 +ruleset_type=classifier src_ip_addr_v4=172.17.2.102 src_ip_mask_v4=32 action=nf_steering @@ -149,6 +152,7 @@ vwire_id=0 [classifier_rule:3] rule_id=4 +ruleset_type=classifier src_ip_addr_v4=172.17.2.103 src_ip_mask_v4=32 action=nf_steering @@ -159,6 +163,7 @@ vwire_id=0 [classifier_rule:4] rule_id=5 +ruleset_type=classifier dst_ip_addr_v6=2222::4 dst_ip_mask_v6=128 action=nf_steering @@ -169,6 +174,7 @@ vwire_id=0 [classifier_rule:5] rule_id=6 +ruleset_type=classifier dst_ip_addr_v6=2222::5 dst_ip_mask_v6=128 action=nf_steering @@ -179,6 +185,7 @@ vwire_id=0 [classifier_rule:6] rule_id=7 +ruleset_type=classifier src_ip_addr_v6=2222::6 src_ip_mask_v6=128 action=nf_steering @@ -189,6 +196,7 @@ vwire_id=0 [classifier_rule:7] rule_id=8 +ruleset_type=classifier src_ip_addr_v6=2222::7 src_ip_mask_v6=128 action=nf_steering @@ -349,6 +357,7 @@ class TestForTreeSearch(BaseTest): global base_conf for i in range(8,128): base_conf += "[classifier_rule:" + str(i) + "]\n" + base_conf += "ruleset_type=classifier\n" base_conf += "rule_id=" + str(i+1) + "\n" base_conf += "dst_ip_addr_v4=172.19.2." + str(i) + "\n" base_conf += "dst_ip_mask_v4=32\n" @@ -358,7 +367,7 @@ class TestForTreeSearch(BaseTest): base_conf += "sid=1000\n" base_conf += "vwire_id=0\n\n" - print(base_conf) + #print(base_conf) mrzcpd = Mrzcpd(base_conf) mrzcpd.start() @@ -552,6 +561,7 @@ devices=veth1,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier src_ip_addr_v4=172.17.1.100 src_ip_mask_v4=32 dst_ip_addr_v4=172.17.2.100 @@ -569,6 +579,7 @@ action=nf_steering [classifier_rule:1] rule_id=2 +ruleset_type=classifier src_ip_addr_v6=1111::8888 src_ip_mask_v6=128 dst_ip_addr_v6=2222::9999 @@ -676,6 +687,7 @@ class FullFieldTreeMatchForVwireTest(BaseTest): conf = full_field_match_for_vwire_conf for i in range(8,128): conf += "[classifier_rule:" + str(i) + "]\n" + conf += "ruleset_type=classifier\n" conf += "rule_id=" + str(i+1) + "\n" conf += "dst_ip_addr_v4=172.19.2." + str(i) + "\n" conf += "dst_ip_mask_v4=32\n" @@ -798,8 +810,8 @@ max_rules=64 [tera_adapter:0] listen_device=veth0 -vlan_ingress=110 -vlan_egress=111 +vlan_int=110 +vlan_ext=111 mac_flipping=0 [service_lb] @@ -817,6 +829,7 @@ devices=veth2,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier src_ip_addr_v4=172.17.1.100 src_ip_mask_v4=32 dst_ip_addr_v4=172.17.2.100 @@ -834,6 +847,7 @@ action=nf_steering [classifier_rule:1] rule_id=2 +ruleset_type=classifier src_ip_addr_v6=1111::8888 src_ip_mask_v6=128 dst_ip_addr_v6=2222::9999 @@ -931,6 +945,7 @@ class FullFieldTreeMatchForTeraTest(BaseTest): conf = full_field_match_for_tera_conf for i in range(8,128): conf += "[classifier_rule:" + str(i) + "]\n" + conf += "ruleset_type=classifier\n" conf += "rule_id=" + str(i+1) + "\n" conf += "dst_ip_addr_v4=172.19.2." + str(i) + "\n" conf += "dst_ip_mask_v4=32\n" diff --git a/test/load_balance_test.py b/test/load_balance_test.py index c2ce853..c8910bc 100644 --- a/test/load_balance_test.py +++ b/test/load_balance_test.py @@ -102,6 +102,7 @@ devices=veth0,normal,veth1,normal,veth2,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier action=nf_steering priority=1 category=0 diff --git a/test/msgpack_test.py b/test/msgpack_test.py index 87b5b67..2bd4f0e 100644 --- a/test/msgpack_test.py +++ b/test/msgpack_test.py @@ -92,6 +92,7 @@ devices=veth2,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier action=nf_steering priority=1 category=0 @@ -224,6 +225,7 @@ devices=veth2,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier action=nf_steering priority=1 category=0 @@ -363,6 +365,7 @@ devices=veth-msgpack-tx,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier action=nf_steering priority=1 category=0 diff --git a/test/tera_test.py b/test/tera_test.py index 942b7d2..ff16ae1 100644 --- a/test/tera_test.py +++ b/test/tera_test.py @@ -76,8 +76,8 @@ sid_end=2000 [tera_adapter:0] listen_device=veth0 -vlan_ingress=110 -vlan_egress=111 +vlan_int=110 +vlan_ext=111 mac_flipping=0 """ @@ -181,8 +181,8 @@ sid_end=2000 [tera_adapter:0] listen_device=veth1 -vlan_ingress=110 -vlan_egress=111 +vlan_int=110 +vlan_ext=111 mac_flipping=1 """ @@ -291,98 +291,98 @@ sid_end=2000 [tera_adapter:0] listen_device=veth0 -vlan_ingress=110 -vlan_egress=111 +vlan_int=110 +vlan_ext=111 mac_flipping=1 [tera_adapter:1] listen_device=veth0 -vlan_ingress=112 -vlan_egress=113 +vlan_int=112 +vlan_ext=113 mac_flipping=1 [tera_adapter:2] listen_device=veth0 -vlan_ingress=114 -vlan_egress=115 +vlan_int=114 +vlan_ext=115 mac_flipping=1 [tera_adapter:3] listen_device=veth0 -vlan_ingress=116 -vlan_egress=117 +vlan_int=116 +vlan_ext=117 mac_flipping=1 [tera_adapter:4] listen_device=veth0 -vlan_ingress=118 -vlan_egress=119 +vlan_int=118 +vlan_ext=119 mac_flipping=1 [tera_adapter:5] listen_device=veth0 -vlan_ingress=120 -vlan_egress=121 +vlan_int=120 +vlan_ext=121 mac_flipping=1 [tera_adapter:6] listen_device=veth0 -vlan_ingress=122 -vlan_egress=123 +vlan_int=122 +vlan_ext=123 mac_flipping=1 [tera_adapter:7] listen_device=veth0 -vlan_ingress=124 -vlan_egress=125 +vlan_int=124 +vlan_ext=125 mac_flipping=1 [tera_adapter:8] listen_device=veth0 -vlan_ingress=126 -vlan_egress=127 +vlan_int=126 +vlan_ext=127 mac_flipping=1 [tera_adapter:9] listen_device=veth0 -vlan_ingress=128 -vlan_egress=129 +vlan_int=128 +vlan_ext=129 mac_flipping=1 [tera_adapter:10] listen_device=veth0 -vlan_ingress=130 -vlan_egress=131 +vlan_int=130 +vlan_ext=131 mac_flipping=1 [tera_adapter:11] listen_device=veth0 -vlan_ingress=132 -vlan_egress=133 +vlan_int=132 +vlan_ext=133 mac_flipping=1 [tera_adapter:12] listen_device=veth0 -vlan_ingress=134 -vlan_egress=135 +vlan_int=134 +vlan_ext=135 mac_flipping=1 [tera_adapter:13] listen_device=veth0 -vlan_ingress=136 -vlan_egress=137 +vlan_int=136 +vlan_ext=137 mac_flipping=1 [tera_adapter:14] listen_device=veth0 -vlan_ingress=138 -vlan_egress=139 +vlan_int=138 +vlan_ext=139 mac_flipping=1 [tera_adapter:15] listen_device=veth0 -vlan_ingress=140 -vlan_egress=141 +vlan_int=140 +vlan_ext=141 mac_flipping=1 """ """ @@ -610,98 +610,98 @@ sid_end=2000 [tera_adapter:0] listen_device=veth0 -vlan_ingress=110 -vlan_egress=111 +vlan_int=110 +vlan_ext=111 mac_flipping=1 [tera_adapter:1] listen_device=veth0 -vlan_ingress=112 -vlan_egress=113 +vlan_int=112 +vlan_ext=113 mac_flipping=1 [tera_adapter:2] listen_device=veth0 -vlan_ingress=114 -vlan_egress=115 +vlan_int=114 +vlan_ext=115 mac_flipping=1 [tera_adapter:3] listen_device=veth0 -vlan_ingress=116 -vlan_egress=117 +vlan_int=116 +vlan_ext=117 mac_flipping=1 [tera_adapter:4] listen_device=veth0 -vlan_ingress=118 -vlan_egress=119 +vlan_int=118 +vlan_ext=119 mac_flipping=1 [tera_adapter:5] listen_device=veth0 -vlan_ingress=120 -vlan_egress=121 +vlan_int=120 +vlan_ext=121 mac_flipping=1 [tera_adapter:6] listen_device=veth0 -vlan_ingress=122 -vlan_egress=123 +vlan_int=122 +vlan_ext=123 mac_flipping=1 [tera_adapter:7] listen_device=veth0 -vlan_ingress=124 -vlan_egress=125 +vlan_int=124 +vlan_ext=125 mac_flipping=1 [tera_adapter:8] listen_device=veth0 -vlan_ingress=126 -vlan_egress=127 +vlan_int=126 +vlan_ext=127 mac_flipping=1 [tera_adapter:9] listen_device=veth0 -vlan_ingress=128 -vlan_egress=129 +vlan_int=128 +vlan_ext=129 mac_flipping=1 [tera_adapter:10] listen_device=veth0 -vlan_ingress=130 -vlan_egress=131 +vlan_int=130 +vlan_ext=131 mac_flipping=1 [tera_adapter:11] listen_device=veth0 -vlan_ingress=132 -vlan_egress=133 +vlan_int=132 +vlan_ext=133 mac_flipping=1 [tera_adapter:12] listen_device=veth0 -vlan_ingress=134 -vlan_egress=135 +vlan_int=134 +vlan_ext=135 mac_flipping=1 [tera_adapter:13] listen_device=veth0 -vlan_ingress=136 -vlan_egress=137 +vlan_int=136 +vlan_ext=137 mac_flipping=1 [tera_adapter:14] listen_device=veth0 -vlan_ingress=138 -vlan_egress=139 +vlan_int=138 +vlan_ext=139 mac_flipping=1 [tera_adapter:15] listen_device=veth0 -vlan_ingress=140 -vlan_egress=141 +vlan_int=140 +vlan_ext=141 mac_flipping=1 # load balance @@ -711,6 +711,7 @@ devices=veth1,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier action=nf_steering priority=1 category=0 @@ -1032,98 +1033,98 @@ sid_end=2000 [tera_adapter:0] listen_device=veth0 -vlan_ingress=110 -vlan_egress=111 +vlan_int=110 +vlan_ext=111 mac_flipping=1 [tera_adapter:1] listen_device=veth0 -vlan_ingress=112 -vlan_egress=113 +vlan_int=112 +vlan_ext=113 mac_flipping=1 [tera_adapter:2] listen_device=veth0 -vlan_ingress=114 -vlan_egress=115 +vlan_int=114 +vlan_ext=115 mac_flipping=1 [tera_adapter:3] listen_device=veth0 -vlan_ingress=116 -vlan_egress=117 +vlan_int=116 +vlan_ext=117 mac_flipping=1 [tera_adapter:4] listen_device=veth0 -vlan_ingress=118 -vlan_egress=119 +vlan_int=118 +vlan_ext=119 mac_flipping=1 [tera_adapter:5] listen_device=veth0 -vlan_ingress=120 -vlan_egress=121 +vlan_int=120 +vlan_ext=121 mac_flipping=1 [tera_adapter:6] listen_device=veth0 -vlan_ingress=122 -vlan_egress=123 +vlan_int=122 +vlan_ext=123 mac_flipping=1 [tera_adapter:7] listen_device=veth0 -vlan_ingress=124 -vlan_egress=125 +vlan_int=124 +vlan_ext=125 mac_flipping=1 [tera_adapter:8] listen_device=veth0 -vlan_ingress=126 -vlan_egress=127 +vlan_int=126 +vlan_ext=127 mac_flipping=1 [tera_adapter:9] listen_device=veth0 -vlan_ingress=128 -vlan_egress=129 +vlan_int=128 +vlan_ext=129 mac_flipping=1 [tera_adapter:10] listen_device=veth0 -vlan_ingress=130 -vlan_egress=131 +vlan_int=130 +vlan_ext=131 mac_flipping=1 [tera_adapter:11] listen_device=veth0 -vlan_ingress=132 -vlan_egress=133 +vlan_int=132 +vlan_ext=133 mac_flipping=1 [tera_adapter:12] listen_device=veth0 -vlan_ingress=134 -vlan_egress=135 +vlan_int=134 +vlan_ext=135 mac_flipping=1 [tera_adapter:13] listen_device=veth0 -vlan_ingress=136 -vlan_egress=137 +vlan_int=136 +vlan_ext=137 mac_flipping=1 [tera_adapter:14] listen_device=veth0 -vlan_ingress=138 -vlan_egress=139 +vlan_int=138 +vlan_ext=139 mac_flipping=1 [tera_adapter:15] listen_device=veth0 -vlan_ingress=140 -vlan_egress=141 +vlan_int=140 +vlan_ext=141 mac_flipping=1 # load balance @@ -1133,6 +1134,7 @@ devices=veth-msgpack-tx,normal [classifier_rule:0] rule_id=1 +ruleset_type=classifier action=nf_steering priority=1 category=0 |
