summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsongyanchao <[email protected]>2024-01-08 10:33:54 +0000
committersongyanchao <[email protected]>2024-01-08 10:43:08 +0000
commit5e99a82cecb2f1f370c797aa2c391eb7c8a3cfb4 (patch)
tree3b695051659bdaadf3df5469d47e4f39d6f58477
parent144397383716bff8039adaabb1bd1c8acbe88e08 (diff)
🎈 perf: Update Classifier rule parameters.
Update Classifier rule parameters.
-rw-r--r--service/src/classifier_rule_parser.c31
-rw-r--r--service/src/node_tera.c30
-rw-r--r--test/classifier_test.py21
-rw-r--r--test/load_balance_test.py1
-rw-r--r--test/msgpack_test.py3
-rw-r--r--test/tera_test.py202
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