From patchwork Tue Nov 3 08:36:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhao, HaiyangX" X-Patchwork-Id: 83506 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1E515A0521; Tue, 3 Nov 2020 09:38:32 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 35A5EC866; Tue, 3 Nov 2020 09:38:24 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id B3699C822 for ; Tue, 3 Nov 2020 09:38:22 +0100 (CET) IronPort-SDR: dSyehvYI8Ou8SsVCOgxMsyTZ0GkHLO0X7qSa30Y9H6EbhQGPXfFFF27pOJ/Z6hFYKMWXHQl/ia VC72xagd+Xyw== X-IronPort-AV: E=McAfee;i="6000,8403,9793"; a="253728061" X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="253728061" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:21 -0800 IronPort-SDR: BBsXXw/CePJlMBDajCzWxP0TeZudvM2zSYNZVZYQ1glLfh7Jp4W7MyxLu3Io6ttFOAQExzYf6N 7wOzeA6eHS9w== X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="305734236" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:19 -0800 From: Haiyang Zhao To: dts@dpdk.org, qi.fu@intel.com Cc: Haiyang Zhao Date: Tue, 3 Nov 2020 16:36:49 +0800 Message-Id: <20201103083656.16541-2-haiyangx.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201103083656.16541-1-haiyangx.zhao@intel.com> References: <20201103083656.16541-1-haiyangx.zhao@intel.com> Subject: [dts] [PATCH V4 1/8] tests/rte_flow_common: add a common module to process rss test X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" *.add a class named RssProcessing to process rss tests. Signed-off-by: Haiyang Zhao --- tests/rte_flow_common.py | 391 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 391 insertions(+) diff --git a/tests/rte_flow_common.py b/tests/rte_flow_common.py index 8a4cded..43c0eab 100644 --- a/tests/rte_flow_common.py +++ b/tests/rte_flow_common.py @@ -33,6 +33,7 @@ import json import time import re from utils import GREEN, RED +from packet import Packet CVL_TXQ_RXQ_NUMBER = 16 @@ -672,3 +673,393 @@ def check_pf_rss_queue(out, count): return True else: return False + + +class RssProcessing(object): + def __init__(self, test_case, pmd_output, tester_ifaces, rxq): + self.test_case = test_case + self.pmd_output = pmd_output + self.tester_ifaces = tester_ifaces + self.rxq = rxq + self.logger = test_case.logger + self.pkt = Packet() + self.verify = self.test_case.verify + self.pass_flag = 'passed' + self.fail_flag = 'failed' + self.current_saved_hash = '' + self.hash_records = {} + self.handle_output_methods = { + 'save_hash': self.save_hash, + 'save_or_no_hash': self.save_or_no_hash, + 'check_hash_different': self.check_hash_different, + 'check_no_hash_or_different': self.check_no_hash_or_different, + 'check_hash_same': self.check_hash_same, + 'check_no_hash': self.check_no_hash, + } + self.error_msgs = [] + + def save_hash(self, out, key='', port_id=0): + hashes, rss_distribute = self.get_hash_verify_rss_distribute(out, port_id) + if len(key) != 0: + self.hash_records[key] = hashes + self.current_saved_hash = hashes + if not rss_distribute: + error_msg = 'the packet do not distribute by rss' + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + + def save_or_no_hash(self, out, key='', port_id=0): + hashes, queues = self.get_hash_and_queues(out, port_id) + if len(hashes) == 0: + self.logger.info('There no hash value passed as expected') + if set(queues) != {'0x0'}: + error_msg = 'received queues should all be 0, but are {}'.format(queues) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + return + if len(key) != 0: + self.hash_records[key] = hashes + self.current_saved_hash = hashes + if not self.verify_rss_distribute(hashes, queues): + error_msg = 'the packet do not distribute by rss' + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + + def check_hash_different(self, out, key='', port_id=0): + hashes, rss_distribute = self.get_hash_verify_rss_distribute(out, port_id) + if len(key) == 0: + if hashes == self.current_saved_hash: + error_msg = 'hash value {} should be different ' \ + 'with current saved hash {}'.format(hashes, self.current_saved_hash) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + else: + if hashes == self.hash_records[key]: + error_msg = 'hash value {} should be different ' \ + 'with {} {}'.format(hashes, key, self.hash_records[key]) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + if not rss_distribute: + error_msg = 'the packet do not distribute by rss' + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + + def check_no_hash(self, out, port_id=0): + hashes, queues = self.get_hash_and_queues(out, port_id) + if len(hashes) != 0: + error_msg = 'hash value {} should be empty'.format(hashes) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + elif set(queues) != {'0x0'}: + error_msg = 'received queues should all be 0, but are {}'.format(queues) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + + def check_no_hash_or_different(self, out, key='', port_id=0): + hashes, queues = self.get_hash_and_queues(out, port_id) + if len(hashes) == 0: + self.logger.info('There no hash value passed as expected') + if set(queues) != {'0x0'}: + error_msg = 'received queues should all be 0, but are {}'.format(queues) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + return + if len(key) == 0: + if hashes == self.current_saved_hash: + error_msg = 'hash value {} should be different ' \ + 'with current saved hash {}'.format(hashes, self.current_saved_hash) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + else: + if hashes == self.hash_records[key]: + error_msg = 'hash value {} should be different ' \ + 'with {} {}'.format(hashes, key, self.hash_records[key]) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + + def check_hash_same(self, out, key='', port_id=0): + hashes, rss_distribute = self.get_hash_verify_rss_distribute(out, port_id) + if len(key) == 0: + if hashes != self.current_saved_hash: + error_msg = 'hash value {} should be same ' \ + 'with current saved hash {}'.format(hashes, self.current_saved_hash) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + else: + if hashes != self.hash_records[key]: + error_msg = 'hash value {} should be same ' \ + 'with {} {}'.format(hashes, key, self.hash_records[key]) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + if not rss_distribute: + error_msg = 'the packet do not distribute by rss' + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + + def check_hash_same_or_no_hash(self, out, key='', port_id=0): + hashes, rss_distribute = self.get_hash_verify_rss_distribute(out, port_id) + if len(hashes) != 0: + error_msg = 'hash value {} should be empty'.format(hashes) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + return + elif set(rss_distribute) != {'0x0'}: + error_msg = 'received queues should all be 0, but are {}'.format(rss_distribute) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + return + if len(key) == 0: + if hashes != self.current_saved_hash: + error_msg = 'hash value {} should be same ' \ + 'with current saved hash {}'.format(hashes, self.current_saved_hash) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + else: + if hashes != self.hash_records[key]: + error_msg = 'hash value {} should be same ' \ + 'with {} {}'.format(hashes, key, self.hash_records[key]) + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + if not rss_distribute: + error_msg = 'the packet do not distribute by rss' + self.logger.error(error_msg) + self.error_msgs.append(error_msg) + + def verify_rss_distribute(self, hashes, queues): + if len(hashes) != len(queues): + self.logger.warning('hash length {} != queue length {}'.format(hashes, queues)) + return False + for i in range(len(hashes)): + if int(hashes[i], 16) % self.rxq != int(queues[i], 16): + self.logger.warning('hash values {} mod total queues {} != queue {}' + .format(hashes[i], self.rxq, queues[i])) + return False + return True + + def get_hash_verify_rss_distribute(self, out, port_id=0): + hashes, queues = self.get_hash_and_queues(out, port_id) + if len(hashes) == 0: + return [], False + return hashes, self.verify_rss_distribute(hashes, queues) + + def get_hash_and_queues(self, out, port_id=0): + hash_pattern = re.compile('port\s%s/queue\s\d+:\sreceived\s\d+\spackets.+?\n.*RSS\shash=(\w+)\s-\sRSS\squeue=(\w+)' % port_id) + hash_infos = hash_pattern.findall(out) + self.logger.info('hash_infos: {}'.format(hash_infos)) + if len(hash_infos) == 0: + queue_pattern = re.compile('Receive\squeue=(\w+)') + queues = queue_pattern.findall(out) + return [], queues + # hashes = [int(hash_info[0], 16) for hash_info in hash_infos] + hashes = [hash_info[0].strip() for hash_info in hash_infos] + queues = [hash_info[1].strip() for hash_info in hash_infos] + return hashes, queues + + def send_pkt_get_output(self, pkts, port_id=0, count=1, interval=0): + self.pkt.update_pkt(pkts) + tx_port = self.tester_ifaces[0] if port_id == 0 else self.tester_ifaces[1] + self.logger.info('----------send packet-------------') + self.logger.info('{}'.format(pkts)) + self.pkt.send_pkt(crb=self.test_case.tester, tx_port=tx_port, count=count, interval=interval) + out = self.pmd_output.get_output(timeout=1) + pkt_pattern = 'port\s%d/queue\s\d+:\sreceived\s(\d+)\spackets.+?\n.*length=\d{2,}\s' % port_id + reveived_data = re.findall(pkt_pattern, out) + reveived_pkts = sum(map(int, [i[0] for i in reveived_data])) + if isinstance(pkts, list): + self.verify(reveived_pkts == len(pkts) * count, + 'expect received %d pkts, but get %d instead' % (len(pkts) * count, reveived_pkts)) + else: + self.verify(reveived_pkts == 1 * count, + 'expect received %d pkts, but get %d instead' % (1 * count, reveived_pkts)) + return out + + def send_pkt_get_hash_queues(self, pkts, port_id=0, count=1, interval=0): + output = self.send_pkt_get_output(pkts, port_id, count, interval) + hashes, queues = self.get_hash_and_queues(output, port_id) + return hashes, queues + + def create_rule(self, rule: (list, str), check_stats=True, msg=None): + p = re.compile(r"Flow rule #(\d+) created") + rule_list = list() + if isinstance(rule, list): + for i in rule: + out = self.pmd_output.execute_cmd(i, timeout=1) + if msg: + self.verify(msg in out, "failed: expect %s in %s" % (msg, out)) + m = p.search(out) + if m: + rule_list.append(m.group(1)) + else: + rule_list.append(False) + elif isinstance(rule, str): + out = self.pmd_output.execute_cmd(rule, timeout=1) + if msg: + self.verify(msg in out, "failed: expect %s in %s" % (msg, out)) + m = p.search(out) + if m: + rule_list.append(m.group(1)) + else: + rule_list.append(False) + else: + raise Exception("unsupported rule type, only accept list or str") + if check_stats: + self.verify(all(rule_list), "some rules create failed, result %s" % rule_list) + elif not check_stats: + self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list) + return rule_list + + def validate_rule(self, rule, check_stats=True, check_msg=None): + flag = 'Flow rule validated' + if isinstance(rule, str): + if 'create' in rule: + rule = rule.replace('create', 'validate') + out = self.pmd_output.execute_cmd(rule, timeout=1) + if check_stats: + self.verify(flag in out.strip(), "rule %s validated failed, result %s" % (rule, out)) + else: + if check_msg: + self.verify(flag not in out.strip() and check_msg in out.strip(), + "rule %s validate should failed with msg: %s, but result %s" % (rule, check_msg, out)) + else: + self.verify(flag not in out.strip(), "rule %s validate should failed, result %s" % (rule, out)) + elif isinstance(rule, list): + for r in rule: + if 'create' in r: + r = r.replace('create', 'validate') + out = self.pmd_output.execute_cmd(r, timeout=1) + if check_stats: + self.verify(flag in out.strip(), "rule %s validated failed, result %s" % (r, out)) + else: + if not check_msg: + self.verify(flag not in out.strip(), "rule %s validate should failed, result %s" % (r, out)) + else: + self.verify(flag not in out.strip() and check_msg in out.strip(), + "rule %s should validate failed with msg: %s, but result %s" % ( + r, check_msg, out)) + + def check_rule(self, port_id=0, stats=True, rule_list=None): + out = self.pmd_output.execute_cmd("flow list %s" % port_id) + p = re.compile(r"ID\s+Group\s+Prio\s+Attr\s+Rule") + matched = p.search(out) + if stats: + self.verify(matched, "flow rule on port %s is not existed" % port_id) + if rule_list: + p2 = re.compile("^(\d+)\s") + li = out.splitlines() + res = list(filter(bool, list(map(p2.match, li)))) + result = [i.group(1) for i in res] + self.verify(set(rule_list).issubset(set(result)), + "check rule list failed. expect %s, result %s" % (rule_list, result)) + else: + if matched: + if rule_list: + res_li = [i.split()[0].strip() for i in out.splitlines() if re.match('\d', i)] + self.verify(not set(rule_list).issubset(res_li), 'rule specified should not in result.') + else: + raise Exception('expect no rule listed') + else: + self.verify(not matched, "flow rule on port %s is existed" % port_id) + + def destroy_rule(self, port_id=0, rule_id=None): + if rule_id is None: + rule_id = 0 + if isinstance(rule_id, list): + for i in rule_id: + out = self.test_case.dut.send_command("flow destroy %s rule %s" % (port_id, i), timeout=1) + p = re.compile(r"Flow rule #(\d+) destroyed") + m = p.search(out) + self.verify(m, "flow rule %s delete failed" % rule_id) + else: + out = self.test_case.dut.send_command("flow destroy %s rule %s" % (port_id, rule_id), timeout=1) + p = re.compile(r"Flow rule #(\d+) destroyed") + m = p.search(out) + self.verify(m, "flow rule %s delete failed" % rule_id) + + def handle_actions(self, output, actions, port_id=0): + if isinstance(actions, dict) or isinstance(actions, str): + actions = [actions] + for action in actions: # [{}] + self.logger.info('action: {}\n'.format(action)) + if isinstance(action, str): + if action in self.handle_output_methods: + self.handle_output_methods[action](output, port_id=port_id) + else: + for method in action: # {'save': ''} + if method in self.handle_output_methods: + if method == 'check_no_hash': + self.check_no_hash(output, port_id=port_id) + else: + self.handle_output_methods[method](output, action[method], port_id=port_id) + + def handle_tests(self, tests, port_id=0): + out = '' + for test in tests: + if 'send_packet' in test: + out = self.send_pkt_get_output(test['send_packet'], port_id) + if 'action' in test: + self.handle_actions(out, test['action']) + + def handle_rss_case(self, case_info): + # clear hash_records before each sub case + self.hash_records = {} + self.error_msgs = [] + self.current_saved_hash = '' + sub_case_name = case_info.get('sub_casename') + self.logger.info('===================Test sub case: {}================'.format(sub_case_name)) + port_id = case_info.get('port_id') if case_info.get('port_id') else 0 + rules = case_info.get('rule') if case_info.get('rule') else [] + rule_ids = [] + if 'pre-test' in case_info: + self.logger.info('------------handle pre-test--------------') + self.handle_tests(case_info['pre-test'], port_id) + + # handle tests + tests = case_info['test'] + self.logger.info('------------handle test--------------') + # validate rule + if rules: + self.validate_rule(rule=rules, check_stats=True) + rule_ids = self.create_rule(rule=case_info['rule'], check_stats=True) + self.check_rule(port_id=port_id, rule_list=rule_ids) + self.handle_tests(tests, port_id) + + # handle post-test + if 'post-test' in case_info: + self.logger.info('------------handle post-test--------------') + self.destroy_rule(port_id=port_id, rule_id=rule_ids) + self.check_rule(port_id=port_id, stats=False) + self.handle_tests(case_info['post-test'], port_id) + if self.error_msgs: + self.verify(False, str(self.error_msgs[:500])) + + def handle_rss_distribute_cases(self, cases_info): + sub_cases_result = dict() + if not isinstance(cases_info, list): + cases_info = [cases_info] + + for case_info in cases_info: + try: + # self.handle_rss_distribute_case(case_info=case_info) + self.handle_rss_case(case_info=case_info) + except Exception as e: + self.logger.warning('sub_case %s failed: %s' % (case_info['sub_casename'], e)) + sub_cases_result[case_info['sub_casename']] = self.fail_flag + else: + self.logger.info('sub_case %s passed' % case_info['sub_casename']) + sub_cases_result[case_info['sub_casename']] = self.pass_flag + finally: + self.pmd_output.execute_cmd('flow flush 0') + pass_rate = round(list(sub_cases_result.values()).count(self.pass_flag) / len(sub_cases_result), 4) * 100 + self.logger.info(sub_cases_result) + # self.logger.info('%s pass rate is: %s' % (self.test_case.running_case, pass_rate)) + self.logger.info('pass rate is: %s' % pass_rate) + self.verify(pass_rate == 100.00, 'some subcases failed') + + @staticmethod + def get_ipv6_template_by_ipv4(template): + if isinstance(template, dict): + template = [template] + ipv6_template = [eval(str(element).replace('eth / ipv4', 'eth / ipv6') + .replace('IP()', 'IPv6()').replace('mac_ipv4', 'mac_ipv6')) + for element in template] + return ipv6_template From patchwork Tue Nov 3 08:36:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhao, HaiyangX" X-Patchwork-Id: 83517 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DC509A0521; Tue, 3 Nov 2020 09:44:38 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C6A3EC806; Tue, 3 Nov 2020 09:44:37 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 57571C802 for ; Tue, 3 Nov 2020 09:44:33 +0100 (CET) IronPort-SDR: 83sTY+CfwFdYF19e1rqszgY0vgsbk8NxAzlmRZ1PCaP7jJBqcfaWW64yTfF2fAM+XEoq8F4ZAu UZEp1lthqeDA== X-IronPort-AV: E=McAfee;i="6000,8403,9793"; a="253728069" X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="253728069" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:24 -0800 IronPort-SDR: 5WyJt5Drp8EhMmHYCgQcpq1sqT5OUaMzTlaG/ATGxqKrlro4ZQ3O6R/1cZz8RbbfPCdyowj0Ut nUf2PLjHPCTA== X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="305734259" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:21 -0800 From: Haiyang Zhao To: dts@dpdk.org, qi.fu@intel.com Cc: Xie wei Date: Tue, 3 Nov 2020 16:36:50 +0800 Message-Id: <20201103083656.16541-3-haiyangx.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201103083656.16541-1-haiyangx.zhao@intel.com> References: <20201103083656.16541-1-haiyangx.zhao@intel.com> Subject: [dts] [PATCH V4 2/8] tests/TestSuite_cvl_advanced_rss:update script X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" From: Xie wei * according to test plan, update cvl_advanced_rss script. Signed-off-by: Xie wei Tested-by: Xie,WeiX < weix.xie@intel.com> --- tests/TestSuite_cvl_advanced_rss.py | 6944 +++++++++++++++++++++++---- 1 file changed, 6066 insertions(+), 878 deletions(-) diff --git a/tests/TestSuite_cvl_advanced_rss.py b/tests/TestSuite_cvl_advanced_rss.py index 736dcc3..c9c16ec 100644 --- a/tests/TestSuite_cvl_advanced_rss.py +++ b/tests/TestSuite_cvl_advanced_rss.py @@ -29,966 +29,6154 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import json -import time + import re -import packet -import os -from scapy.contrib.gtp import * -from test_case import TestCase +import random +from packet import Packet from pmd_output import PmdOutput -from utils import BLUE, RED -from collections import OrderedDict -from packet import IncreaseIP, IncreaseIPv6 -import rte_flow_common as rfc - -out = os.popen("pip list|grep scapy ") -version_result =out.read() -p=re.compile('scapy\s+2\.3\.\d+') -m=p.search(version_result) - -if not m: - GTP_TEID= "teid" -else: - GTP_TEID= "TEID" - -tv_mac_ipv4_l3_src_only = { - "name":"tv_mac_ipv4_l3_src_only", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d")/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_src_only_frag = { - "name":"tv_mac_ipv4_l3_src_only_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d", frag=5)/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_dst_only = { - "name":"tv_mac_ipv4_l3_dst_only", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.%d", frag=5)/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_dst_only_frag = { - "name":"tv_mac_ipv4_l3_dst_only_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.%d", frag=5)/SCTP(sport=%d)/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_src_only_frag_icmp = { - "name":"tv_mac_ipv4_l3_src_only_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d", frag=5)/ICMP()/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_dst_only_frag_icmp = { - "name":"tv_mac_ipv4_l3_dst_only_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.%d", frag=5)/ICMP()/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_all = { - "name":"tv_mac_ipv4_l3_all", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d", dst="192.168.0.%d")/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_all_frag_icmp = { - "name":"tv_mac_ipv4_l3_all_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d", dst="192.168.0.%d")/ICMP()/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_all_nvgre_frag_icmp = { - "name":"tv_mac_ipv4_l3_all_nvgre_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="192.168.0.%d", dst="192.168.0.%d")/ICMP()/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_src_nvgre_frag_icmp = { - "name":"tv_mac_ipv4_l3_src_nvgre_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="192.168.0.%d", frag=5)/ICMP()/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_l3_dst_nvgre_frag_icmp = { - "name":"tv_mac_ipv4_l3_dst_nvgre_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.%d", frag=5)/ICMP()/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +from test_case import TestCase +from rte_flow_common import RssProcessing + +# toeplitz related data start +mac_ipv4_toeplitz_basic_pkt = { + 'ipv4-nonfrag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + ], + 'ipv4-frag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2", frag=6)/("X"*480)', + ], + 'ipv4-icmp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + ], + 'ipv4-tcp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ], + 'ipv4-udp-vxlan': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv4_l3_src_vxlan_frag_icmp = { - "name":"tv_mac_ipv4_l3_src_vxlan_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.%d",frag=5)/ICMP()/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_udp_toeplitz_basic_pkt = { + 'ipv4-udp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + ], + 'nvgre': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv4_l3_dst_vxlan_frag_icmp = { - "name":"tv_mac_ipv4_l3_dst_vxlan_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.%d",frag=5)/ICMP()/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_udp_toeplitz_non_basic_pkt = [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ] + +mac_ipv4_tcp_toeplitz_basic_pkt = { + 'ipv4-tcp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ], + 'nvgre': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv4_l3_all_vxlan_frag_icmp = { - "name":"tv_mac_ipv4_l3_all_vxlan_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.%d", dst="192.168.0.%d", frag=5)/ICMP()/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_tcp_toeplitz_non_basic_pkt = [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' + ] + +mac_ipv4_sctp_toeplitz_basic_pkt = { + 'ipv4-sctp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + ], + 'nvgre': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv6_l3_src = { - "name":"tv_mac_ipv6_l3_src", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="2001::%d")/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_sctp_toeplitz_non_basic_pkt = [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ] + +mac_ipv6_toeplitz_basic_pkt = { + 'ipv6-nonfrag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + ], + 'ipv6-frag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + ], + 'ipv6-icmp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + ], + 'ipv6-udp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + ], + 'nvgre': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + ], } -tv_mac_ipv6_l3_src_frag = { - "name":"tv_mac_ipv6_l3_src_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="2001::%d")/IPv6ExtHdrFragment()/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv6_toeplitz_non_basic_pkt = [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + ] + +mac_ipv6_udp_toeplitz_basic_pkt = { + 'ipv6-udp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + ], + 'ipv4_udp_vxlan_ipv6_udp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv6_l3_dst_frag = { - "name":"tv_mac_ipv6_l3_dst_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(dst="2001::%d")/IPv6ExtHdrFragment()/("X"*480)' %i for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv6_udp_toeplitz_non_basic_pkt = [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(src="192.168.0.1",dst="192.168.0.2")/UDP(sport=22,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + ] + +mac_ipv6_tcp_toeplitz_basic_pkt = { + 'ipv6-tcp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + ], + 'ipv4_tcp_vxlan_ipv6_tcp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv6_l3_all_frag_icmp = { - "name":"tv_mac_ipv6_l3_all_frag_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="2001::%d", dst="2001::%d")/IPv6ExtHdrFragment()/ICMP()/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv6_tcp_toeplitz_non_basic_pkt = [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(src="192.168.0.1",dst="192.168.0.2")/TCP(sport=22,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + ] + +mac_ipv6_sctp_toeplitz_basic_pkt = { + 'ipv6-sctp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + ], + 'ipv4_sctp_vxlan_ipv6_sctp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv4_udp_l3src_l4dst = { - "name":"tv_mac_ipv4_udp_l3src_l4dst", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d")/UDP(dport=%d)/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv6_sctp_toeplitz_non_basic_pkt = [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(src="192.168.0.1",dst="192.168.0.2")/SCTP(sport=22,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + ] + +mac_ipv4_l2src_changed = { + 'ipv4-nonfrag': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + ], + 'ipv4-frag': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2", frag=6)/("X"*480)', + ], + 'ipv4-icmp': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + ], + 'ipv4-tcp': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ], + 'ipv4-udp-vxlan': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv4_udp_all_frag = { - "name":"tv_mac_ipv4_udp_all_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d", dst="192.168.0.%d")/UDP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_l2dst_changed = { + 'ipv4-nonfrag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + ], + 'ipv4-frag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2", frag=6)/("X"*480)', + ], + 'ipv4-icmp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + ], + 'ipv4-tcp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ], + 'ipv4-udp-vxlan': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv4_udp_nvgre = { - "name":"tv_mac_ipv4_udp_nvgre", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="192.168.0.%d", dst="192.168.0.%d")/UDP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_l3src_changed = { + 'ipv4-nonfrag': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/("X"*480)', + ], + 'ipv4-frag': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2", frag=6)/("X"*480)', + ], + 'ipv4-icmp': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/ICMP()/("X"*480)', + ], + 'ipv4-tcp': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + ], + 'ipv4-udp-vxlan': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv4_udp_vxlan= { - "name":"tv_mac_ipv4_udp_vxlan", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.%d", dst="192.168.0.%d")/UDP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_l3dst_changed = { + 'ipv4-nonfrag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)', + ], + 'ipv4-frag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2", frag=6)/("X"*480)', + ], + 'ipv4-icmp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/ICMP()/("X"*480)', + ], + 'ipv4-tcp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ], + 'ipv4-udp-vxlan': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + ], } -tv_mac_ipv6_udp_all= { - "name":"tv_mac_ipv6_udp_all", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="2001::%d")/UDP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv6_l2src_changed = { + 'ipv6-nonfrag': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + ], + 'ipv6-frag': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + ], + 'ipv6-icmp': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + ], + 'ipv6-udp': [ + 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + ], } +mac_ipv6_l2dst_changed = { + 'ipv6-nonfrag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)', + ], + 'ipv6-frag': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/("X"*480)', + ], + 'ipv6-icmp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/ICMP()/("X"*480)', + ], + 'ipv6-udp': [ + 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)', + ], +} -tv_mac_ipv6_udp_all_frag= { - "name":"tv_mac_ipv6_udp_all_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="2001::%d")/IPv6ExtHdrFragment()/UDP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +#mac_ipv4 +mac_ipv4_l2_src = { + 'sub_casename': 'mac_ipv4_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-frag'], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-frag'], + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-icmp'], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-icmp'], + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + 'action': {'save_hash': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_same': 'ipv4-udp-vxlan'}, + } + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + ], + 'action': 'check_no_hash', + }, + ], } -tv_mac_ipv4_tcp_l3src_l4dst= { - "name":"tv_mac_ipv4_tcp_l3src_l4dst", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d")/TCP(dport=%d)/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_l2_dst = { + 'sub_casename': 'mac_ipv4_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-nonfrag'], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-nonfrag'], + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-frag'], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-frag'], + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-icmp'], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-icmp'], + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + 'action': {'save_hash': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_same': 'ipv4-udp-vxlan'}, + } + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], } -tv_mac_ipv4_tcp_l3dst_l4src= { - "name":"tv_mac_ipv4_tcp_l3dst_l4src", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.%d")/TCP(sport=%d)/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_l2src_l2dst = { + 'sub_casename': 'mac_ipv4_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-nonfrag'], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-nonfrag'], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/("X"*480)', + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-frag'], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-frag'], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5",frag=7)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-icmp'], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-icmp'], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + 'action': {'save_hash': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l2dst_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l2src_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=23,dport=25)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan'}, + } + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], } -tv_mac_ipv4_tcp_all= { - "name":"tv_mac_ipv4_tcp_all", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d",dst="192.168.0.%d")/TCP(sport=%d,dport=%d)/("X"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_l3_src = { + 'sub_casename': 'mac_ipv4_l3src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-nonfrag'], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-nonfrag'], + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-frag'], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-frag'], + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-icmp'], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-icmp'], + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + 'action': {'save_hash': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_same': 'ipv4-udp-vxlan'}, + } + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], } -tv_mac_ipv4_tcp_all_nvgre_frag= { - "name":"tv_mac_ipv4_tcp_all_nvgre_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="192.168.0.%d", dst="192.168.0.%d")/TCP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_l3_dst = { + 'sub_casename': 'mac_ipv4_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-nonfrag'], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-nonfrag'], + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-frag'], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-frag'], + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-icmp'], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-icmp'], + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + 'action': {'save_hash': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_same': 'ipv4-udp-vxlan'}, + } + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], } -tv_mac_ipv4_tcp_all_vxlan_frag= { - "name":"tv_mac_ipv4_tcp_all_vxlan_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.%d", dst="192.168.0.%d")/TCP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_all = { + 'sub_casename': 'mac_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-nonfrag'], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-nonfrag'], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-frag'], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-frag'], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-icmp'], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-icmp'], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + 'action': {'save_hash': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l3dst_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': mac_ipv4_l3src_changed['ipv4-udp-vxlan'], + 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan'}, + } + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], } -tv_mac_ipv6_tcp_all= { - "name":"tv_mac_ipv6_tcp_all", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="2001::%d")/TCP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +#mac ipv4_udp +mac_ipv4_udp_l2_src = { + 'sub_casename': 'mac_ipv4_udp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + ], + 'action': 'check_no_hash', + }, + ], } -tv_mac_ipv6_tcp_all_frag= { - "name":"tv_mac_ipv6_tcp_all_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="2001::%d")/IPv6ExtHdrFragment()/TCP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_udp_l2_dst = { + 'sub_casename': 'mac_ipv4_udp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + ], + 'action': 'check_no_hash', + }, + ], } -tv_mac_ipv4_sctp_l3src_l4dst= { - "name":"tv_mac_ipv4_sctp_l3src_l4dst", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d")/SCTP(dport=%d)/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_udp_l2src_l2dst = { + 'sub_casename': 'mac_ipv4_udp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + ], + 'action': 'check_no_hash', + }, + ], } -tv_mac_ipv4_sctp_all_frag= { - "name":"tv_mac_ipv4_sctp_all_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.%d",dst="192.168.0.%d", frag=4)/SCTP(sport=%d,dport=%d)/("X"*480)' %(i, i+10,i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_udp_l3_src = { + 'sub_casename': 'mac_ipv4_udp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], } -tv_mac_ipv4_sctp_nvgre= { - "name":"tv_mac_ipv4_sctp_nvgre", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="192.168.0.%d",dst="192.168.0.%d", frag=4)/SCTP(sport=%d,dport=%d)/("X"*480)' %(i, i+10,i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_udp_l3_dst = { + 'sub_casename': 'mac_ipv4_udp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], } -tv_mac_ipv4_sctp_vxlan= { - "name":"tv_mac_ipv4_sctp_vxlan", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.%d",dst="192.168.0.%d")/SCTP(sport=%d,dport=%d)/("X"*480)' %(i, i+10,i+50,i+55) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], } -tv_mac_ipv6_sctp_all= { - "name":"tv_mac_ipv6_sctp_all", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="2001::%d")/SCTP(sport=%d, dport=%d)/("X"*480)' %(i, i+10, i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} +mac_ipv4_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tv_mac_ipv4_pppod_pppoe= { - "name":"tv_mac_ipv4_pppod_pppoe", - "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src="192.168.0.%d")/UDP(sport=%d)/("X"*480)' %(i, i+10,i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_pppoe_all= { - "name":"tv_mac_ipv4_pppoe_all", - "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src="192.168.0.%d",dst="192.168.0.%d")/("X"*480)' %(i, i+10,i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_pppoe_udp= { - "name":"tv_mac_ipv4_pppoe_udp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src="192.168.0.%d")/UDP(dport=%d)/("X"*480)' %(i, i+10,i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_pppoe_tcp= { - "name":"tv_mac_ipv4_pppoe_tcp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src="192.168.0.%d")/TCP(sport=%d)/("X"*480)' %(i, i+10,i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_pppoe_sctp= { - "name":"tv_mac_ipv4_pppoe_sctp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src="192.168.0.%d")/SCTP(dport=%d)/("X"*480)' %(i, i+10,i+50) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_pppoe_icmp= { - "name":"tv_mac_ipv4_pppoe_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src="192.168.0.%d")/ICMP()/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -pkt_str=[] -pkt = ['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(GTP_TEID=0x123456)/IP(src="192.168.0.%d")/ICMP()/("X"*480)' %i for i in range(0,100)] -for i in pkt: - pkt_str.append(i.replace('GTP_TEID', GTP_TEID)) - -tv_mac_ipv4_gtpu_icmp= { - "name":"tv_mac_ipv4_gtpu_icmp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", - "scapy_str":pkt_str, - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -pkt_str=[] -pkt = ['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(GTP_TEID=0x123456)/IP(src="192.168.0.%d", frag=6)/UDP(dport=%d)/("X"*480)' %(i, i+10) for i in range(0,100)] -for i in pkt: - pkt_str.append(i.replace('GTP_TEID', GTP_TEID)) - -tv_mac_ipv4_gtpu_udp_frag= { - "name":"tv_mac_ipv4_gtpu_udp_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str":pkt_str, - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -pkt_str=[] -pkt = ['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(GTP_TEID=0x123456)/IP(src="192.168.0.%d", frag=6)/("X"*480)' %i for i in range(0,100)] -for i in pkt: - pkt_str.append(i.replace('GTP_TEID', GTP_TEID)) - -tv_mac_ipv4_gtpu_ipv4_frag= { - "name":"tv_mac_ipv4_gtpu_ipv4_frag", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", - "scapy_str":pkt_str, - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} -} - -pkt_str=[] -pkt =['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(GTP_TEID=0x123456)/IP(src="192.168.0.%d", frag=6)/TCP(dport=%d)/("X"*480)' %(i, i+10) for i in range(0,100)] -for i in pkt: - pkt_str.append(i.replace('GTP_TEID', GTP_TEID)) - -tv_mac_ipv4_gtpu_tcp= { - "name":"tv_mac_ipv4_gtpu_tcp", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", - "scapy_str":pkt_str, - "check_func": rfc.check_packets_of_each_queue, - "check_func_param": {"expect_port":0} +mac_ipv4_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], } -tvs_mac_rss_ipv4 = [ - tv_mac_ipv4_l3_src_only, - tv_mac_ipv4_l3_src_only_frag, - tv_mac_ipv4_l3_dst_only, - tv_mac_ipv4_l3_all - ] - -tvs_mac_rss_ipv4_port = [ - tv_mac_ipv4_l3_src_only_frag_icmp, - tv_mac_ipv4_l3_dst_only_frag_icmp, - tv_mac_ipv4_l3_all_frag_icmp, - tv_mac_ipv4_udp_l3src_l4dst, - tv_mac_ipv4_udp_all_frag, - tv_mac_ipv4_tcp_l3src_l4dst, - tv_mac_ipv4_tcp_l3dst_l4src, - tv_mac_ipv4_tcp_all, - tv_mac_ipv4_sctp_l3src_l4dst, - tv_mac_ipv4_sctp_all_frag - ] +mac_ipv4_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tvs_mac_rss_ipv4_nvgre = [ - tv_mac_ipv4_l3_all_nvgre_frag_icmp, - tv_mac_ipv4_l3_src_nvgre_frag_icmp, - tv_mac_ipv4_l3_dst_nvgre_frag_icmp, - tv_mac_ipv4_tcp_all_nvgre_frag, - tv_mac_ipv4_sctp_nvgre - ] -tvs_mac_rss_ipv4_vxlan =[ - tv_mac_ipv4_l3_src_vxlan_frag_icmp, - tv_mac_ipv4_l3_dst_vxlan_frag_icmp, - tv_mac_ipv4_l3_all_vxlan_frag_icmp, - tv_mac_ipv4_tcp_all_vxlan_frag, - tv_mac_ipv4_sctp_vxlan, - tv_mac_ipv4_udp_vxlan - ] +mac_ipv4_udp_l4_src = { + 'sub_casename': 'mac_ipv4_udp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tvs_mac_rss_ipv6 =[ - tv_mac_ipv6_l3_src, - tv_mac_ipv6_l3_src_frag, - tv_mac_ipv6_l3_dst_frag, - tv_mac_ipv6_l3_all_frag_icmp, - tv_mac_ipv6_udp_all, - tv_mac_ipv6_udp_all_frag, - tv_mac_ipv6_tcp_all, - tv_mac_ipv6_tcp_all_frag, - tv_mac_ipv6_sctp_all -] - -tvs_mac_rss_ipv4_pppoe =[ - tv_mac_ipv4_pppod_pppoe, - tv_mac_ipv4_pppoe_all, - tv_mac_ipv4_pppoe_tcp, - tv_mac_ipv4_pppoe_sctp, - tv_mac_ipv4_pppoe_icmp - ] -tvs_mac_rss_ipv4_gtp =[ - tv_mac_ipv4_gtpu_icmp, - tv_mac_ipv4_gtpu_udp_frag, - tv_mac_ipv4_gtpu_ipv4_frag, - tv_mac_ipv4_gtpu_tcp - ] +mac_ipv4_udp_l4_dst = { + 'sub_casename': 'mac_ipv4_udp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tv_mac_ipv4_symmetric_toeplitz = { - "name": "tv_mac_ipv4_symmetric_toeplitz", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port": 0} -} - -tv_mac_ipv4_frag_symmetric_toeplitz= { - "name":"tv_mac_ipv4_frag_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_udp_frag_symmetric_toeplitz= { - "name":"tv_mac_ipv4_udp_frag_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/UDP(sport=20,dport=22)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/UDP(sport=22,dport=20)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_udp_frag_symmetric_toeplitz_all= { - "name":"tv_mac_ipv4_udp_frag_symmetric_toeplitz_all", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only l3-dst-only l4-src-only l4-dst-only end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="1.1.4.1",dst="2.2.2.3")/UDP(sport=20,dport=22)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP(src="2.2.2.3",dst="1.1.4.1")/UDP(sport=22,dport=20)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_tcp_frag_symmetric_toeplitz= { - "name":"tv_mac_ipv4_tcp_frag_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/TCP(sport=20,dport=22)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/TCP(sport=22,dport=20)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_sctp_frag_symmetric_toeplitz= { - "name":"tv_mac_ipv4_sctp_frag_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/SCTP(sport=20,dport=22)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/SCTP(sport=22,dport=20)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_icmp_frag_symmetric_toeplitz= { - "name":"tv_mac_ipv4_icmp_frag_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/ICMP()/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/ICMP()/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_symmetric_toeplitz= { - "name":"tv_mac_ipv6_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", - "scapy_str":['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_frag_symmetric_toeplitz= { - "name":"tv_mac_ipv6_frag_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/IPv6ExtHdrFragment()/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_udp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_udp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_tcp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_tcp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/TCP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_sctp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_sctp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/SCTP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_icmp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_icmp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_nvgre_symmetric_toeplitz= { - "name":"tv_mac_ipv4_nvgre_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end ", - "scapy_str": ['Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.8",dst="192.168.0.69",frag=6)/("X"*480)', - 'Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.69",dst="192.168.0.8",frag=6)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_vxlan_symmetric_toeplitz= { - "name":"tv_mac_ipv4_vxlan_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_nvgre_udp_symmetric_toeplitz= { - "name":"tv_mac_ipv4_nvgre_udp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="8.8.8.1",dst="5.6.8.2")/UDP(sport=20,dport=22)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="5.6.8.2",dst="8.8.8.1")/UDP(sport=22,dport=20)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz= { - "name":"tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="8.8.8.1",dst="5.6.8.2")/SCTP(sport=20,dport=22)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="5.6.8.2",dst="8.8.8.1")/SCTP(sport=22,dport=20)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz= { - "name":"tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="8.8.8.1",dst="5.6.8.2")/TCP(sport=20,dport=22)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="5.6.8.2",dst="8.8.8.1")/TCP(sport=22,dport=20)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz= { - "name":"tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="8.8.8.1",dst="5.6.8.2")/ICMP()/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="5.6.8.2",dst="8.8.8.1")/ICMP()/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_nvgre_symmetric_toeplitz= { - "name":"tv_mac_ipv6_nvgre_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_nvgre_udp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_nvgre_udp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/TCP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/SCTP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_vxlan_udp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_vxlan_udp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_vxlan_symmetric_toeplitz= { - "name":"tv_mac_ipv6_vxlan_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/TCP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_vxlan_sctp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_vxlan_sctp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/SCTP(sport=30,dport=32)/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=30)/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz= { - "name":"tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz", - "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X"*480)', - 'Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)'], - "check_func": rfc.check_symmetric_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_simple_xor= { - "name":"tv_mac_ipv4_simple_xor", - "rte_flow_pattern":"flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end", - "scapy_str": ['Ether()/IP(src="1.1.4.1",dst="2.2.2.3")/("X"*480)', - 'Ether()/IP(src="2.2.2.3",dst="1.1.4.1")/("X"*480)'], - "check_func": rfc.check_simplexor_queue, - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_simple_xor= { - "name":"tv_mac_ipv6_sctp_simple_xor", - "rte_flow_pattern":"flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end", - "scapy_str": ['Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X"*480)', - 'Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)'], - "check_func": rfc.check_simplexor_queue, - "check_func_param": {"expect_port":0} -} - -tvs_mac_rss_ipv4_symmetric_toeplitz = [ - tv_mac_ipv4_symmetric_toeplitz, - tv_mac_ipv4_frag_symmetric_toeplitz, - tv_mac_ipv4_udp_frag_symmetric_toeplitz, - tv_mac_ipv4_udp_frag_symmetric_toeplitz_all, - tv_mac_ipv4_tcp_frag_symmetric_toeplitz, - tv_mac_ipv4_sctp_frag_symmetric_toeplitz, - tv_mac_ipv4_icmp_frag_symmetric_toeplitz - ] +mac_ipv4_udp_all = { + 'sub_casename': 'mac_ipv4_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0], + mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tvs_mac_rss_ipv6_symmetric_toeplitz = [ - tv_mac_ipv6_symmetric_toeplitz, - tv_mac_ipv6_frag_symmetric_toeplitz, - tv_mac_ipv6_udp_symmetric_toeplitz, - tv_mac_ipv6_tcp_symmetric_toeplitz, - tv_mac_ipv6_sctp_symmetric_toeplitz, - tv_mac_ipv6_icmp_symmetric_toeplitz - ] +#mac ipv4_tcp +mac_ipv4_tcp_l2_src = { + 'sub_casename': 'mac_ipv4_tcp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tvs_mac_rss_ipv4_symmetric_toeplitz_nvgre = [ - tv_mac_ipv4_nvgre_symmetric_toeplitz, - tv_mac_ipv4_nvgre_udp_symmetric_toeplitz, - tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz, - tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz, - tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz - ] +mac_ipv4_tcp_l2_dst = { + 'sub_casename': 'mac_ipv4_tcp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tvs_mac_rss_ipv6_symmetric_toeplitz_nvgre = [ - tv_mac_ipv6_nvgre_symmetric_toeplitz, - tv_mac_ipv6_nvgre_udp_symmetric_toeplitz, - tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz, - tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz, - tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz - ] +mac_ipv4_tcp_l2src_l2dst = { + 'sub_casename': 'mac_ipv4_tcp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tvs_mac_rss_symmetric_toeplitz_vxlan = [ - tv_mac_ipv4_vxlan_symmetric_toeplitz, - tv_mac_ipv6_vxlan_udp_symmetric_toeplitz, - tv_mac_ipv6_vxlan_symmetric_toeplitz, - tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz, - tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz - ] +mac_ipv4_tcp_l3_src = { + 'sub_casename': 'mac_ipv4_tcp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} -tvs_mac_rss_simple_xor = [ - tv_mac_ipv4_simple_xor, - tv_mac_ipv6_simple_xor - ] +mac_ipv4_tcp_l3_dst = { + 'sub_casename': 'mac_ipv4_tcp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_tcp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_tcp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_tcp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_tcp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_tcp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_tcp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_tcp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_tcp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_tcp_l4_src = { + 'sub_casename': 'mac_ipv4_tcp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.1.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_tcp_l4_dst = { + 'sub_casename': 'mac_ipv4_tcp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.1.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_tcp_all = { + 'sub_casename': 'mac_ipv4_tcp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0], + mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +#mac ipv4_sctp +mac_ipv4_sctp_l2_src = { + 'sub_casename': 'mac_ipv4_sctp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/SCTP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l2_dst = { + 'sub_casename': 'mac_ipv4_sctp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/SCTP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l2src_l2dst = { + 'sub_casename': 'mac_ipv4_sctp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/SCTP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l3_src = { + 'sub_casename': 'mac_ipv4_sctp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l3_dst = { + 'sub_casename': 'mac_ipv4_sctp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_sctp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_sctp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_sctp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_sctp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l4_src = { + 'sub_casename': 'mac_ipv4_sctp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.1.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_l4_dst = { + 'sub_casename': 'mac_ipv4_sctp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.1.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_sctp_all = { + 'sub_casename': 'mac_ipv4_sctp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0], + mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +#mac_ipv6 +mac_ipv6_l2_src = { + 'sub_casename': 'mac_ipv6_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_l2_dst = { + 'sub_casename': 'mac_ipv6_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)', + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/UDP(sport=25,dport=99)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], +} + +mac_ipv6_l2src_l2dst = { + 'sub_casename': 'mac_ipv6_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)', + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], +} + +mac_ipv6_l3_src = { + 'sub_casename': 'mac_ipv6_l3src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'], + 'action': {'save_hash': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', + 'action': {'check_hash_same': 'nvgre'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], +} + +mac_ipv6_l3_dst = { + 'sub_casename': 'mac_ipv6_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'], + 'action': {'save_hash': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', + 'action': {'check_hash_different': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_same': 'nvgre'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_toeplitz_basic_pkt['nvgre'][0], + ], + 'action': {'check_no_hash': ''}, + }, + ], +} + +mac_ipv6_all = { + 'sub_casename': 'mac_ipv6_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'], + 'action': {'save_hash': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', + 'action': {'check_hash_different': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_same': 'nvgre'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_toeplitz_basic_pkt['nvgre'][0] + ], + 'action': {'check_no_hash': ''}, + }, + ], +} + +#mac_ipv6_udp +mac_ipv6_udp_l2_src = { + 'sub_casename': 'mac_ipv6_udp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l2_dst = { + 'sub_casename': 'mac_ipv6_udp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l2src_l2dst = { + 'sub_casename': 'mac_ipv6_udp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l3_src = { + 'sub_casename': 'mac_ipv6_udp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l3_dst = { + 'sub_casename': 'mac_ipv6_udp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv6_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv6_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv6_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv6_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l4_src = { + 'sub_casename': 'mac_ipv6_udp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_l4_dst = { + 'sub_casename': 'mac_ipv6_udp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_all = { + 'sub_casename': 'mac_ipv6_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0], + mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +#mac_ipv6_tcp +mac_ipv6_tcp_l2_src = { + 'sub_casename': 'mac_ipv6_tcp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l2_dst = { + 'sub_casename': 'mac_ipv6_tcp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l2src_l2dst = { + 'sub_casename': 'mac_ipv6_tcp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l3_src = { + 'sub_casename': 'mac_ipv6_tcp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l3_dst = { + 'sub_casename': 'mac_ipv6_tcp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} +mac_ipv6_tcp_l3src_l4src = { + 'sub_casename': 'mac_ipv6_tcp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l3src_l4dst = { + 'sub_casename': 'mac_ipv6_tcp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l3dst_l4src = { + 'sub_casename': 'mac_ipv6_tcp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv6_tcp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l4_src = { + 'sub_casename': 'mac_ipv6_tcp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_l4_dst = { + 'sub_casename': 'mac_ipv6_tcp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_tcp_all = { + 'sub_casename': 'mac_ipv6_tcp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0], + mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +#mac_ipv6_sctp +mac_ipv6_sctp_l2_src = { + 'sub_casename': 'mac_ipv6_sctp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l2_dst = { + 'sub_casename': 'mac_ipv6_sctp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l2src_l2dst = { + 'sub_casename': 'mac_ipv6_sctp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l3_src = { + 'sub_casename': 'mac_ipv6_sctp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l3_dst = { + 'sub_casename': 'mac_ipv6_sctp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l3src_l4src = { + 'sub_casename': 'mac_ipv6_sctp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l3src_l4dst = { + 'sub_casename': 'mac_ipv6_sctp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l3dst_l4src = { + 'sub_casename': 'mac_ipv6_sctp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv6_sctp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l4_src = { + 'sub_casename': 'mac_ipv6_sctp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_l4_dst = { + 'sub_casename': 'mac_ipv6_sctp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_sctp_all = { + 'sub_casename': 'mac_ipv6_sctp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0], + mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0], + ], + 'action': 'check_no_hash', + }, + ], +} +# toeplitz related data end + +mac_ipv4_1 = [mac_ipv4_l2_src, mac_ipv4_l2_dst, mac_ipv4_l2src_l2dst] +mac_ipv4_2 = [mac_ipv4_l3_src, mac_ipv4_l3_dst, mac_ipv4_all] + +mac_ipv4_udp = [mac_ipv4_udp_l2_src, mac_ipv4_udp_l2_dst, mac_ipv4_udp_l2src_l2dst, + mac_ipv4_udp_l3_src, mac_ipv4_udp_l3_dst, mac_ipv4_udp_l3src_l4src, + mac_ipv4_udp_l3src_l4dst, mac_ipv4_udp_l3dst_l4src, mac_ipv4_udp_l3dst_l4dst, + mac_ipv4_udp_l4_src, mac_ipv4_udp_l4_dst, mac_ipv4_udp_all] + +mac_ipv4_tcp = [mac_ipv4_tcp_l2_src, mac_ipv4_tcp_l2_dst, mac_ipv4_tcp_l2src_l2dst, + mac_ipv4_tcp_l3_src, mac_ipv4_tcp_l3_dst, mac_ipv4_tcp_l3src_l4src, + mac_ipv4_tcp_l3src_l4dst, mac_ipv4_tcp_l3dst_l4src, mac_ipv4_tcp_l3dst_l4dst, + mac_ipv4_tcp_l4_src, mac_ipv4_tcp_l4_dst, mac_ipv4_tcp_all] + +mac_ipv4_sctp = [mac_ipv4_sctp_l2_src, mac_ipv4_sctp_l2_dst, mac_ipv4_sctp_l2src_l2dst, + mac_ipv4_sctp_l3_src, mac_ipv4_sctp_l3_dst, mac_ipv4_sctp_l3src_l4src, + mac_ipv4_sctp_l3src_l4dst, mac_ipv4_sctp_l3dst_l4src, mac_ipv4_sctp_l3dst_l4dst, + mac_ipv4_sctp_l4_src, mac_ipv4_sctp_l4_dst, mac_ipv4_sctp_all] + +mac_ipv6 = [mac_ipv6_l2_src, mac_ipv6_l2_dst, mac_ipv6_l2src_l2dst, mac_ipv6_l3_src, mac_ipv6_l3_dst, mac_ipv6_all] + +mac_ipv6_udp = [mac_ipv6_udp_l2_src, mac_ipv6_udp_l2_dst, mac_ipv6_udp_l2src_l2dst, + mac_ipv6_udp_l3_src, mac_ipv6_udp_l3_dst, mac_ipv6_udp_l3src_l4src, + mac_ipv6_udp_l3src_l4dst, mac_ipv6_udp_l3dst_l4src, mac_ipv6_udp_l3dst_l4dst, + mac_ipv6_udp_l4_src, mac_ipv6_udp_l4_dst, mac_ipv6_udp_all] + +mac_ipv6_tcp = [mac_ipv6_tcp_l2_src, mac_ipv6_tcp_l2_dst, mac_ipv6_tcp_l2src_l2dst, + mac_ipv6_tcp_l3_src, mac_ipv6_tcp_l3_dst, mac_ipv6_tcp_l3src_l4src, + mac_ipv6_tcp_l3src_l4dst, mac_ipv6_tcp_l3dst_l4src, mac_ipv6_tcp_l3dst_l4dst, + mac_ipv6_tcp_l4_src, mac_ipv6_tcp_l4_dst, mac_ipv6_tcp_all] + +mac_ipv6_sctp = [mac_ipv6_sctp_l2_src, mac_ipv6_sctp_l2_dst, mac_ipv6_sctp_l2src_l2dst, + mac_ipv6_sctp_l3_src, mac_ipv6_sctp_l3_dst, mac_ipv6_sctp_l3src_l4src, + mac_ipv6_sctp_l3src_l4dst, mac_ipv6_sctp_l3dst_l4src, mac_ipv6_sctp_l3dst_l4dst, + mac_ipv6_sctp_l4_src, mac_ipv6_sctp_l4_dst, mac_ipv6_sctp_all] + +# symmetric related data start +mac_ipv4_symmetric = { + 'sub_casename': 'mac_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': {'save_hash': 'ipv4-nonfrag-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)', + 'action': {'check_hash_different': 'ipv4-nonfrag-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'save_hash': 'ipv4-frag-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1",frag=6)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-frag-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'save_hash': 'ipv4-icmp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv4-icmp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vlan-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vlan-pre'}, + }, + ], + 'test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)', + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1",frag=6)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vlan'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vlan'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'save_hash': 'ipv6'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2928")/("X"*480)', + 'action': {'check_hash_different': 'ipv6'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': {'save_or_no_hash': 'ipv4-nonfrag-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-nonfrag-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'save_or_no_hash': 'ipv4-frag-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1",frag=6)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-frag-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'save_or_no_hash': 'ipv4-icmp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/ICMP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-icmp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_or_no_hash': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_or_no_hash': 'ipv4-udp-vlan-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp-vlan-post'}, + }, + ], +} + +mac_ipv4_udp_symmetric = { + 'sub_casename': 'mac_ipv4_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'nvgre-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'nvgre-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'nvgre-pre'}, + }, + ], + 'test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'nvgre'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'nvgre-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)', + 'action': {'check_no_hash_or_different': 'nvgre-post'}, + }, + ], +} + +mac_ipv4_tcp_symmetric = { + 'sub_casename': 'mac_ipv4_tcp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'}, + }, + ], + 'test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'}, + }, + ], +} + +mac_ipv4_sctp_symmetric = { + 'sub_casename': 'mac_ipv4_sctp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'}, + }, + ], + 'test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-sctp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-sctp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-sctp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'}, + }, + ], +} + +mac_ipv6_symmetric = { + 'sub_casename': 'mac_ipv6_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'save_hash': 'ipv6-nonfrag-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'ipv6-nonfrag-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'save_hash': 'ipv6-frag-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-frag-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'save_hash': 'ipv6-icmp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_different': 'ipv6-icmp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv6-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv6-pre'}, + }, + ], + 'test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv6'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv6'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)', + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'save_or_no_hash': 'ipv6-nonfrag-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv6-nonfrag-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'save_or_no_hash': 'ipv6-frag-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv6-frag-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'save_or_no_hash': 'ipv6-icmp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv6-icmp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_or_no_hash': 'ipv6-udp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv6-udp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'save_or_no_hash': 'ipv4-udp-vxlan-eth-ipv6-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv6-post'}, + }, + ], +} + +mac_ipv6_udp_symmetric = { + 'sub_casename': 'mac_ipv6_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-udp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'nvgre-eth-ipv6-udp-pre'}, + }, + ], + 'test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'nvgre-eth-ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'nvgre-eth-ipv6-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-udp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv6-udp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-udp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-udp-post'}, + }, + ], +} + +mac_ipv6_tcp_symmetric = { + 'sub_casename': 'mac_ipv6_tcp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-tcp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'nvgre-eth-ipv6-tcp-pre'}, + }, + ], + 'test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'nvgre-eth-ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'nvgre-eth-ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv6-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-tcp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-tcp-post'}, + }, + ], +} + +mac_ipv6_sctp_symmetric = { + 'sub_casename': 'mac_ipv6_sctp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-sctp-pre'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'nvgre-eth-ipv6-sctp-pre'}, + }, + ], + 'test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_same': 'nvgre-eth-ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv6-sctp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv6-sctp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'save_hash': 'nvgre-eth-ipv6-sctp-post'}, + }, + { + 'send_packet': 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-sctp-post'}, + }, + ], +} +# symmetric related data end + +mac_l3_address_switched = { + 'sub_casename': 'mac_l3_address_switched', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X" * 80)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X" * 80)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=22, dport=23)/("X" * 80)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X" * 80)', + 'action': 'check_hash_different', + }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X" * 80)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X" * 80)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=22, dport=23)/("X" * 80)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X" * 80)', + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X" * 80)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X" * 80)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=22, dport=23)/("X" * 80)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X" * 80)', + 'action': 'check_hash_different', + }, + ], +} -test_results = OrderedDict() +mac_global_simple_xor = [mac_l3_address_switched] + +ipv6_32bit_prefix_l3_src_only = { + 'sub_casename': 'ipv6_32bit_prefix_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre32 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe83:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:b6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-32bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-32bit'}, + }, + ], +} + +ipv6_32bit_prefix_l3_dst_only = { + 'sub_casename': 'ipv6_32bit_prefix_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre32 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe83:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:b6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-32bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81::a6bf:1ff:fe1c:806", dst="fe82::a6bf:1ff:fe1c:806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-32bit'}, + }, + ], +} + +ipv6_32bit_prefix_l3_src_dst_only = { + 'sub_casename': 'ipv6_32bit_prefix_l3_src_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre32 l3-src-only l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe83:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe83:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:b6bf:1ff:fe1c::806", dst="fe82:1:b6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-32bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-32bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81::a6bf:1ff:fe1c:806", dst="fe82::a6bf:1ff:fe1c:806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-32bit'}, + }, + ], +} + +ipv6_32bit_prefix = [ipv6_32bit_prefix_l3_src_only, ipv6_32bit_prefix_l3_dst_only, ipv6_32bit_prefix_l3_src_dst_only] + +ipv6_48bit_prefix_l3_src_only = { + 'sub_casename': 'ipv6_48bit_prefix_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre48 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:b6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:2ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-48bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-48bit'}, + }, + ], +} + +ipv6_48bit_prefix_l3_dst_only = { + 'sub_casename': 'ipv6_48bit_prefix_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre48 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe83:1:b6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:2ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-48bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-48bit'}, + }, + ], +} + +ipv6_48bit_prefix_l3_src_dst_only = { + 'sub_casename': 'ipv6_48bit_prefix_l3_src_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre48 l3-src-only l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:b6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:b6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:2ff:fe1c::806", dst="fe82:1:a6bf:2ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-48bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-48bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81::a6bf:1ff:fe1c:806", dst="fe82::a6bf:1ff:fe1c:806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-48bit'}, + }, + ], +} + +ipv6_48bit_prefix = [ipv6_48bit_prefix_l3_src_only, ipv6_48bit_prefix_l3_dst_only, ipv6_48bit_prefix_l3_src_dst_only] + +ipv6_64bit_prefix_l3_src_only = { + 'sub_casename': 'ipv6_64bit_prefix_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe83:1:a6bf:2ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:ee1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-64bit'}, + }, + ], +} + +ipv6_64bit_prefix_l3_dst_only = { + 'sub_casename': 'ipv6_64bit_prefix_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe83:1:a6bf:2ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:ee1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-64bit'}, + }, + ], +} + +ipv6_64bit_prefix_l3_src_dst_only = { + 'sub_casename': 'ipv6_64bit_prefix_l3_src_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-src-only l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'save_hash': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:2ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:2ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_hash_different': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:ee1c::806", dst="fe82:1:a6bf:1ff:ee1c::806")/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)', + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)', + 'action': {'check_no_hash_or_different': 'ipv6-64bit'}, + }, + ], +} + +ipv6_64bit_prefix = [ipv6_64bit_prefix_l3_src_only, ipv6_64bit_prefix_l3_dst_only, ipv6_64bit_prefix_l3_src_dst_only] class AdvancedRSSTest(TestCase): def set_up_all(self): """ Run at the start of each test suite. - Generic filter Prerequistites + prerequisites. """ + # Based on h/w type, choose how many ports to use self.dut_ports = self.dut.get_ports(self.nic) - # Verify that enough ports are available - self.verify(len(self.dut_ports) >= 1, "Insufficient ports") - #self.cores = "1S/8C/1T" - self.pmdout = PmdOutput(self.dut) - - localPort = self.tester.get_local_port(self.dut_ports[0]) - self.__tx_iface = self.tester.get_interface(localPort) - self.pf_interface = self.dut.ports_info[self.dut_ports[0]]['intf'] - self.pf_mac = self.dut.get_mac_address(0) - self.pf_pci = self.dut.ports_info[self.dut_ports[0]]['pci'] - self.verify(self.nic in ["columbiaville_25g","columbiaville_100g"], "%s nic not support ethertype filter" % self.nic) - + self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing") + # Verify that enough threads are available + cores = self.dut.get_core_list("1S/4C/1T") + self.verify(cores is not None, "Insufficient cores for speed testing") + self.ports_socket = self.dut.get_numa_id(self.dut_ports[0]) + self.tester_port0 = self.tester.get_local_port(self.dut_ports[0]) + self.tester_port1 = self.tester.get_local_port(self.dut_ports[1]) + self.tester_iface0 = self.tester.get_interface(self.tester_port0) + self.tester_iface1 = self.tester.get_interface(self.tester_port1) + self.pci0 = self.dut.ports_info[self.dut_ports[0]]['pci'] + self.pci1 = self.dut.ports_info[self.dut_ports[1]]['pci'] + self.pass_flag = 'passed' + self.fail_flag = 'failed' + self.pkt = Packet() + self.pmd_output = PmdOutput(self.dut) + self.package_version = self.launch_testpmd() + self.symmetric = False + self.rxq = 64 + self.rssprocess = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq) + self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rssprocess.tester_ifaces)) + self.logger.info('rssprocess.test_case: {}'.format(self.rssprocess.test_case)) def set_up(self): """ Run before each test case. """ - self.dut.kill_all() + if self.symmetric: + self.pmd_output.execute_cmd("port config all rss all") + self.pmd_output.execute_cmd("start") - def tear_down(self): - """ - Run after each test case. - """ - self.dut.kill_all() + def launch_testpmd(self, symmetric=False, package='comms'): + if symmetric: + param = "--rxq=64 --txq=64" + else: + param = "--rxq=64 --txq=64 --disable-rss --rxd=384 --txd=384" + out = self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param, + eal_param=f"-w {self.pci0}", socket=self.ports_socket) + self.symmetric = symmetric + if symmetric is True: + ''' + symmetric may be False/True/2(any other not negative value) + False: disable rss + True: enable rss and execute port config all rss + 2: enable rss and do not execute port config all rss + ''' + # Need config rss in setup + self.pmd_output.execute_cmd("port config all rss all") + self.pmd_output.execute_cmd("set fwd rxonly") + self.pmd_output.execute_cmd("set verbose 1") + res = self.pmd_output.wait_link_status_up('all', timeout=15) + self.verify(res is True, 'there have port link is down') - - def tear_down_all(self): - """ - Run after each test suite. - """ - self.dut.kill_all() + def switch_testpmd(self, symmetric=True): + if symmetric != self.symmetric: + self.pmd_output.quit() + self.launch_testpmd(symmetric=symmetric) + self.pmd_output.execute_cmd("start") + def test_mac_ipv4(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_1) + self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0") + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_2) - def create_testpmd_command(self): - """ - Create testpmd command for non-pipeline mode - """ - #Prepare testpmd EAL and parameters - all_eal_param = self.dut.create_eal_parameters(ports=[self.pf_pci]) - print(all_eal_param) #print eal parameters - command = self.dut.apps_name['test-pmd'] + all_eal_param + " -- -i --rxq=64 --txq=64" - return command - - def _rte_flow_validate_pattern(self, test_vectors, command, is_vxlan): - - out = self.dut.send_expect(command, "testpmd> ", 120) - self.logger.debug(out) #print the log - self.dut.send_expect("port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd", "testpmd> ", 15) - if is_vxlan: - self.dut.send_expect("rx_vxlan_port add 4789 0", "testpmd> ", 15) - self.dut.send_expect("set fwd rxonly", "testpmd> ", 15) - self.dut.send_expect("set verbose 1", "testpmd> ", 15) - - self.count = 1 - self.mac_count = 100 - result_dic = dict() - result_flag = 0 - for tv in test_vectors: - out = self.dut.send_expect(tv["rte_flow_pattern"], "testpmd> ", 15) #create a rule - print(out) - self.dut.send_expect("start", "testpmd> ", 15) - time.sleep(2) - tv["check_func_param"]["expect_port"] = self.dut_ports[0] - print("expect_port is", self.dut_ports[0]) - - #send a packet - if isinstance(tv["scapy_str"], list): - pkt = packet.Packet() - pkt.update_pkt(tv["scapy_str"]) - pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=self.count) - else: - for index in range(10): - pkt = Packet(pkt_str=tv["scapy_str"]) - pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=self.count) - print("packet:") - print(tv["scapy_str"]) - - if "symmetric" or "xor" in tv["name"]: - out = self.dut.get_session_output(timeout=3) - self.dut.send_expect("stop", "testpmd> ", 60) - else: - out = self.dut.send_expect("stop", "testpmd> ", 60) - result, ret_log = rfc.check_rx_tx_packets_match(out, self.mac_count) - self.verify(result is True, ret_log) - ret_result, log_msg = tv["check_func"](out) - print("%s result is: %s ,%s " % (tv["name"], ret_result, log_msg)) - - result_dic[tv["name"]] = ret_result - - print(result_dic) - - if False in result_dic.values(): - result_flag = 1 - - self.dut.send_expect("flow flush %d" % self.dut_ports[0], "testpmd> ") - self.dut.send_expect("quit", "#") - self.verify(result_flag == 0, "Some case failed") - - def test_advance_rss_ipv4(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv4, command, is_vxlan = True) - - def test_advance_rss_ipv4_port(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_port, command, is_vxlan = True) - - def test_advance_rss_ipv4_nvgre(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_nvgre, command, is_vxlan = True) - - def test_advance_rss_ipv4_vxlan(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_vxlan, command, is_vxlan = True) - - def test_advance_rss_ipv6(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv6, command, is_vxlan = True) - - def test_advance_rss_ipv4_pppoe(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_pppoe, command, is_vxlan = True) - - def test_advance_rss_ipv4_gtp(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_gtp, command, is_vxlan = True) - - def test_rss_ipv4_symetric_toeplitz(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_symmetric_toeplitz, command, is_vxlan = True) - - def test_rss_ipv6_symetric_toeplitz(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv6_symmetric_toeplitz, command, is_vxlan = True) - - def test_rss_ipv4_symetric_toeplitz_nvgre(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_symmetric_toeplitz_nvgre, command, is_vxlan = True) - - def test_rss_ipv6_symetric_toeplitz_nvgre(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_ipv6_symmetric_toeplitz_nvgre, command, is_vxlan = True) - - def test_rss_symetric_toeplitz_vxlan(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_symmetric_toeplitz_vxlan, command, is_vxlan = True) - - def test_rss_simple_xor(self): - command = self.create_testpmd_command() - self._rte_flow_validate_pattern(tvs_mac_rss_simple_xor, command, is_vxlan = True) + def test_mac_ipv4_udp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_udp) + + def test_mac_ipv4_tcp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_tcp) + + def test_mac_ipv4_sctp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_sctp) + + def test_mac_ipv6(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6) + + def test_mac_ipv6_udp(self): + self.switch_testpmd(symmetric=False) + self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0") + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_udp) + + def test_mac_ipv6_tcp(self): + self.switch_testpmd(symmetric=False) + self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0") + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_tcp) + + def test_mac_ipv6_sctp(self): + self.switch_testpmd(symmetric=False) + self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0") + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp) + + def test_symmetric_mac_ipv4(self): + self.switch_testpmd(symmetric=2) + self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0") + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_symmetric) + + def test_symmetric_mac_ipv4_udp(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_symmetric) + + def test_symmetric_mac_ipv4_tcp(self): + self.switch_testpmd(symmetric=True) + self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0") + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_tcp_symmetric) + + def test_symmetric_mac_ipv4_sctp(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_sctp_symmetric) + + def test_symmetric_mac_ipv6(self): + self.switch_testpmd(symmetric=2) + self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0") + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_symmetric) + + def test_symmetric_mac_ipv6_udp(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_symmetric) + + def test_symmetric_mac_ipv6_tcp(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_tcp_symmetric) + def test_symmetric_mac_ipv6_sctp(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp_symmetric) + + def test_32bit_ipv6_prefix(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_32bit_prefix) + + def test_48bit_ipv6_prefix(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_48bit_prefix) + + def test_64bit_ipv6_prefix(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_64bit_prefix) + + def test_global_simple_xor(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_global_simple_xor) + + def test_negative_case(self): + self.switch_testpmd(symmetric=False) + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv6 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types eth end key_len 0 queues end / end', + ] + for i in rules: + out = self.pmd_output.execute_cmd(i, timeout=1) + self.verify('ice_flow_create(): Failed to create flow' in out, "rule %s create successfully" % i) + + rules_val = [ + 'flow validate 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end', + 'flow validate 0 ingress pattern eth / ipv4 / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'flow validate 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end', + 'flow validate 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'flow validate 0 ingress pattern eth / ipv4 / end actions rss types ipv6 end key_len 0 queues end / end', + 'flow validate 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-src-only end key_len 0 queues end / end', + 'flow validate 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types eth end key_len 0 queues end / end', + ] + for i in rules_val: + out = self.pmd_output.execute_cmd(i, timeout=1) + self.verify('Invalid argument' in out, "rule %s validate successfully" % i) + + def test_multirules(self): + self.switch_testpmd(symmetric=True) + #Subcase 1: two rules with same pattern but different hash input set, not hit default profile + self.rssprocess.error_msgs = [] + self.logger.info('===================Test sub case: multirules subcase 1 ================') + rule_id_0 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end', check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + rule_id_1 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)', + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.7")/UDP(dport=45)/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1) + self.rssprocess.check_rule(port_id=0) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.9")/UDP(dport=45)/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.9")/UDP(dport=45)/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0) + self.rssprocess.handle_tests(tests, 0) + + # Subcase 2: two rules with same pattern but different hash input set, hit default profile + self.logger.info('===================Test sub case: multirules subcase 2 ================') + rule_id_0 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.8")/Raw("x"*480)', + 'action': {'check_hash_same': 'ipv4-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + rule_id_1 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/Raw("x"*480)', + 'action': {'check_hash_same': 'ipv4-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.7")/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1) + self.rssprocess.check_rule(port_id=0) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)', + 'action': {'check_no_hash': 'ipv4-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0) + + # Subcase 3: two rules, scope smaller created first, and the larger one created later + self.logger.info('===================Test sub case: multirules subcase 3 ================') + rule_id_0 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0) + tests_3 = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25, dport=45)/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.8")/UDP(sport=23, dport=44)/Raw("x"*480)', + 'action': {'check_hash_same': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests_3, 0) + rule_id_1 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.8")/UDP(sport=25, dport=99)/Raw("x"*480)', + 'action': {'check_hash_same': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1) + self.rssprocess.handle_tests(tests_3, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)', + 'action': {'check_no_hash': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + + # Subcase 4: two rules, scope larger created first, and the smaller one created later + self.logger.info('===================Test sub case: multirules subcase 4 ================') + rule_id_0 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0) + tests_4 = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.8")/UDP(sport=25, dport=99)/Raw("x"*480)', + 'action': {'check_hash_same': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests_4, 0) + rule_id_1 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)', + 'action': {'save_hash': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25, dport=45)/Raw("x"*480)', + 'action': {'check_hash_different': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.8")/UDP(sport=23, dport=44)/Raw("x"*480)', + 'action': {'check_hash_same': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1) + self.rssprocess.handle_tests(tests_4, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0) + tests = [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)', + 'action': {'check_no_hash': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.verify(not self.rssprocess.error_msgs, 'some subcases failed') + + def tear_down(self): + # destroy all flow rule on port 0 + self.dut.send_command("flow flush 0", timeout=1) + self.dut.send_command("clear port stats all", timeout=1) + self.pmd_output.execute_cmd("stop") + + def tear_down_all(self): + self.dut.kill_all() From patchwork Tue Nov 3 08:36:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Zhao, HaiyangX" X-Patchwork-Id: 83511 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4DE58A0521; Tue, 3 Nov 2020 09:38:51 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 240ADC83E; Tue, 3 Nov 2020 09:38:43 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 284F2C828 for ; Tue, 3 Nov 2020 09:38:33 +0100 (CET) IronPort-SDR: g86GPWBAhZiyvG6lWw13jXALHLxdBOKz9TuWJYxMaCCO9LV9Jq/ZWOUQGKrxHfj9ENxErC30rQ wDKnAyBYu6oQ== X-IronPort-AV: E=McAfee;i="6000,8403,9793"; a="156798018" X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="156798018" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:30 -0800 IronPort-SDR: whPljIWlnFX2vVw18ZmdFLm0/WdeQKv1k9XcCQ+7nlDVw4g7ZJGsCbePvt0xY1vrdnOFEz/Cna rCm8e8mdEa7A== X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="305734283" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:24 -0800 From: Haiyang Zhao To: dts@dpdk.org, qi.fu@intel.com Cc: Xie wei Date: Tue, 3 Nov 2020 16:36:51 +0800 Message-Id: <20201103083656.16541-4-haiyangx.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201103083656.16541-1-haiyangx.zhao@intel.com> References: <20201103083656.16541-1-haiyangx.zhao@intel.com> MIME-Version: 1.0 Subject: [dts] [PATCH V4 3/8] tests/TestSuite_cvl_advanced_iavf_rss:update script X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" From: Xie wei * according to test plan, update cvl_advanced_iavf_rss script. Signed-off-by: Xie wei Tested-by: Xie,WeiX < weix.xie@intel.com> --- tests/TestSuite_cvl_advanced_iavf_rss.py | 6305 ++++++++++++++++++---- 1 file changed, 5279 insertions(+), 1026 deletions(-) diff --git a/tests/TestSuite_cvl_advanced_iavf_rss.py b/tests/TestSuite_cvl_advanced_iavf_rss.py index 5c7da2b..7513a80 100644 --- a/tests/TestSuite_cvl_advanced_iavf_rss.py +++ b/tests/TestSuite_cvl_advanced_iavf_rss.py @@ -29,781 +29,5078 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import re -import time +import re +import random from packet import Packet from pmd_output import PmdOutput from test_case import TestCase -from config import UserConf -import rte_flow_common as rfc - -vf0_mac = "00:01:23:45:67:89" -vf1_mac = "00:11:22:33:44:55" +from rte_flow_common import RssProcessing + +vf0_mac = "00:11:22:33:44:55" + +# toeplitz related data start +mac_ipv4_toeplitz_basic_pkt = { + 'ipv4-nonfrag': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + ], + 'ipv4-frag': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2", frag=6)/("X"*480)' % vf0_mac, + ], + 'ipv4-icmp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + ], + 'ipv4-tcp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + ], + # 'ipv4-udp-vxlan': [ + # 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # ], +} + +mac_ipv4_udp_toeplitz_basic_pkt = { + 'ipv4-udp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + ], + # 'nvgre': [ + # 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # ], +} + +mac_ipv4_tcp_toeplitz_basic_pkt = { + 'ipv4-tcp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + ], + # 'nvgre': [ + # 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # ], +} + +mac_ipv4_sctp_toeplitz_basic_pkt = { + 'ipv4-sctp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + ], + # 'nvgre': [ + # 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # ], +} + +mac_ipv6_toeplitz_basic_pkt = { + 'ipv6-nonfrag': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + ], + 'ipv6-frag': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + ], + 'ipv6-icmp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + ], + 'ipv6-udp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + ], + # 'nvgre': [ + # 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # ], +} + +mac_ipv6_udp_toeplitz_basic_pkt = { + 'ipv6-udp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + ], + # 'ipv4_udp_vxlan_ipv6_udp': [ + # 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # ], +} + +mac_ipv6_tcp_toeplitz_basic_pkt = { + 'ipv6-tcp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + ], + # 'ipv4_tcp_vxlan_ipv6_tcp': [ + # 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # ], +} + +mac_ipv6_sctp_toeplitz_basic_pkt = { + 'ipv6-sctp': [ + 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + ], + # 'ipv4_sctp_vxlan_ipv6_sctp': [ + # 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # ], +} + +#mac_ipv4 +mac_ipv4_l2_src = { + 'sub_casename': 'mac_ipv4_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2", frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5",frag=7)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'][0], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + ], +} + +mac_ipv4_l2_dst = { + 'sub_casename': 'mac_ipv4_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.3", src="192.168.0.5")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.3", src="192.168.0.5",frag=7)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.3", src="192.168.0.5")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'][0], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + ], +} + +mac_ipv4_l2src_l2dst = { + 'sub_casename': 'mac_ipv4_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5",frag=7)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=23,dport=25)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'][0], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + ], +} + +mac_ipv4_l3_src = { + 'sub_casename': 'mac_ipv4_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + # 'action': {'save_hash': 'ipv4-udp-vxlan'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'][0], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + # 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + # }, + ], +} + +mac_ipv4_l3_dst = { + 'sub_casename': 'mac_ipv4_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + # 'action': {'save_hash': 'ipv4-udp-vxlan'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'][0], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + # 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + # }, + ], +} + +mac_ipv4_all = { + 'sub_casename': 'mac_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'], + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'], + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'], + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'], + # 'action': {'save_hash': 'ipv4-udp-vxlan'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480))' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0], + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0], + 'action': {'check_hash_different': 'ipv4-frag'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0], + 'action': {'check_hash_different': 'ipv4-icmp'}, + }, + { + 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-tcp'][0], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0], + # 'action': {'check_hash_different': 'ipv4-udp-vxlan'}, + # }, + ], +} -tv_iavf_mac_eth_src_only = { - "name": "iavf_mac_eth_src_only", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l2-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(src=RandMAC())/IP()/("X"*480)'], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +# mac ipv4_udp +mac_ipv4_udp_l2_src = { + 'sub_casename': 'mac_ipv4_udp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ], } -tv_iavf_mac_eth_dst_only = { - "name": "iavf_mac_eth_dst_only", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l2-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_udp_l2_dst = { + 'sub_casename': 'mac_ipv4_udp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': ' Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ], } -tv_iavf_mac_ipv4_l3_src = { - "name": "iavf_mac_ipv4_l3_src", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_l3_src_frag = { - "name": "iavf_mac_ipv4_l3_src_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),frag=5)/SCTP(sport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(), dst="192.168.0.8", frag=5)/SCTP(sport=RandShort())/("X" * 80)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_l3_dst = { - "name": "iavf_mac_ipv4_l3_dst", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(dst=RandIP())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src="192.168.0.8",dst=RandIP())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_l3_dst_frag = { - "name": "iavf_mac_ipv4_l3_dst_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(dst=RandIP(), frag=5)/SCTP(sport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_l3_src_frag_icmp = { - "name": "iavf_mac_ipv4_l3_dst_frag_icmp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(), frag=5)/ICMP()/("X" *480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_l3_dst_frag_icmp = { - "name": "iavf_mac_ipv4_l3_dst_frag_icmp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(dst=RandIP(), frag=5)/ICMP()/("X" *480)' % vf0_mac, - 'Ether(dst="%s")/IP(dst=RandIP(), src="192.168.0.5",frag=5)/ICMP()/("X" * 80)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_pay = { - "name": "iavf_mac_ipv4_pay", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/("X" *480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_pay_frag_icmp = { - "name": "iavf_mac_ipv4_pay_frag_icmp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/ICMP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_l3_src_nvgre = { - "name": "iavf_mac_ipv4_l3_src_nvgre", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP()/NVGRE()/Ether()/IP(src=RandIP())/ICMP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_l3_dst_nvgre = { - "name": "iavf_mac_ipv4_l3_dst_nvgre", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP()/NVGRE()/Ether()/IP(dst=RandIP())/ICMP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_nvgre_udp_frag = { - "name": "iavf_mac_ipv4_nvgre_udp_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP()/NVGRE()/Ether()/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_nvgre_sctp = { - "name": "iavf_mac_ipv4_nvgre_sctp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP()/NVGRE()/Ether()/IP(src=RandIP(),dst=RandIP())/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_tcp_pay = { - "name": "iavf_mac_ipv4_tcp_pay", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP()/TCP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/TCP()/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(),dst=RandIP(),frag=4)/TCP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac, - ], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_tcp_frag = { - "name": "iavf_mac_ipv4_tcp_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP()) / TCP(dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(),dst="192.168.0.2")/TCP(sport=22,dport=RandShort())/("X"*480)' % vf0_mac, - ], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_udp = { - "name": "iavf_mac_ipv4_udp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types l3-src-only l4-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP())/UDP(dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(),dst="192.168.0.2")/UDP(sport=33,dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_udp_frag = { - "name": "iavf_mac_ipv4_udp_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP()/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_sctp = { - "name": "iavf_mac_ipv4_sctp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types l3-src-only l4-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP())/SCTP(dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(dst=RandIP())/SCTP(sport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_sctp_frag = { - "name": "iavf_mac_ipv4_sctp_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP()/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_l3_src = { - "name": "iavf_mac_ipv6_l3_src", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / end actions rss types l3-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_l3_src_frag = { - "name": "iavf_mac_ipv6_l3_src_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / end actions rss types l3-src-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6())/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IPv6(src=RandIP6(),dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X" * 480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_l3_dst = { - "name": "iavf_mac_ipv6_l3_dst", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / end actions rss types l3-dst-only end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(dst=RandIP6())/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst=RandIP6())/IPv6ExtHdrFragment()/("X" * 480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_pay = { - "name": "iavf_mac_ipv6_pay", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6(),dst=RandIP6())/IPv6ExtHdrFragment()/ICMP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_sctp_pay = { - "name": "iavf_mac_ipv6_sctp_pay", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6())/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IPv6(src=RandIP6())/IPv6ExtHdrFragment()/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} -tv_iavf_mac_ipv6_udp = { - "name": "iavf_mac_ipv6_udp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6()) / UDP(sport=RandShort(), dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_udp_frag = { - "name": "iavf_mac_ipv6_udp_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6())/IPv6ExtHdrFragment()/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_tcp = { - "name": "iavf_mac_ipv6_tcp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_tcp_frag = { - "name": "iavf_mac_ipv6_tcp_frag", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6())/IPv6ExtHdrFragment()/TCP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_udp_l2src_l2dst = { + 'sub_casename': 'mac_ipv4_udp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ], } -tv_iavf_mac_cvlan_rss = { - "name": "iavf_mac_cvlan_rss", - "rte_flow_pattern": "flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end", - "scapy_str": ['Ether()/Dot1Q(vlan=RandShort())/IP(src=RandIP())/UDP()/("X"*480)', - 'Ether(type=0x9100)/Dot1Q(vlan=RandShort())/Dot1Q(vlan=56)/IP(src=RandIP())/UDP()/("X"*480)', - ], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_udp_l3_src = { + 'sub_casename': 'mac_ipv4_udp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], } -tv_iavf_mac_ipv4_pfcp_session = { - "name": "iavf_mac_ipv4_pfcp_session", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end", - "scapy_str": [ - 'Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/PFCP(Sfield=1, SEID=12)/Raw("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/PFCP(Sfield=0)/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IPv6()/UDP(sport=RandShort(),dport=RandShort())/PFCP(Sfield=1, SEID=12)/("X"*480)' % vf0_mac, +mac_ipv4_udp_l3_dst = { + 'sub_casename': 'mac_ipv4_udp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, ], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue } -tv_iavf_mac_ipv6_pfcp_session = { - "name": "iavf_mac_ipv6_pfcp_session", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6()/UDP(sport=RandShort(),dport=RandShort())/PFCP(Sfield=1, SEID=12)/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IPv6()/UDP(sport=RandShort(),dport=RandShort())/PFCP(Sfield=0)/("X"*480)' % vf0_mac, - 'Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/PFCP(Sfield=1, SEID=12)/' - '("X"*480)' % vf0_mac, - ], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], } -tv_iavf_gtpu_ipv4_up_match_dismatch = { - "name": "iavf_gtpu_ipv4_up_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / " - "end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", +mac_ipv4_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01",dst="%s")/IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255,teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34) / IP(src=RandIP()) /("X"*480)' % vf0_mac], +mac_ipv4_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01",dst="%s")/IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255,teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34) / IP(dst=RandIP()) /("X"*480)' % vf0_mac, - 'Ether(src="00:00:00:00:01:01",dst="%s")/IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255,teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34) / IP(dst=RandIP()) / UDP() /("X"*480)' % vf0_mac, - ], +mac_ipv4_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_udp_l4_src = { + 'sub_casename': 'mac_ipv4_udp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], } -tv_iavf_gtpu_ipv4_down_match_dismatch = { - "name": "iavf_gtpu_ipv4_down_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / " - "end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end", +mac_ipv4_udp_l4_dst = { + 'sub_casename': 'mac_ipv4_udp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01",dst="%s")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=RandIP())/("X"*480)' % vf0_mac], +mac_ipv4_udp_all = { + 'sub_casename': 'mac_ipv4_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'], + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01",dst="%s")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=RandIP())/("X"*480)' % vf0_mac, - ], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +# mac ipv4_tcp +mac_ipv4_tcp_l2_src = { + 'sub_casename': 'mac_ipv4_tcp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + ], } -tv_iavf_gtpu_ipv4_frag_up_match_dismatch = { - "name": "iavf_gtpu_ipv4_frag_up_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-src-only end " - "key_len 0 queues end / end ", +mac_ipv4_tcp_l2_dst = { + 'sub_casename': 'mac_ipv4_tcp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': ' Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=RandIP(),frag=6)/("X"*480)' % vf0_mac], +mac_ipv4_tcp_l2src_l2dst = { + 'sub_casename': 'mac_ipv4_tcp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=RandIP(),frag=6)/("X"*480)' % vf0_mac], +mac_ipv4_tcp_l3_src = { + 'sub_casename': 'mac_ipv4_tcp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_tcp_l3_dst = { + 'sub_casename': 'mac_ipv4_tcp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], } -tv_iavf_gtpu_ipv4_frag_down_match_dismatch = { +mac_ipv4_tcp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_tcp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "name": "iavf_gtpu_ipv4_frag_down_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end " - "key_len 0 queues end / end ", +mac_ipv4_tcp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_tcp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34) / IP(dst=RandIP(), frag=6) /("X"*480)' % vf0_mac], +mac_ipv4_tcp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_tcp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34) / IP(src=RandIP(), frag=6) /("X"*480)' % vf0_mac], +mac_ipv4_tcp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_tcp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_tcp_l4_src = { + 'sub_casename': 'mac_ipv4_tcp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.1.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], } -tv_iavf_gtpu_ipv4_udp_up_match_dismatch = { - "name": "iavf_gtpu_ipv4_udp_up_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp " - "l3-src-only end key_len 0 queues end / end", +mac_ipv4_tcp_l4_dst = { + 'sub_casename': 'mac_ipv4_tcp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.1.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=RandIP()) / UDP(dport=RandShort())/("X"*480)' % vf0_mac], +mac_ipv4_tcp_all = { + 'sub_casename': 'mac_ipv4_tcp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'], + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=RandIP()) / UDP(dport=RandShort())/("X"*480)' % vf0_mac], +# mac ipv4_sctp +mac_ipv4_sctp_l2_src = { + 'sub_casename': 'mac_ipv4_sctp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/SCTP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + ], +} - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_sctp_l2_dst = { + 'sub_casename': 'mac_ipv4_sctp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': ' Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.3", src="192.168.0.5")/SCTP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + ], } -tv_iavf_gtpu_ipv4_udp_down_match_dismatch = { +mac_ipv4_sctp_l2src_l2dst = { + 'sub_casename': 'mac_ipv4_sctp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/SCTP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + ], +} - "name": "iavf_gtpu_ipv4_udp_down_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end " - "key_len 0 queues end / end ", +mac_ipv4_sctp_l3_src = { + 'sub_casename': 'mac_ipv4_sctp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34) / IP(dst=RandIP(), frag=6) /("X"*480)' % vf0_mac], +mac_ipv4_sctp_l3_dst = { + 'sub_casename': 'mac_ipv4_sctp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34) / IP(src=RandIP(), frag=6) /("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_sctp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_sctp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], } -tv_iavf_gtpu_ipv4_tcp_up_match_dismatch = { - "name": "iavf_gtpu_ipv4_tcp_up_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp /" - " end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end", +mac_ipv4_sctp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_sctp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "match_str": ['Ether(dst="%s") / IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=RandIP())/TCP(dport=RandShort())/("X"*480)' % vf0_mac], +mac_ipv4_sctp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_sctp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / TCP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=RandIP())/TCP(dport=RandShort())/("X"*480)' % vf0_mac], +mac_ipv4_sctp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_sctp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv4_sctp_l4_src = { + 'sub_casename': 'mac_ipv4_sctp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.1.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], } -tv_iavf_gtpu_ipv4_tcp_down_match_dismatch = { +mac_ipv4_sctp_l4_dst = { + 'sub_casename': 'mac_ipv4_sctp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.1.1", src="192.168.1.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "name": "iavf_gtpu_ipv4_tcp_down_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp /" - " end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end", +mac_ipv4_sctp_all = { + 'sub_casename': 'mac_ipv4_sctp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'], + 'action': {'check_hash_different': 'ipv4-sctp'}, + }, + # { + # 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=RandIP())/TCP(dport=RandShort())/("X"*480)' % vf0_mac], +# mac_ipv6 +mac_ipv6_l2_src = { + 'sub_casename': 'mac_ipv6_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / TCP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src=RandIP())/TCP(dport=RandShort())/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv6_l2_dst = { + 'sub_casename': 'mac_ipv6_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + ], } -tv_iavf_gtpu_ipv4_icmp_up_match_dismatch = { - "name": "iavf_gtpu_ipv4_icmp_up_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-src-only end " - "key_len 0 queues end / end", +mac_ipv6_l2src_l2dst = { + 'sub_casename': 'mac_ipv6_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=RandIP())/ICMP()/("X"*480)' % vf0_mac], +mac_ipv6_l3_src = { + 'sub_casename': 'mac_ipv6_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'][0], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=RandIP())/ICMP()/("X"*480)' % vf0_mac], +mac_ipv6_l3_dst = { + 'sub_casename': 'mac_ipv6_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'][0], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv6_all = { + 'sub_casename': 'mac_ipv6_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'], + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'], + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'], + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'], + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0], + 'action': {'check_hash_different': 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0], + 'action': {'check_hash_different': 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0], + 'action': {'check_hash_different': 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'][0], + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], +} +# mac_ipv6_udp +mac_ipv6_udp_l2_src = { + 'sub_casename': 'mac_ipv6_udp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + ], } -tv_iavf_gtpu_ipv4_icmp_down_match_dismatch = { +mac_ipv6_udp_l2_dst = { + 'sub_casename': 'mac_ipv6_udp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + ], +} - "name": "iavf_gtpu_ipv4_icmp_down_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end " - "key_len 0 queues end / end", +mac_ipv6_udp_l2src_l2dst = { + 'sub_casename': 'mac_ipv6_udp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + ], +} - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=RandIP())/ICMP()/("X"*480)' % vf0_mac], +mac_ipv6_udp_l3_src = { + 'sub_casename': 'mac_ipv6_udp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], +} - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src=RandIP())/ICMP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue +mac_ipv6_udp_l3_dst = { + 'sub_casename': 'mac_ipv6_udp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], } -tv_iavf_gtpu_ipv4_sctp_up_match_dismatch = { - "name": "iavf_gtpu_ipv4_sctp_up_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types l3-src-only end " - "key_len 0 queues end / end", - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=RandIP())/SCTP()/("X"*480)' % vf0_mac], - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=RandIP())/SCTP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} +mac_ipv6_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv6_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], +} -tv_iavf_gtpu_ipv4_sctp_down_match_dismatch = { - "name": "iavf_gtpu_ipv4_sctp_down_match_dismatch", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types l3-dst-only end " - "key_len 0 queues end / end", - "match_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=RandIP())/SCTP()/("X"*480)' % vf0_mac], - "dismatch_str": ['Ether(src="00:00:00:00:01:01", dst="%s") / IP() / UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/' - 'GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src=RandIP())/SCTP()/("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_mac_ipv4_tcp_inputset = { - "name": "iavf_mac_ipv4_tcp_inputset", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end", - "pf_rule": "rx-flow-hash tcp4 sdfn", - "check_pf_rule_set": "rx-flow-hash tcp4", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "pf_scapy": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)'], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue, - "check_pf_rss_func": rfc.check_pf_rss_queue -} - -tv_mac_ipv4_udp_inputset = { - "name": "iavf_mac_ipv4_udp_inputset", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end", - "pf_rule": "rx-flow-hash udp4 sdfn", - "check_pf_rule_set": "rx-flow-hash udp4", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "pf_scapy": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)'], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue, - "check_pf_rss_func": rfc.check_pf_rss_queue -} - -tv_mac_ipv4_sctp_inputset = { - "name": "iavf_mac_ipv4_sctp_inputset", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-sctp4 end key_len 0 queues end / end", - "pf_rule": "rx-flow-hash sctp4 sdfn", - "check_pf_rule_set": "rx-flow-hash sctp4", - "scapy_str": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "pf_scapy": ['Ether(dst="%s")/IP(src=RandIP(),dst=RandIP())/SCTP()/("X"*480)'], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue, - "check_pf_rss_func": rfc.check_pf_rss_queue -} - -tv_mac_ipv6_tcp_inputset = { - "name": "iavf_mac_ipv6_tcp_inputset", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end", - "pf_rule": "rx-flow-hash tcp6 sdfn", - "check_pf_rule_set": "rx-flow-hash tcp6", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6(),dst=RandIP6())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "pf_scapy": ['Ether(dst="%s")/IPv6(src=RandIP6(),dst=RandIP6())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)'], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue, - "check_pf_rss_func": rfc.check_pf_rss_queue -} - -tv_mac_ipv6_udp_inputset = { - "name": "iavf_mac_ipv6_udp_inputset", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end", - "pf_rule": "rrx-flow-hash udp6 sdfn", - "check_pf_rule_set": "rx-flow-hash udp6", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6(),dst=RandIP6())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "pf_scapy": ['Ether(dst="%s")/IPv6(src=RandIP6(),dst=RandIP6())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)'], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue, - "check_pf_rss_func": rfc.check_pf_rss_queue -} - -tv_mac_ipv6_sctp_inputset = { - "name": "iavf_mac_ipv6_sctp_inputset", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end", - "pf_rule": "rx-flow-hash sctp6 sdfn", - "check_pf_rule_set": "rx-flow-hash sctp6", - "scapy_str": ['Ether(dst="%s")/IPv6(src=RandIP6(),dst=RandIP6())/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)' % vf0_mac], - "pf_scapy": ['Ether(dst="%s")/IPv6(src=RandIP6(),dst=RandIP6())/SCTP()/("X"*480)'], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue, - "check_pf_rss_func": rfc.check_pf_rss_queue -} - -tv_iavf_mac_ipv4_l2tpv3 = { - "name": "iavf_mac_ipv4_l2tpv3", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src="192.168.0.3", proto=115)/L2TP(hex(RandNum(16,255))[1:]+"\\x00\\x00\\x00")/Raw("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_l2tpv3 = { - "name": "iavf_mac_ipv6_l2tpv3", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", nh=115)/L2TP(hex(RandNum(16,255))[1:]+"\\x00\\x00\\x00")/Raw("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_esp = { - "name": "iavf_mac_ipv4_esp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end", - "scapy_str": ['Ether(dst="%s")/IP(src="192.168.0.3", proto=50)/ESP(spi=RandShort())/Raw("X"*480)' % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_esp = { - "name": "iavf_mac_ipv6_esp", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end", - "scapy_str": ["Ether(dst='%s')/IPv6(src='1111:2222:3333:4444:5555:6666:7777:8888', nh=50)/ESP(spi=RandShort())/Raw('X'*480)" % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv4_ah = { - "name": "iavf_mac_ipv4_ah", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end", - "scapy_str": ["Ether(dst='%s')/IP(src='192.168.0.3', proto=51)/AH(spi=RandShort())/Raw('X'*480)" % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tv_iavf_mac_ipv6_ah = { - "name": "iavf_mac_ipv6_ah", - "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end", - "scapy_str": ["Ether(dst='%s')/IPv6(src='1111:2222:3333:4444:5555:6666:7777:8888', nh=51)/AH(spi=RandShort())/Raw('X'*480)" % vf0_mac], - "send_count": 100, - "check_func": rfc.check_iavf_packets_rss_queue -} - -tvs_iavf_mac_eth_src = [ - tv_iavf_mac_eth_src_only, -] - -tvs_iavf_mac_eth_dst = [ - tv_iavf_mac_eth_dst_only, -] -tvs_iavf_mac_rss_ipv4 = [ - tv_iavf_mac_ipv4_l3_src, - tv_iavf_mac_ipv4_l3_src_frag, - tv_iavf_mac_ipv4_l3_dst, - tv_iavf_mac_ipv4_l3_dst_frag, - tv_iavf_mac_ipv4_pay, -] - -tvs_iavf_mac_rss_ipv4_icmp = [ - tv_iavf_mac_ipv4_l3_src_frag_icmp, - tv_iavf_mac_ipv4_l3_dst_frag_icmp, - tv_iavf_mac_ipv4_pay_frag_icmp -] - -tvs_iavf_mac_rss_ipv4_nvgre = [ - tv_iavf_mac_ipv4_l3_src_nvgre, - tv_iavf_mac_ipv4_l3_dst_nvgre, - tv_iavf_mac_ipv4_nvgre_udp_frag, - tv_iavf_mac_ipv4_nvgre_sctp, -] - -tvs_iavf_mac_rss_ipv4_tcp = [ - tv_iavf_mac_ipv4_tcp_pay, - tv_iavf_mac_ipv4_tcp_frag, -] - -tvs_iavf_mac_rss_ipv4_udp = [ - tv_iavf_mac_ipv4_udp, - tv_iavf_mac_ipv4_udp_frag, -] - -tvs_iavf_mac_rss_ipv4_sctp = [ - tv_iavf_mac_ipv4_sctp, - tv_iavf_mac_ipv4_sctp_frag, -] - -tvs_iavf_mac_rss_ipv6 = [ - tv_iavf_mac_ipv6_l3_src, - tv_iavf_mac_ipv6_l3_src_frag, - tv_iavf_mac_ipv6_l3_dst, - tv_iavf_mac_ipv6_pay, - # tv_iavf_mac_ipv6_sctp_pay, -] - -tvs_iavf_mac_rss_ipv6_udp = [ - tv_iavf_mac_ipv6_udp, - tv_iavf_mac_ipv6_udp_frag, -] - -tvs_iavf_mac_rss_ipv6_tcp = [ - tv_iavf_mac_ipv6_tcp, - tv_iavf_mac_ipv6_tcp_frag, -] - -tvs_iavf_mac_rss_cvlan = [ - tv_iavf_mac_cvlan_rss, -] - -tvs_iavf_mac_rss_pfcp = [ - tv_iavf_mac_ipv4_pfcp_session, - tv_iavf_mac_ipv6_pfcp_session, -] - -tvs_iavf_gtpu_ipv4 = [ - tv_iavf_gtpu_ipv4_up_match_dismatch, - tv_iavf_gtpu_ipv4_down_match_dismatch, -] - -tvs_iavf_gtpu_ipv4_frag = [ - tv_iavf_gtpu_ipv4_frag_up_match_dismatch, - tv_iavf_gtpu_ipv4_frag_down_match_dismatch, -] - -tvs_iavf_gtpu_ipv4_udp = [ - tv_iavf_gtpu_ipv4_udp_up_match_dismatch, - tv_iavf_gtpu_ipv4_udp_down_match_dismatch, -] - -tvs_iavf_gtpu_ipv4_tcp = [ - tv_iavf_gtpu_ipv4_tcp_up_match_dismatch, - tv_iavf_gtpu_ipv4_tcp_down_match_dismatch, -] - -tvs_iavf_gtpu_ipv4_icmp = [ - tv_iavf_gtpu_ipv4_icmp_up_match_dismatch, - tv_iavf_gtpu_ipv4_icmp_down_match_dismatch, -] - -tvs_iavf_gtpu_ipv4_sctp = [ - tv_iavf_gtpu_ipv4_sctp_up_match_dismatch, - tv_iavf_gtpu_ipv4_sctp_down_match_dismatch, -] - -tvs_check_pf_vf_inputset = [ - tv_mac_ipv4_tcp_inputset, - tv_mac_ipv4_udp_inputset, - tv_mac_ipv4_sctp_inputset, - tv_mac_ipv6_tcp_inputset, - tv_mac_ipv6_udp_inputset, - tv_mac_ipv6_sctp_inputset, -] - -tvs_iavf_mac_rss_ipv4_l2tpv3 = [tv_iavf_mac_ipv4_l2tpv3] - -tvs_iavf_mac_rss_ipv6_l2tpv3 = [tv_iavf_mac_ipv6_l2tpv3] - -tvs_iavf_mac_rss_ipv4_esp = [tv_iavf_mac_ipv4_esp] - -tvs_iavf_mac_rss_ipv6_esp = [tv_iavf_mac_ipv6_esp] - -tvs_iavf_mac_rss_ipv4_ah = [tv_iavf_mac_ipv4_ah] - -tvs_iavf_mac_rss_ipv6_ah = [tv_iavf_mac_ipv6_ah] +mac_ipv6_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv6_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], +} +mac_ipv6_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv6_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], +} + +mac_ipv6_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv6_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], +} + +mac_ipv6_udp_l4_src = { + 'sub_casename': 'mac_ipv6_udp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], +} + +mac_ipv6_udp_l4_dst = { + 'sub_casename': 'mac_ipv6_udp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], +} + +mac_ipv6_udp_all = { + 'sub_casename': 'mac_ipv6_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'save_hash': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'], + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + # { + # 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'], + # 'action': {'check_hash_different': 'ipv4_udp_vxlan_ipv6_udp'}, + # }, + ], +} +# mac_ipv6_tcp +mac_ipv6_tcp_l2_src = { + 'sub_casename': 'mac_ipv6_tcp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + ], +} + +mac_ipv6_tcp_l2_dst = { + 'sub_casename': 'mac_ipv6_tcp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + ], +} + +mac_ipv6_tcp_l2src_l2dst = { + 'sub_casename': 'mac_ipv6_tcp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + ], +} + +mac_ipv6_tcp_l3_src = { + 'sub_casename': 'mac_ipv6_tcp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} + +mac_ipv6_tcp_l3_dst = { + 'sub_casename': 'mac_ipv6_tcp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} + +mac_ipv6_tcp_l3src_l4src = { + 'sub_casename': 'mac_ipv6_tcp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} + +mac_ipv6_tcp_l3src_l4dst = { + 'sub_casename': 'mac_ipv6_tcp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} + +mac_ipv6_tcp_l3dst_l4src = { + 'sub_casename': 'mac_ipv6_tcp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} + +mac_ipv6_tcp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv6_tcp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} + +mac_ipv6_tcp_l4_src = { + 'sub_casename': 'mac_ipv6_tcp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} + +mac_ipv6_tcp_l4_dst = { + 'sub_casename': 'mac_ipv6_tcp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} + +mac_ipv6_tcp_all = { + 'sub_casename': 'mac_ipv6_tcp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'save_hash': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/TCP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'], + 'action': {'check_hash_different': 'ipv6-tcp'}, + }, + # { + # 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'], + # 'action': {'check_hash_different': 'ipv4_tcp_vxlan_ipv6_tcp'}, + # }, + ], +} +# mac_ipv6_sctp +mac_ipv6_sctp_l2_src = { + 'sub_casename': 'mac_ipv6_sctp_l2_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + ], +} + +mac_ipv6_sctp_l2_dst = { + 'sub_casename': 'mac_ipv6_sctp_l2_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + ], +} + +mac_ipv6_sctp_l2src_l2dst = { + 'sub_casename': 'mac_ipv6_sctp_l2src_l2dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + ], +} + +mac_ipv6_sctp_l3_src = { + 'sub_casename': 'mac_ipv6_sctp_l3_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} + +mac_ipv6_sctp_l3_dst = { + 'sub_casename': 'mac_ipv6_sctp_l3_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} + +mac_ipv6_sctp_l3src_l4src = { + 'sub_casename': 'mac_ipv6_sctp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} + +mac_ipv6_sctp_l3src_l4dst = { + 'sub_casename': 'mac_ipv6_sctp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} + +mac_ipv6_sctp_l3dst_l4src = { + 'sub_casename': 'mac_ipv6_sctp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} + +mac_ipv6_sctp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv6_sctp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} + +mac_ipv6_sctp_l4_src = { + 'sub_casename': 'mac_ipv6_sctp_l4_src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} + +mac_ipv6_sctp_l4_dst = { + 'sub_casename': 'mac_ipv6_sctp_l4_dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} + +mac_ipv6_sctp_all = { + 'sub_casename': 'mac_ipv6_sctp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'save_hash': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'], + 'action': {'check_hash_different': 'ipv6-sctp'}, + }, + # { + # 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'], + # 'action': {'check_hash_different': 'ipv4_sctp_vxlan_ipv6_sctp'}, + # }, + ], +} +# toeplitz related data end + +mac_ipv4 = [mac_ipv4_l2_src, mac_ipv4_l2_dst, mac_ipv4_l2src_l2dst, mac_ipv4_l3_src, mac_ipv4_l3_dst, mac_ipv4_all] + +mac_ipv4_udp = [mac_ipv4_udp_l2_src, mac_ipv4_udp_l2_dst, mac_ipv4_udp_l2src_l2dst, + mac_ipv4_udp_l3_src, mac_ipv4_udp_l3_dst, mac_ipv4_udp_l3src_l4src, + mac_ipv4_udp_l3src_l4dst, mac_ipv4_udp_l3dst_l4src, mac_ipv4_udp_l3dst_l4dst, + mac_ipv4_udp_l4_src, mac_ipv4_udp_l4_dst, mac_ipv4_udp_all] + +mac_ipv4_tcp = [mac_ipv4_tcp_l2_src, mac_ipv4_tcp_l2_dst, mac_ipv4_tcp_l2src_l2dst, + mac_ipv4_tcp_l3_src, mac_ipv4_tcp_l3_dst, mac_ipv4_tcp_l3src_l4src, + mac_ipv4_tcp_l3src_l4dst, mac_ipv4_tcp_l3dst_l4src, mac_ipv4_tcp_l3dst_l4dst, + mac_ipv4_tcp_l4_src, mac_ipv4_tcp_l4_dst, mac_ipv4_tcp_all] + +mac_ipv4_sctp = [mac_ipv4_sctp_l2_src, mac_ipv4_sctp_l2_dst, mac_ipv4_sctp_l2src_l2dst, + mac_ipv4_sctp_l3_src, mac_ipv4_sctp_l3_dst, mac_ipv4_sctp_l3src_l4src, + mac_ipv4_sctp_l3src_l4dst, mac_ipv4_sctp_l3dst_l4src, mac_ipv4_sctp_l3dst_l4dst, + mac_ipv4_sctp_l4_src, mac_ipv4_sctp_l4_dst, mac_ipv4_sctp_all] + +mac_ipv6 = [mac_ipv6_l2_src, mac_ipv6_l2_dst, mac_ipv6_l2src_l2dst, mac_ipv6_l3_src, mac_ipv6_l3_dst, mac_ipv6_all] + +mac_ipv6_udp = [mac_ipv6_udp_l2_src, mac_ipv6_udp_l2_dst, mac_ipv6_udp_l2src_l2dst, + mac_ipv6_udp_l3_src, mac_ipv6_udp_l3_dst, mac_ipv6_udp_l3src_l4src, + mac_ipv6_udp_l3src_l4dst, mac_ipv6_udp_l3dst_l4src, mac_ipv6_udp_l3dst_l4dst, + mac_ipv6_udp_l4_src, mac_ipv6_udp_l4_dst, mac_ipv6_udp_all] + +mac_ipv6_tcp = [mac_ipv6_tcp_l2_src, mac_ipv6_tcp_l2_dst, mac_ipv6_tcp_l2src_l2dst, + mac_ipv6_tcp_l3_src, mac_ipv6_tcp_l3_dst, mac_ipv6_tcp_l3src_l4src, + mac_ipv6_tcp_l3src_l4dst, mac_ipv6_tcp_l3dst_l4src, mac_ipv6_tcp_l3dst_l4dst, + mac_ipv6_tcp_l4_src, mac_ipv6_tcp_l4_dst, mac_ipv6_tcp_all] + +mac_ipv6_sctp = [mac_ipv6_sctp_l2_src, mac_ipv6_sctp_l2_dst, mac_ipv6_sctp_l2src_l2dst, + mac_ipv6_sctp_l3_src, mac_ipv6_sctp_l3_dst, mac_ipv6_sctp_l3src_l4src, + mac_ipv6_sctp_l3src_l4dst, mac_ipv6_sctp_l3dst_l4src, mac_ipv6_sctp_l3dst_l4dst, + mac_ipv6_sctp_l4_src, mac_ipv6_sctp_l4_dst, mac_ipv6_sctp_all] + +# symmetric related data start +mac_ipv4_symmetric = { + 'sub_casename': 'mac_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-nonfrag-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-nonfrag-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-frag-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-frag-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-icmp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-icmp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp-pre'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vlan-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vlan-pre'}, + # }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vlan'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vlan'}, + # }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2928")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-nonfrag-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-nonfrag-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-frag-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1",frag=6)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-frag-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-icmp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-icmp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vlan-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'ipv4-udp-vlan-post'}, + # }, + ], +} + +mac_ipv4_udp_symmetric = { + 'sub_casename': 'mac_ipv4_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp-pre'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre-pre'}, + # }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre'}, + # }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre'}, + # }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-udp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-udp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-udp-post'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'nvgre-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'nvgre-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'nvgre-post'}, + # }, + ], +} + +mac_ipv4_tcp_symmetric = { + 'sub_casename': 'mac_ipv4_tcp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-tcp-pre'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'}, + # }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-tcp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'}, + # }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-udp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'}, + # }, + ], +} + +mac_ipv4_sctp_symmetric = { + 'sub_casename': 'mac_ipv4_sctp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-sctp-pre'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'}, + # }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-sctp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'}, + # }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-sctp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-sctp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-sctp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv4-sctp-post'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'}, + # }, + ], +} + +mac_ipv6_symmetric = { + 'sub_casename': 'mac_ipv6_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-nonfrag-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-nonfrag-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-frag-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-frag-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-icmp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-icmp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-udp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp-pre'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv6-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv6-pre'}, + # }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-frag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-icmp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv6'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv6'}, + # }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-nonfrag'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-nonfrag-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-nonfrag-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-frag-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-frag-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-icmp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-icmp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-udp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-udp-post'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv6-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv6-post'}, + # }, + ], +} + +mac_ipv6_udp_symmetric = { + 'sub_casename': 'mac_ipv6_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-udp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp-pre'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-udp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre-eth-ipv6-udp-pre'}, + # }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-udp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre-eth-ipv6-udp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'ipv6-tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'ipv6-tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre-eth-ipv6-tcp'}, + # }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-udp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-udp-post'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-udp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-udp-post'}, + # }, + ], +} + +mac_ipv6_tcp_symmetric = { + 'sub_casename': 'mac_ipv6_tcp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-tcp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-tcp-pre'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-tcp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre-eth-ipv6-tcp-pre'}, + # }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-tcp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-tcp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-tcp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre-eth-ipv6-tcp'}, + # }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'nvgre-eth-ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'nvgre-eth-ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-tcp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-tcp-post'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-tcp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-tcp-post'}, + # }, + ], +} + +mac_ipv6_sctp_symmetric = { + 'sub_casename': 'mac_ipv6_sctp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-sctp-pre'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-sctp-pre'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-sctp-pre'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_different': 'nvgre-eth-ipv6-sctp-pre'}, + # }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-sctp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-sctp'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-sctp'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_hash_same': 'nvgre-eth-ipv6-sctp'}, + # }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-udp'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv6-sctp-post'}, + }, + { + 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-sctp-post'}, + }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'save_hash': 'nvgre-eth-ipv6-sctp-post'}, + # }, + # { + # 'send_packet': 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)' % vf0_mac, + # 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-sctp-post'}, + # }, + ], +} +# symmetric related data end + +ipv6_64bit_prefix_l3_src_only = { + 'sub_casename': 'ipv6_64bit_prefix_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'save_hash': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe83:1:a6bf:2ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:ee1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:ee1c::806", dst="fe82:1:a6bf:2ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-64bit'}, + }, + ], +} + +ipv6_64bit_prefix_l3_dst_only = { + 'sub_casename': 'ipv6_64bit_prefix_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'save_hash': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe83:1:a6bf:2ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:ee1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe83:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:ee1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-64bit'}, + }, + ], +} + +ipv6_64bit_prefix_l3_src_dst_only = { + 'sub_casename': 'ipv6_64bit_prefix_l3_src_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-src-only l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'save_hash': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:2ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:2ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_different': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:ee1c::806", dst="fe82:1:a6bf:1ff:ee1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/UDP(sport=1234, dport=5678)/Raw("x"*64)' % vf0_mac, + 'action': {'check_hash_same': 'ipv6-64bit'}, + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="%s")/IPv6(src="fe81:1:a6bf:1ff:fe1c::806", dst="fe82:1:a6bf:1ff:fe1c::806")/Raw("x"*64)' % vf0_mac, + 'action': {'check_no_hash_or_different': 'ipv6-64bit'}, + }, + ], +} + +ipv6_64bit_prefix = [ipv6_64bit_prefix_l3_src_only, ipv6_64bit_prefix_l3_dst_only, ipv6_64bit_prefix_l3_src_dst_only] class AdvancedIavfRSSTest(TestCase): def set_up_all(self): """ Run at the start of each test suite. - Generic filter Prerequistites + prerequisites. """ + # Based on h/w type, choose how many ports to use self.dut_ports = self.dut.get_ports(self.nic) - # Verify that enough ports are available - self.verify(len(self.dut_ports) >= 1, "Insufficient ports") - self.dut_session = self.dut.create_session("pf_dut") - self.pmd_session = self.dut.create_session("vf_pmd_dut") - self.pmd_output = PmdOutput(self.dut) - self.pmd_output_vf1 = PmdOutput(self.dut, self.pmd_session) - localPort = self.tester.get_local_port(self.dut_ports[0]) - self.used_dut_port = self.dut_ports[0] + self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing") + # Verify that enough threads are available + cores = self.dut.get_core_list("1S/4C/1T") + self.verify(cores is not None, "Insufficient cores for speed testing") self.ports_socket = self.dut.get_numa_id(self.dut_ports[0]) - self.tx_iface = self.tester.get_interface(localPort) + self.tester_port0 = self.tester.get_local_port(self.dut_ports[0]) + self.tester_port1 = self.tester.get_local_port(self.dut_ports[1]) + self.tester_iface0 = self.tester.get_interface(self.tester_port0) + self.tester_iface1 = self.tester.get_interface(self.tester_port1) + + self.used_dut_port = self.dut_ports[0] self.pf_interface = self.dut.ports_info[self.dut_ports[0]]['intf'] - self.pf_mac = self.dut.get_mac_address(0) - self.pf_pci = self.dut.ports_info[self.dut_ports[0]]['pci'] - self.verify(self.nic in ["columbiaville_25g", "columbiaville_100g"], "%s nic not support ethertype filter" % self.nic) - self.ddp_fdir = "/lib/firmware/updates/intel/ice/ddp/" - conf_file = 'conf/cvl_advanced_iavf_rss_package.cfg' - conf_info = UserConf(conf_file) - conf_section = conf_info.conf._sections['suite'] - self.os_pkg_name = conf_section['os_default_package_file_location'] - self.comms_pkg_name = conf_section['comms_package_file_location'] self.vf_flag = False self.create_iavf() + self.pass_flag = 'passed' + self.fail_flag = 'failed' + self.pkt = Packet() + self.pmd_output = PmdOutput(self.dut) + self.launch_testpmd() + self.rxq = 16 + self.rssprocess = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq) + self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rssprocess.tester_ifaces)) + self.logger.info('rssprocess.test_case: {}'.format(self.rssprocess.test_case)) + def set_up(self): """ Run before each test case. """ - self.dut.kill_all() - - def tear_down(self): - """ - Run after each test case. - """ - self.dut.kill_all() - if self.running_case == "test_vf_reset": - self.dut.send_expect("ip link set %s vf 0 trust off" % self.pf_interface, "# ") - self.dut.send_expect("ip link set %s vf 0 mac %s" % (self.pf_interface, vf0_mac), "# ") - elif self.running_case == "test_pf_reset": - self.dut.send_expect("ip link set %s vf 0 mac %s" % (self.pf_interface, vf0_mac), "# ") - - def tear_down_all(self): - """ - Run after each test suite. - """ - self.dut.kill_all() - self.destroy_iavf() + self.pmd_output.execute_cmd("start") def create_iavf(self): if self.vf_flag is False: self.dut.bind_interfaces_linux('ice') - self.dut.generate_sriov_vfs_by_port(self.used_dut_port, 2) + self.dut.generate_sriov_vfs_by_port(self.used_dut_port, 1) self.sriov_vfs_port = self.dut.ports_info[self.used_dut_port]['vfs_port'] self.vf_flag = True @@ -812,10 +5109,8 @@ class AdvancedIavfRSSTest(TestCase): port.bind_driver(self.drivername) self.vf0_prop = {'opt_host': self.sriov_vfs_port[0].pci} - self.vf1_prop = {'opt_host': self.sriov_vfs_port[1].pci} self.dut.send_expect("ifconfig %s up" % self.pf_interface, "# ") self.dut.send_expect("ip link set %s vf 0 mac %s" % (self.pf_interface, vf0_mac), "# ") - self.dut.send_expect("ip link set %s vf 1 mac %s" % (self.pf_interface, vf1_mac), "# ") except Exception as e: self.destroy_iavf() raise Exception(e) @@ -825,344 +5120,302 @@ class AdvancedIavfRSSTest(TestCase): self.dut.destroy_sriov_vfs_by_port(self.used_dut_port) self.vf_flag = False - def create_testpmd_command(self, port_info, pmd_param=None): - """ - Create testpmd command for non-pipeline mode - """ - port_pci = port_info['opt_host'] - param_str = " --rxq=16 --txq=16 --port-topology=loop " - if pmd_param is not None: - param_str = param_str + pmd_param - self.pmd_output.start_testpmd(cores="1S/8C/1T", param=param_str, eal_param="-w %s" % port_pci) - self.pmd_output.execute_cmd("set fwd rxonly", "testpmd> ", 15) - self.pmd_output.execute_cmd("set verbose 1", "testpmd> ", 15) - self.pmd_output.execute_cmd("port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd", "testpmd> ", 15) - - def create_testpmd2_command(self, port_info, pmd_param=None): - """ - Create testpmd command for non-pipeline mode - """ - self.pmd_session.send_expect("cd /root/dpdk/", "# ") - port_pci = port_info['opt_host'] - param_str = " --rxq=16 --txq=16 --port-topology=loop " - if pmd_param is not None: - param_str = param_str + pmd_param - self.pmd_output_vf1.start_testpmd(cores=list(range(9, 16)), param=param_str, eal_param="-w %s --file-prefix=multi_vfs_pmd" % port_pci) - self.pmd_output_vf1.execute_cmd("set fwd rxonly", "testpmd> ", 15) - self.pmd_output_vf1.execute_cmd("set verbose 1", "testpmd> ", 15) - - def _rte_flow_validate_pattern(self, test_vectors, rss_match=True): - check_result = 0 - test_results = [] - log_msg = [] - for tv in test_vectors: - self.pmd_output.execute_cmd(tv["rte_flow_pattern"]) # create a rule - time.sleep(1) - self.pkg_count = tv["send_count"] - # send packet - if "match" in tv["name"]: - for match_pkg in tv["match_str"]: - out = self._pkg_send(match_pkg, self.pkg_count) - result, case_msg = tv["check_func"](out, self.pkg_count) - print(case_msg) - test_results.append(result) - for dismatch_pkg in tv["dismatch_str"]: - out = self._pkg_send(dismatch_pkg, self.pkg_count) - result, case_msg = tv["check_func"](out, self.pkg_count, rss_match=False) - print(case_msg) - test_results.append(result) - else: - for scapy_str in tv["scapy_str"]: - out = self._pkg_send(scapy_str, self.pkg_count) - result, case_msg = tv["check_func"](out, self.pkg_count, rss_match) - print(case_msg) - test_results.append(result) - self.pmd_output.execute_cmd("flow destroy 0 rule 0") - - # check test results - if False in test_results: - log_cmd = "%s test failed" % tv["name"] - check_result = check_result + 1 - else: - log_cmd = "%s test PASS" % tv["name"] - log_msg.append(log_cmd) - - self.pmd_output.execute_cmd("flow flush 0") - self.pmd_output.quit() - print(log_msg) - self.verify(check_result == 0, "Some test case failed.") - - def _check_inputset_pattern(self, test_vectors): - for tv in test_vectors: - self.pmd_output.execute_cmd(tv["rte_flow_pattern"]) # create a rule - self.dut_session.send_expect("ethtool -N %s %s" % (self.pf_interface, tv["pf_rule"]), "# ") - self.dut_session.send_expect("ethtool -n %s %s" % (self.pf_interface, tv["check_pf_rule_set"]), "# ") - self._set_pf_queue_num() - self.pkg_count = tv["send_count"] - # send vf packet - for scapy_str in tv["scapy_str"]: - pf_rx_0 = self._get_pf_rx() - out = self._pkg_send(scapy_str, self.pkg_count) - result, case_msg = tv["check_func"](out, self.pkg_count) - self.verify(result, case_msg) - # check PF not recieve packets - pf_rx_1 = self._get_pf_rx() - pf_rx = (pf_rx_1 - pf_rx_0) - self.verify(pf_rx == 0, "pf recieve vf packets!") - - # send pf packet - for pf_scapy_str in tv["pf_scapy"]: - pf_scapy_str = pf_scapy_str % self.pf_mac - self._pkg_send(pf_scapy_str, self.pkg_count) - out = self.dut_session.send_expect("ethtool -S %s |grep rx_queue" % self.pf_interface, "# ") - result = tv["check_pf_rss_func"](out, self.pkg_count) - self.verify(result, "PF not do hash") - self.pmd_output.execute_cmd("flow destroy 0 rule 0") - - self.pmd_output.execute_cmd("flow flush 0") - self.pmd_output.quit() - - def _pkg_send(self, test_packet, send_count): - self.pmd_output.execute_cmd("start") - pkt = Packet() - for i in range(send_count): - pkt.append_pkt(test_packet) - pkt.send_pkt(self.tester, tx_port=self.tx_iface, count=1) - out = self.pmd_output.execute_cmd("stop", timeout=30) - return out - - def _set_pf_queue_num(self): - self.dut_session.send_expect("ethtool -L %s rx 10 tx 10" % self.pf_interface, "# ") - out = self.dut_session.send_expect("ethtool -l %s " % self.pf_interface, "# ") - out = out.split("Current hardware settings")[1] - pf_queue_num = re.findall(r'Combined:\s+(\d+)', out)[0] - self.verify(int(pf_queue_num) == 10, "set rx tx queue fail!") - - def _get_pf_rx(self): - out = self.dut_session.send_expect("ethtool -l %s " % self.pf_interface, "# ") - out = out.split("Current hardware settings")[1] - pf_rx = re.findall(r'RX:\s+(\d+)', out)[0] - return int(pf_rx) - - def test_iavf_mac_eth_src_rss(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_eth_src) - - def test_iavf_mac_eth_dst_rss(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_eth_dst, rss_match=False) - - def test_iavf_rss_ipv4(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4) - - def test_iavf_rss_ipv4_ICMP(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4_icmp) - - def test_iavf_rss_ipv4_NVGRE(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4_nvgre) - - def test_iavf_rss_ipv4_TCP(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4_tcp) - - def test_iavf_rss_ipv4_UDP(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4_udp) - - # def test_iavf_rss_ipv4_SCTP(self): - # self.create_testpmd_command(self.vf0_prop) - # self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4_sctp) - - def test_iavf_rss_ipv6(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv6) - - def test_iavf_rss_ipv6_UDP(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv6_udp) - - def test_iavf_rss_ipv6_TCP(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv6_tcp) - - def test_iavf_rss_CVLAN(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_cvlan) - - def test_iavf_rss_PFCP(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_pfcp) - - def test_iavf_ipv4_gtpu_updown(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_gtpu_ipv4) - - def test_iavf_ipv4_frag_gtpu_updown(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_gtpu_ipv4_frag) - - def test_iavf_ipv4_udp_gtpu_updown(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_gtpu_ipv4_udp) - - def test_iavf_ipv4_tcp_gtpu_updown(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_gtpu_ipv4_tcp) - - def test_iavf_ipv4_icmp_gtpu_updown(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_gtpu_ipv4_icmp) - - def test_iavf_rss_ipv4_l2tpv3(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4_l2tpv3) - - def test_iavf_rss_ipv6_l2tpv3(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv6_l2tpv3) - - def test_iavf_rss_ipv4_esp(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4_esp) - - def test_iavf_rss_ipv6_esp(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv6_esp) - - def test_iavf_rss_ipv4_ah(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv4_ah) - - def test_iavf_rss_ipv6_ah(self): - self.create_testpmd_command(self.vf0_prop) - self._rte_flow_validate_pattern(tvs_iavf_mac_rss_ipv6_ah) - - # def test_iavf_ipv4_sctp_gtpu_updown(self): - # self.create_testpmd_command(self.vf0_prop) - # self._rte_flow_validate_pattern(tvs_iavf_gtpu_ipv4_sctp) - - def test_iavf_error_handle(self): - self.create_testpmd_command(self.vf0_prop) - error_rule = ['flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', - 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end'] - for rule in error_rule: - out = self.pmd_output.execute_cmd(rule) - self.verify("Failed to create flow" in out, "Rule can be created") - - def test_vf_reset(self): - self.dut_session.send_expect("ip link set %s vf 0 trust on" % self.pf_interface, "# ") - self.create_testpmd_command(self.vf0_prop, pmd_param="--nb-cores=2") - flow_rule = "flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end" - self.pmd_output.execute_cmd(flow_rule) - self.pmd_output.execute_cmd("show port 0 rss-hash") - - # send packets with vf0_mac, check hash work - pkg = 'Ether(dst="%s")/IP(dst=RandIP(), frag=5)/SCTP(sport=RandShort())/("X"*480)' % vf0_mac - pkg_count = 100 - out = self._pkg_send(pkg, pkg_count) - result, log_str = rfc.check_iavf_packets_rss_queue(out, pkg_count) - self.verify(result is True, log_str) - - # reset vf - self.pmd_output.execute_cmd("port stop 0") - self.pmd_output.execute_cmd("port reset 0") - self.pmd_output.execute_cmd("port start 0") - # send packets again with vf0_mac, check not do hash - out = self._pkg_send(pkg, pkg_count) - result, log_str = rfc.check_iavf_packets_rss_queue(out, pkg_count) - self.verify(result is True, log_str) - - # reset PF and send packets check hash work - reset_mac = "00:66:77:88:99:55" - self.dut_session.send_expect("ip link set %s vf 0 mac %s" % (self.pf_interface, reset_mac), "# ") - self.pmd_output.execute_cmd("port stop 0") - self.pmd_output.execute_cmd("port reset 0") - self.pmd_output.execute_cmd("port start 0") - pkg = 'Ether(dst="%s")/IP(dst=RandIP(), frag=5)/SCTP(sport=RandShort())/("X"*480)' % reset_mac - out = self._pkg_send(pkg, pkg_count) - result, log_str = rfc.check_iavf_packets_rss_queue(out, pkg_count) - self.verify(result is True, log_str) - - def test_pf_reset(self): - param_str = " --rxq=16 --txq=16 --nb-cores=2" - self.pmd_output.start_testpmd(cores="1S/8C/1T", param=param_str, - eal_param="-w %s -w %s" % (self.vf0_prop['opt_host'], self.vf1_prop['opt_host'])) - self.pmd_output.execute_cmd("set fwd rxonly", "testpmd> ", 15) - self.pmd_output.execute_cmd("set verbose 1", "testpmd> ", 15) - vf0_rule = "flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end" - vf1_rule = "flow create 1 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end" - self.pmd_output.execute_cmd(vf0_rule) - self.pmd_output.execute_cmd(vf1_rule) - pkg_count = 100 - - # send packets with vf0_mac and vf1_mac, check hash work - pkg_vf0 = 'Ether(dst="%s")/IP(src=RandIP())/UDP(dport=RandShort())/("X"*480)' % vf0_mac - pkg_vf1 = 'Ether(dst="%s")/IP(dst=RandIP())/UDP(sport=RandShort())/("X"*480)' % vf1_mac - - out = self._pkg_send(pkg_vf0, pkg_count) - result, msg = rfc.check_iavf_packets_rss_queue(out, pkg_count) - self.verify(result is True, msg) - out = self._pkg_send(pkg_vf1, pkg_count) - result, msg = rfc.check_iavf_packets_rss_queue(out, pkg_count) - self.verify(result is True, msg) - - # PF reset and check hash not do hash - reset_mac = "00:66:77:88:99:55" - self.dut_session.send_expect("ip link set %s vf 0 mac %s" % (self.pf_interface, reset_mac), "# ") - reset_vf0 = 'Ether(dst="%s")/IP(src=RandIP())/UDP(dport=RandShort())/("X"*480)' % reset_mac - out = self._pkg_send(reset_vf0, pkg_count) - out = out.split("forward statistics for all ports")[1] - rx_num = re.findall(r'RX-packets:\s?(\d+)', out)[0] - self.verify(int(rx_num) == 0, "PF reset error") - - out = self._pkg_send(pkg_vf1, pkg_count) - result, msg = rfc.check_iavf_packets_rss_queue(out, pkg_count) - self.verify(result is True, msg) - - def test_mutil_vfs(self): - self.create_testpmd_command(self.vf0_prop, pmd_param="--nb-cores=2") - self.create_testpmd2_command(self.vf1_prop, pmd_param="--nb-cores=2") - pkg_count = 100 - - flow_rule = "flow create 0 ingress pattern eth / ipv4 / end actions rss types l3-dst-only end key_len 0 queues end / end" - self.pmd_output.execute_cmd(flow_rule) - self.pmd_output_vf1.execute_cmd(flow_rule) - # send packets and check vf0 not recieved, vf1 hash do work - pkg_vf1 = 'Ether(dst="%s")/IP(dst=RandIP(), frag=5)/SCTP(sport=RandShort())/("X"*480)' % vf1_mac - self.pmd_output_vf1.execute_cmd("start") - self._pkg_send(pkg_vf1, pkg_count) - vf1_out = self.pmd_output_vf1.execute_cmd("stop") - result, msg = rfc.check_iavf_packets_rss_queue(vf1_out, pkg_count) - self.verify(result is True, msg) - - def test_check_inputset_with_pf_and_vf(self): - self.create_testpmd_command(self.vf0_prop) - self._check_inputset_pattern(tvs_check_pf_vf_inputset) - - def test_use_os_default_package(self): - - self.replace_pkg(self.os_pkg_name) - self.create_testpmd_command(self.vf0_prop) - error_rule = ["flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end ", - "flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end ", ] - try: - for rule in error_rule: - out = self.pmd_output.execute_cmd(rule) - self.verify("Failed to create flow" in out, "Rule can be created") - except Exception as e: - raise Exception(e) - finally: - self.pmd_output.quit() - self.replace_pkg(self.comms_pkg_name) - - def replace_pkg(self, pkg): - self.dut_session.send_expect("cd %s" % self.ddp_fdir, "# ") - self.dut_session.send_expect("rm -f ice.pkg", "# ") - self.dut_session.send_expect("cp %s ice.pkg" % pkg, "# ") - self.dut_session.send_expect("rmmod ice", "# ", 15) - self.dut_session.send_expect("modprobe ice", "# ", 60) - self.vf_flag = False - self.create_iavf() + def launch_testpmd(self): + param = "--rxq=16 --txq=16" + self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param, + ports=[self.sriov_vfs_port[0].pci], socket=self.ports_socket) + self.pmd_output.execute_cmd("port config all rss all") + self.pmd_output.execute_cmd("set fwd rxonly") + self.pmd_output.execute_cmd("set verbose 1") + res = self.pmd_output.wait_link_status_up('all', timeout=15) + self.verify(res is True, 'there have port link is down') + + def test_mac_ipv4(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4) + + def test_mac_ipv4_udp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_udp) + + def test_mac_ipv4_tcp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_tcp) + + def test_mac_ipv4_sctp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_sctp) + + def test_mac_ipv6(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6) + + def test_mac_ipv6_udp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_udp) + + def test_mac_ipv6_tcp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_tcp) + + def test_mac_ipv6_sctp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp) + + def test_symmetric_mac_ipv4(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_symmetric) + + def test_symmetric_mac_ipv4_udp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_symmetric) + + def test_symmetric_mac_ipv4_tcp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_tcp_symmetric) + + def test_symmetric_mac_ipv4_sctp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_sctp_symmetric) + + def test_symmetric_mac_ipv6(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_symmetric) + + def test_symmetric_mac_ipv6_udp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_symmetric) + + def test_symmetric_mac_ipv6_tcp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_tcp_symmetric) + + def test_symmetric_mac_ipv6_sctp(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp_symmetric) + + def test_64bit_ipv6_prefix(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_64bit_prefix) + + def test_negative_case(self): + negative_rules = [ + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv6 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types eth end key_len 0 queues end / end', + ] + for i in negative_rules: + out = self.pmd_output.execute_cmd(i, timeout=1) + self.verify('iavf_flow_create(): Failed to create flow' in out, "rule %s create successfully" % i) + + def test_multirules(self): + # Subcase 1: two rules with same pattern but different hash input set, not hit default profile + self.logger.info('===================Test sub case: multirules subcase 1 ================') + self.rssprocess.error_msgs = [] + rule_id_0 = self.rssprocess.create_rule( + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end', + check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + rule_id_1 = self.rssprocess.create_rule( + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.7")/UDP(dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1) + self.rssprocess.check_rule(port_id=0) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.9")/UDP(dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.9")/UDP(dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + #self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0) + self.rssprocess.handle_tests(tests, 0) + self.dut.send_command("flow flush 0", timeout=1) + + # Subcase 2: two rules with same pattern but different hash input set, hit default profile + self.logger.info('===================Test sub case: multirules subcase 2 ================') + rule_id_0 = self.rssprocess.create_rule( + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.5")/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.8")/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + rule_id_1 = self.rssprocess.create_rule( + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.5")/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.7")/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1) + self.rssprocess.check_rule(port_id=0) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)' % vf0_mac, + 'action': {'check_no_hash': 'ipv4-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + #self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0) + self.dut.send_command("flow flush 0", timeout=1) + + # Subcase 3: two rules, scope smaller created first, and the larger one created later + self.logger.info('===================Test sub case: multirules subcase 3 ================') + rule_id_0 = self.rssprocess.create_rule( + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0) + tests_3 = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.8")/UDP(sport=23, dport=44)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests_3, 0) + rule_id_1 = self.rssprocess.create_rule( + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.8")/UDP(sport=25, dport=99)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1) + self.rssprocess.handle_tests(tests_3, 0) + #self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_no_hash': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.dut.send_command("flow flush 0", timeout=1) + + # Subcase 4: two rules, scope larger created first, and the smaller one created later + self.logger.info('===================Test sub case: multirules subcase 4 ================') + rule_id_0 = self.rssprocess.create_rule( + 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0) + tests_4 = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.8")/UDP(sport=25, dport=99)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests_4, 0) + rule_id_1 = self.rssprocess.create_rule( + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + check_stats=True) + self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'save_hash': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_different': 'ipv4-udp-pay'}, + }, + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.7",dst="192.168.0.8")/UDP(sport=23, dport=44)/Raw("x"*480)' % vf0_mac, + 'action': {'check_hash_same': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1) + self.rssprocess.handle_tests(tests_4, 0) + #self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0) + tests = [ + { + 'send_packet': 'Ether(dst="%s")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)' % vf0_mac, + 'action': {'check_no_hash': 'ipv4-udp-pay'}, + }, + ] + self.rssprocess.handle_tests(tests, 0) + self.verify(not self.rssprocess.error_msgs, 'some subcases failed') + + def tear_down(self): + # destroy all flow rule on port 0 + self.dut.send_command("flow flush 0", timeout=1) + self.dut.send_command("clear port stats all", timeout=1) + self.pmd_output.execute_cmd("stop") + + def tear_down_all(self): + self.dut.kill_all() + self.destroy_iavf() From patchwork Tue Nov 3 08:36:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhao, HaiyangX" X-Patchwork-Id: 83507 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id EF74FA0521; Tue, 3 Nov 2020 09:38:38 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6ED7FC864; Tue, 3 Nov 2020 09:38:37 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 2C0E9C83E for ; Tue, 3 Nov 2020 09:38:34 +0100 (CET) IronPort-SDR: TmcHlX9Jfpcm2PC6LIQdGoXfG23vHdpE1Hz1weewkBHMr7AiAiCSXC3CamS0phoJu5a/UN7Z5C h0FIc3mmuJhA== X-IronPort-AV: E=McAfee;i="6000,8403,9793"; a="156798023" X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="156798023" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:32 -0800 IronPort-SDR: wA8wj6RfeUxT6l4ZtDzAabGj518PSyt3TdKQNoxMG3mE+qCmSskKVAWM56Fwi1S/AB61BauSIP xHw1cOLOj6kw== X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="305734296" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:29 -0800 From: Haiyang Zhao To: dts@dpdk.org, qi.fu@intel.com Cc: sunqin Date: Tue, 3 Nov 2020 16:36:52 +0800 Message-Id: <20201103083656.16541-5-haiyangx.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201103083656.16541-1-haiyangx.zhao@intel.com> References: <20201103083656.16541-1-haiyangx.zhao@intel.com> Subject: [dts] [PATCH V4 4/8] tests/cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" From: sunqin add cvl rss pf test suite Signed-off-by: sunqin Tested-by: Sun, QinX --- ...dvanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py | 5461 +++++++++++++++++ 1 file changed, 5461 insertions(+) create mode 100644 tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py diff --git a/tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py b/tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py new file mode 100644 index 0000000..a9551b6 --- /dev/null +++ b/tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py @@ -0,0 +1,5461 @@ +# BSD LICENSE +# +# Copyright(c)2020 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import re +import random +import string +from test_case import TestCase +from pmd_output import PmdOutput +from packet import Packet +from rte_flow_common import RssProcessing +from config import UserConf + +mac_ipv4_pfcp_session_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=2)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:54")/IP(src="192.168.0.25",dst="192.168.0.23")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)'], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)'] +} + +mac_ipv4_pfcp_session = { + 'sub_casename': 'mac_ipv4_pfcp_session', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_pfcp_session_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_pfcp_session_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_pfcp_session_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['match']], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_pfcp_session_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=2)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)'], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)'] +} + +mac_ipv6_pfcp_session = { + 'sub_casename': 'mac_ipv6_pfcp_session', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_pfcp_session_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_pfcp_session_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_pfcp_session_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['match']], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_l2tpv3_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.4", proto=115)/L2TP(\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.5",dst="192.168.0.7", proto=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)' + ], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)' + ] +} + +mac_ipv4_l2tpv3 = { + 'sub_casename': 'mac_ipv4_l2tpv3', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_l2tpv3_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_l2tpv3_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_l2tpv3_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['match']], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_l2tpv3_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)' + ], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)' + ] +} + +mac_ipv6_l2tpv3 = { + 'sub_casename': 'mac_ipv6_l2tpv3', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_l2tpv3_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_l2tpv3_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_l2tpv3_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['match']], + 'action': 'check_no_hash', + } + ] +} + +mac_ipv4_esp_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=12)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7",proto=50)/ESP(spi=11)/Raw("x"*480)'], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)' + ] +} + +mac_ipv4_esp = { + 'sub_casename': 'mac_ipv4_esp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_esp_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_esp_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_esp_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [ + i for i in mac_ipv4_esp_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + i for i in mac_ipv4_esp_packets['match']], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv4_udp_esp_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)'] +} + +mac_ipv4_udp_esp = { + 'sub_casename': 'mac_ipv4_udp_esp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_esp_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_udp_esp_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_udp_esp_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [i for i in mac_ipv4_udp_esp_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + i for i in mac_ipv4_esp_packets['match']], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_esp_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=50)/ESP(spi=11)/Raw("x"*480)'], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'] +} + +mac_ipv6_esp = { + 'sub_casename': 'mac_ipv6_esp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_esp_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_esp_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_esp_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [i for i in mac_ipv6_esp_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_ipv6_esp_packets['match']], + 'action': 'check_no_hash', + }, + ], +} + +mac_ipv6_udp_esp_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)'] +} + +mac_ipv6_udp_esp = { + 'sub_casename': 'mac_ipv6_udp_esp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_esp_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_udp_esp_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_udp_esp_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_udp_esp_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv6_udp_esp_packets['match'], + 'action': 'check_no_hash', + }, + ], + +} + +mac_ipv4_ah_packets = { + 'match': ['Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=12)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.8",proto=51)/AH(spi=11)/Raw("x"*480)'], + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)'] +} + +mac_ipv4_ah = { + 'sub_casename': 'mac_ipv4_ah', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_ah_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_ah_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_ah_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [i for i in mac_ipv4_ah_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_ipv4_ah_packets['match']], + 'action': 'check_no_hash', + }, + ], + +} + +mac_ipv6_ah_packets = { + 'match': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=12)/Raw("x"*480)', + 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=51)/AH(spi=11)/Raw("x"*480)'], + 'mismatch': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'] +} + +mac_ipv6_ah = { + 'sub_casename': 'mac_ipv6_ah', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_ah_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_ah_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_ah_packets['match'][2], + 'action': 'check_hash_same', + }, + { + 'send_packet': [i for i in mac_ipv6_ah_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_ipv6_ah_packets['match']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_pay_packets = { + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'] +} + +mac_pppoe_pay_l2_src_only_packets = { + 'mac_pppoe_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/Raw("x"*80)' + ], + 'mac_pppoe_lcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)' + ], + 'mac_pppoe_ipcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)' + ], +} + +mac_pppoe_pay_l2_src_only = { + 'sub_casename': 'mac_pppoe_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][0], + 'action': {'save_hash': 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [mac_pppoe_pay_l2_src_only_packets[key][i] for i in range(0, 3) for key in + ['mac_pppoe_pay', 'mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_pay_l2_dst_only_packets = { + 'mac_pppoe_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/Raw("x"*80)'] + +} + +mac_pppoe_pay_l2_dst_only = { + 'sub_casename': 'mac_pppoe_pay_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][0], + 'action': {'save_hash': 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_pay_l2_src_only_l2_dst_only_packets = { + 'mac_pppoe_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/Raw("x"*80)' + ] + +} + +mac_pppoe_pay_l2_src_only_l2_dst_only = { + 'sub_casename': 'mac_pppoe_pay_l2_src_only_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][0], + 'action': {'save_hash': 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_pay_session_id_packets = { + 'mac_pppoe_lcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + ], + 'mac_pppoe_ipcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)' + ] + +} + +mac_pppoe_pay_session_id = { + 'sub_casename': 'mac_pppoe_pay_session_id', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [mac_pppoe_pay_session_id_packets[key][i] for i in range(0, 3) for key in + ['mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_pay_l2_src_only_session_id_packets = { + 'mac_pppoe_lcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw("x" * 80)' + ], + 'mac_pppoe_ipcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw("x" * 80)' + ] + +} + +mac_pppoe_pay_l2_src_only_session_id = { + 'sub_casename': 'mac_pppoe_pay_l2_src_only_session_id', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only pppoe end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'}, + }, + { + 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'}, + }, + + { + 'send_packet': mac_pppoe_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [mac_pppoe_pay_l2_src_only_session_id_packets[key][i] for i in range(0, 4) for key in + ['mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + + +mac_pppoe_ipv4_pay_packets = { + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=5)/Raw("x"*80)'] +} + +mac_pppoe_ipv4_pay = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/Raw("x"*80)' +] + +mac_pppoe_ipv4_frag = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5", frag=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5", frag=3)/Raw("x"*80)' +] + +mac_pppoe_ipv4_pay_src_test = [ + { + 'send_packet': mac_pppoe_ipv4_pay[0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay[1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay[2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[0], + 'action': {'save_hash': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, +] + +mac_pppoe_ipv4_pay_dst_test = [ + { + 'send_packet': mac_pppoe_ipv4_pay[0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay[2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay[1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[0], + 'action': {'save_hash': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, +] + +mac_pppoe_ipv4_pay_src_dst_test = [ + { + 'send_packet': mac_pppoe_ipv4_pay[0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay[1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay[2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay[3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay[-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[0], + 'action': {'save_hash': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_frag[-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, +] + +mac_pppoe_ipv4_pay_post_test = [ + { + 'send_packet': [item for item in mac_pppoe_ipv4_pay + mac_pppoe_ipv4_frag], + 'action': 'check_no_hash', + }, + ], + +mac_pppoe_ipv4_pay_l2_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': mac_pppoe_ipv4_pay_src_test, + 'post-test': mac_pppoe_ipv4_pay_post_test +} + +mac_pppoe_ipv4_pay_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_pay_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': mac_pppoe_ipv4_pay_dst_test, + 'post-test': mac_pppoe_ipv4_pay_post_test +} + +mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth end key_len 0 queues end / end', + 'test': mac_pppoe_ipv4_pay_src_dst_test, + 'post-test': mac_pppoe_ipv4_pay_post_test +} + + +mac_pppoe_ipv4_pay_l3_src_only_packets = { + 'mac_pppoe_ipv4_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/Raw("x"*80)', + ], + 'mac_pppoe_ipv4_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7", frag=3)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_pay_l3_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'}, + }, + + { + 'send_packet': mac_pppoe_ipv4_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'] + + mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_pay_l3_dst_only_packets = { + 'mac_pppoe_ipv4_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.3")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.7", dst="192.168.1.2")/Raw("x"*80)', + ], + 'mac_pppoe_ipv4_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.3", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.7", dst="192.168.1.2", frag=3)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_pay_l3_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_pay_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'] + + mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets = { + 'mac_pppoe_ipv4_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.7")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)' + ], + 'mac_pppoe_ipv4_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.7", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=3)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'] + + mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_packets = { + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:' + '910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=25,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l2_src_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l2_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l2_dst_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + + { + 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], + +} + +mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], + +} + +mac_pppoe_ipv4_udp_pay_l3_src_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l3_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + + { + 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l3_dst_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l3_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l4_src_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=9,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + + { + 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l4_dst_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + + { + 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.9")/UDP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)' + + ] +} + +mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=19,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_udp_pay'][4], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_udp_pay'][5], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_packets = { + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/' + 'IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=25,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l2_src_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l2_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l3_src_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l3_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l3_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l4_src_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.7")/TCP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.7")/TCP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.9")/TCP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=9,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=9,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=90)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=90)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.5")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)' + + ] +} + +mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_tcp_pay'][4], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_tcp_pay'][5], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv4_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_pay_packets = { + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_pay_l2_src_only_packets = { + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)', + ] +} + +mac_pppoe_ipv6_pay_l2_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_pay_l2_dst_only_packets = { + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)' + ] + +} + +mac_pppoe_ipv6_pay_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_pay_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][2], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets = { + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)' + + ] +} + +mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_pay_l3_src_only_packets = { + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)', + ], + 'mac_pppoe_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)', + + ] +} + +mac_pppoe_ipv6_pay_l3_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_pay_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_pay_l3_dst_only_packets = { + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)' + + ] +} + +mac_pppoe_ipv6_pay_l3_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_pay_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets = { + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)' + + ] +} + +mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'}, + }, + + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_packets = { + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l2_src_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l2_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l2_dst_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l3_src_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l3_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l3_dst_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=99)/Raw("x"*80)' + + ] +} + +mac_pppoe_ipv6_udp_pay_l3_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l4_src_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l4_dst_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=19,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_udp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_udp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_udp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_udp_pay'][4], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_udp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_udp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_packets = { + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l2_src_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l2_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], + +} + +mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)', + ] +} + +mac_pppoe_ipv6_tcp_pay_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l3_src_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l3_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l3_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l4_src_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], + +} + +mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=19,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)' + ] +} + +mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_tcp_pay'][2], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_tcp_pay'][4], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_tcp_pay'][5], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_tcp_pay'][-1], + 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[ + 'mac_pppoe_ipv6_tcp_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv6_tcp_pay = [ + mac_pppoe_ipv6_tcp_pay_l2_src_only, + mac_pppoe_ipv6_tcp_pay_l2_dst_only, + mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only, + mac_pppoe_ipv6_tcp_pay_l3_src_only, + mac_pppoe_ipv6_tcp_pay_l3_dst_only, + mac_pppoe_ipv6_tcp_pay_l4_src_only, + mac_pppoe_ipv6_tcp_pay_l4_dst_only, + mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only, + mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only, + mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only, + mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only, + mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only +] + +mac_pppoe_ipv6_udp_pay = [ + mac_pppoe_ipv6_udp_pay_l2_src_only, + mac_pppoe_ipv6_udp_pay_l2_dst_only, + mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only, + mac_pppoe_ipv6_udp_pay_l3_src_only, + mac_pppoe_ipv6_udp_pay_l3_dst_only, + mac_pppoe_ipv6_udp_pay_l4_src_only, + mac_pppoe_ipv6_udp_pay_l4_dst_only, + mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only, + mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only, + mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only, + mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only, + mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only + +] + +mac_pppoe_ipv6_pay = [ + mac_pppoe_ipv6_pay_l2_src_only, + mac_pppoe_ipv6_pay_l2_dst_only, + mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only, + mac_pppoe_ipv6_pay_l3_src_only, + mac_pppoe_ipv6_pay_l3_dst_only, + mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only +] + +mac_pppoe_ipv4_tcp_pay = [ + mac_pppoe_ipv4_tcp_pay_l2_src_only, + mac_pppoe_ipv4_tcp_pay_l2_dst_only, + mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only, + mac_pppoe_ipv4_tcp_pay_l3_src_only, + mac_pppoe_ipv4_tcp_pay_l3_dst_only, + mac_pppoe_ipv4_tcp_pay_l4_src_only, + mac_pppoe_ipv4_tcp_pay_l4_dst_only, + mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only, + mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only, + mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only, + mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only, + mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only +] + +mac_pppoe_ipv4_udp_pay = [ + mac_pppoe_ipv4_udp_pay_l2_src_only, + mac_pppoe_ipv4_udp_pay_l2_dst_only, + mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only, + mac_pppoe_ipv4_udp_pay_l3_src_only, + mac_pppoe_ipv4_udp_pay_l3_dst_only, + mac_pppoe_ipv4_udp_pay_l4_src_only, + mac_pppoe_ipv4_udp_pay_l4_dst_only, + mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only, + mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only, + mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only, + mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only, + mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only, ] + +mac_pppoe_ipv4_pay_cases = [ + mac_pppoe_ipv4_pay_l2_src_only, + mac_pppoe_ipv4_pay_l2_dst_only, + mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only, + mac_pppoe_ipv4_pay_l3_src_only, + mac_pppoe_ipv4_pay_l3_dst_only, + mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only +] + +mac_pppoe_pay = [ + mac_pppoe_pay_l2_src_only, + mac_pppoe_pay_l2_dst_only, + mac_pppoe_pay_l2_src_only_l2_dst_only, + mac_pppoe_pay_session_id, + mac_pppoe_pay_l2_src_only_session_id +] + +mac_pppoe_ipv6_tcp_pay_symmetric_packets = { + 'match': { + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=23,dport=25)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)' + ], + }, + 'mismatch': { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=25)/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)', + ], + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)' + ], + 'mac_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)' + ] + } + +} + +mac_pppoe_ipv6_tcp_pay_symmetric = { + 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][1], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][2], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][3], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_ipv6_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_ipv6_tcp_pay'][1:], + 'action': {'check_hash_different': 'mac_ipv6_tcp_pay_mismatch'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_match_post'}, + }, + { + 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][3], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_match_post'}, + }, + ], +} + +mac_pppoe_ipv6_udp_pay_symmetric_packets = { + 'match': { + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=23,dport=25)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)' + ] + }, + 'mismatch': { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)', + ], + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)' + ], + 'mac_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)' + ] + } +} + +mac_pppoe_ipv6_udp_pay_symmetric = { + 'sub_casename': 'mac_pppoe_ipv6_udp_pay_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][1], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][2], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][3], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_ipv6_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_ipv6_udp_pay'][1:], + 'action': {'check_hash_different': 'mac_ipv6_udp_pay_mismatch'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_match_post'}, + }, + { + 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_match_post'}, + }, + ], +} + +mac_pppoe_ipv6_pay_symmetric_packets = { + 'match': { + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)' + ] + }, + 'mismatch': { + 'mac_pppoe_ipv4_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + ], + 'mac_pppoe_ipv4_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1", frag=5)/Raw("x"*80)' + ], + 'mac_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)' + ], + 'mac_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)' + ] + } +} + +mac_pppoe_ipv6_pay_symmetric = { + 'sub_casename': 'mac_pppoe_ipv6_pay_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'][1:], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_frag_match'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_frag'][1:], + 'action': {'check_hash_same': 'mac_pppoe_ipv6_frag_match'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_frag_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_frag'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_pay'][0], + 'action': {'save_hash': 'mac_ipv6_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_pay'][1:], + 'action': {'check_hash_different': 'mac_ipv6_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_frag'][0], + 'action': {'save_hash': 'mac_ipv6_frag_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_frag'][1:], + 'action': {'check_hash_different': 'mac_ipv6_frag_mismatch'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_pay_symmetric_packets = { + 'match': { + 'mac_pppoe_ipv4_pay': [ + 'Ether(src="00:11:22:33:44:55",dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55",dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)', + ], + 'mac_pppoe_ipv4_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1", frag=5)/Raw("x"*80)', + ] + }, + 'mismatch': { + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_frag': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)' + ], + 'mac_ipv4_pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/Raw("x"*80)' + ], + 'mac_ipv4_frag': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=5)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20", frag=5)/Raw("x"*80)' + ] + } +} + +mac_pppoe_ipv4_pay_symmetric = { + 'sub_casename': 'mac_pppoe_ipv4_pay_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay'][1], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_frag_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_frag'][1], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_frag_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_frag'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_frag_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_frag'][1], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_pay'][0], + 'action': {'save_hash': 'mac_ipv4_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_pay'][1], + 'action': {'check_hash_different': 'mac_ipv4_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_frag'][0], + 'action': {'save_hash': 'mac_ipv4_frag_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_frag'][1], + 'action': {'check_hash_different': 'mac_ipv4_frag_mismatch'}, + }, + ], + 'post-test': [ + { + 'send_packet': [i for i in + mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay']], + 'action': 'check_no_hash', + }, + ], +} + +mac_pppoe_ipv4_udp_pay_symmetric_packets = { + 'match': { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=23,dport=25)/Raw("x"*80)' + ], + }, + 'mismatch': { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=19)/Raw("x"*80)', + ], + 'mac_pppoe_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)', + + ], + 'mac_pppoe_ipv4_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)' + ], + 'mac_ipv4_udp_pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/UDP(sport=23,dport=25)/Raw("x"*80)' + ] + } +} + +mac_pppoe_ipv4_udp_pay_symmetric = { + 'sub_casename': 'mac_pppoe_ipv4_udp_pay_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][1], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][2], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][3], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_ipv4_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_ipv4_udp_pay'][1:], + 'action': {'check_hash_different': 'mac_ipv4_udp_pay_mismatch'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_ipv4_udp_pay_match_post'}, + }, + { + 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][1:], + 'action': {'check_hash_different': 'mac_ipv4_udp_pay_match_post'}, + }, + ], +} + +mac_pppoe_ipv4_tcp_pay_symmetric_packets = { + 'match': { + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=25)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=23,dport=25)/Raw("x"*80)' + ] + }, + 'mismatch': { + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)', + ], + 'mac_pppoe_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)', + ], + 'mac_pppoe_ipv4_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)' + ], + 'mac_ipv4_tcp_pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/TCP(sport=23,dport=25)/Raw("x"*80)' + ] + } +} + +mac_pppoe_ipv4_tcp_pay_symmetric = { + 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][1], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][2], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][3], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_ipv4_tcp_pay_mismatch'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_ipv4_tcp_pay'][1:], + 'action': {'check_hash_different': 'mac_ipv4_tcp_pay_mismatch'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match_post'}, + }, + { + 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][3], + 'action': {'check_hash_different', 'mac_pppoe_ipv4_tcp_pay_match_post'} + }, + ], +} + +simple_xor_packets = { + 'match': { + 'mac_pppoe_ipv4_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)' + ], + 'mac_pppoe_ipv4_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)' + ], + 'mac_pppoe_ipv4_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)' + ], + 'mac_pppoe_ipv6_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)' + ], + 'mac_ipv6_udp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=25,dport=23)/Raw("x"*80)' + ], + 'mac_ipv6_tcp_pay': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=25,dport=23)/Raw("x"*80)' + ] + + } +} + +simple_xor = { + 'sub_casename': 'simple_xor', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end', + 'test': [ + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][1:], + 'action': {'check_hash_same': 'mac_pppoe_ipv4_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][1:], + 'action': {'check_same': 'mac_pppoe_ipv4_udp_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][1:], + 'action': {'check_same': 'mac_pppoe_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][1:], + 'action': {'check_same': 'mac_pppoe_ipv6_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_ipv6_udp_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][1:], + 'action': {'check_same': 'mac_ipv6_udp_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_ipv6_tcp_pay_match'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][1:], + 'action': {'check_same': 'mac_ipv6_tcp_pay_match'}, + }, + + ], + 'post-test': [ + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][1:], + 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][1:], + 'action': {'check_same': 'mac_pppoe_ipv4_udp_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][1:], + 'action': {'check_same': 'mac_pppoe_ipv4_tcp_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][0], + 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][1:], + 'action': {'check_same': 'mac_pppoe_ipv6_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_ipv6_udp_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][1:], + 'action': {'check_same': 'mac_ipv6_udp_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_ipv6_tcp_pay_match_post'}, + }, + { + 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][1:], + 'action': {'check_same': 'mac_ipv6_tcp_pay_match_post'}, + }, + ], +} + +mac_vlan_ipv4_pay_packets = { + 'match': { + 'mac_vlan_ipv4_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/Raw("x" * 80)', + ], + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)' + ] +} + +mac_vlan_ipv4_pay = { + 'sub_casename': 'mac_vlan_ipv4_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][0], + 'action': {'save_hash': 'mac_vlan_ipv4_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][1], + 'action': {'check_hash_different': 'mac_vlan_ipv4_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][2], + 'action': {'check_hash_same': 'mac_vlan_ipv4_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_pay_packets['mismatch'][0], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_ipv4_udp_pay_packets = { + 'match': { + 'mac_vlan_ipv4_udp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)', + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)' + ] +} + +mac_vlan_ipv4_udp_pay = { + 'sub_casename': 'mac_vlan_ipv4_udp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][0], + 'action': {'save_hash': 'mac_vlan_ipv4_udp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][1], + 'action': {'check_hash_different': 'mac_vlan_ipv4_udp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][2], + 'action': {'check_hash_same': 'mac_vlan_ipv4_udp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_ipv4_tcp_pay_packets = { + 'match': { + 'mac_vlan_ipv4_tcp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/TCP(sport=19,dport=99)/Raw("x" * 80)' + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)' + ] +} + +mac_vlan_ipv4_tcp_pay = { + 'sub_casename': 'mac_vlan_ipv4_tcp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][0], + 'action': {'save_hash': 'mac_vlan_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_vlan_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][2], + 'action': {'check_hash_same': 'mac_vlan_ipv4_tcp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_tcp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_ipv4_sctp_pay_packets = { + 'match': { + 'mac_vlan_ipv4_sctp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.5")/SCTP(sport=19,dport=99)/Raw("x" * 80)' + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)' + + ] +} + +mac_vlan_ipv4_sctp_pay = { + 'sub_casename': 'mac_vlan_ipv4_sctp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][0], + 'action': {'save_hash': 'mac_vlan_ipv4_sctp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][1], + 'action': {'check_hash_different': 'mac_vlan_ipv4_sctp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][2], + 'action': {'check_hash_same': 'mac_vlan_ipv4_sctp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv4_sctp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_ipv6_pay_packets = { + 'match': { + 'mac_vlan_ipv6_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)' + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)' + ] +} + +mac_vlan_ipv6_pay = { + 'sub_casename': 'mac_vlan_ipv6_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][0], + 'action': {'save_hash': 'mac_vlan_ipv6_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][1], + 'action': {'check_hash_different': 'mac_vlan_ipv6_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][2], + 'action': {'check_hash_same': 'mac_vlan_ipv6_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_ipv6_udp_pay_packets = { + 'match': { + 'mac_vlan_ipv6_udp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=99)/Raw("x" * 80)' + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)' + ] +} + +mac_vlan_ipv6_udp_pay = { + 'sub_casename': 'mac_vlan_ipv6_udp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][0], + 'action': {'save_hash': 'mac_vlan_ipv6_udp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][1], + 'action': {'check_hash_different': 'mac_vlan_ipv6_udp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][2], + 'action': {'check_hash_same': 'mac_vlan_ipv6_udp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_udp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_ipv6_tcp_pay_packets = { + 'match': { + 'mac_vlan_ipv6_tcp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x" * 80)' + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)' + ] +} + +mac_vlan_ipv6_tcp_pay = { + 'sub_casename': 'mac_vlan_ipv6_tcp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][0], + 'action': {'save_hash': 'mac_vlan_ipv6_tcp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][1], + 'action': {'check_hash_different': 'mac_vlan_ipv6_tcp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][2], + 'action': {'check_hash_same': 'mac_vlan_ipv6_tcp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_tcp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_ipv6_sctp_pay_packets = { + 'match': { + 'mac_vlan_ipv6_sctp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=99)/Raw("x" * 80)' + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)' + ] +} + +mac_vlan_ipv6_sctp_pay = { + 'sub_casename': 'mac_vlan_ipv6_sctp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][0], + 'action': {'save_hash': 'mac_vlan_ipv6_sctp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][1], + 'action': {'check_hash_different': 'mac_vlan_ipv6_sctp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][2], + 'action': {'check_hash_same': 'mac_vlan_ipv6_sctp_pay_match'}, + }, + { + 'send_packet': mac_vlan_ipv6_sctp_pay_packets['mismatch'], + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_pppoe_pay_l2_src_only_packets = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)' +] + +mac_vlan_pppoe_pay_l2_src_only = { + 'sub_casename': 'mac_vlan_pppoe_pay_l2_src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[0], + 'action': {'save_hash': 'l2_src_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[1], + 'action': {'check_hash_different': 'l2_src_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[2], + 'action': {'check_hash_same': 'l2_src_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[3], + 'action': {'check_hash_same': 'l2_src_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[4], + 'action': {'check_hash_same': 'l2_src_only'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[1], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_pppoe_pay_l2_dst_only_packets = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)' +] + +mac_vlan_pppoe_pay_l2_dst_only = { + 'sub_casename': 'mac_vlan_pppoe_pay_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[0], + 'action': {'save_hash': 'l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[1], + 'action': {'check_hash_different': 'l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[2], + 'action': {'check_hash_same': 'l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[3], + 'action': {'check_hash_same': 'l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[4], + 'action': {'check_hash_same': 'l2_dst_only'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[1], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)' +] + +mac_vlan_pppoe_pay_l2_src_only_l2_dst_only = { + 'sub_casename': 'mac_vlan_pppoe_pay_l2_src_only_l2_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-src-only l2-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[0], + 'action': {'save_hash': 'l2_src_only_l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[1], + 'action': {'check_hash_different': 'l2_src_only_l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[2], + 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[3], + 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[4], + 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[5], + 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[1], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_pppoe_pay_c_vlan_packets = [ + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)', + 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x" * 80)' +] + +mac_vlan_pppoe_pay_c_vlan = { + 'sub_casename': 'mac_vlan_pppoe_pay_c_vlan', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[0], + 'action': {'save_hash': 'c_vlan'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[1], + 'action': {'check_hash_different': 'c_vlan'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[2], + 'action': {'check_hash_same': 'c_vlan'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[3], + 'action': {'check_hash_same': 'c_vlan'}, + }, + { + 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[4], + 'action': {'check_hash_same': 'c_vlan'}, + }, + ], + 'post-test': [ + { + 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[1], + 'action': 'check_no_hash', + }, + ], +} + +mac_vlan_pppoe_pay = [ + mac_vlan_pppoe_pay_l2_src_only, + mac_vlan_pppoe_pay_l2_dst_only, + mac_vlan_pppoe_pay_l2_src_only_l2_dst_only, + mac_vlan_pppoe_pay_c_vlan +] + + +class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase): + + def set_up_all(self): + """ + Run at the start of each test suite. + Generic filter Prerequistites + """ + + # Based on h/w type, choose how many ports to use + self.dut_ports = self.dut.get_ports(self.nic) + self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing") + # Verify that enough threads are available + cores = self.dut.get_core_list("1S/4C/1T") + self.verify(cores is not None, "Insufficient cores for speed testing") + self.ports_socket = self.dut.get_numa_id(self.dut_ports[0]) + self.tester_port0 = self.tester.get_local_port(self.dut_ports[0]) + self.tester_port1 = self.tester.get_local_port(self.dut_ports[1]) + self.tester_iface0 = self.tester.get_interface(self.tester_port0) + self.tester_iface1 = self.tester.get_interface(self.tester_port1) + self.pci_list = [] + for port in self.dut.ports_info: + self.pci_list.append(port['pci']) + self.pkt = Packet() + self.pmd_output = PmdOutput(self.dut) + self.ddp_dir = "/lib/firmware/updates/intel/ice/ddp/" + conf_file = 'conf/cvl_advanced_rss_pppoe.cfg' + conf_info = UserConf(conf_file) + conf_section = conf_info.conf._sections['suite'] + self.os_default_package = conf_section['os_default_package_file_location'] + self.comms_package = conf_section['comms_package_file_location'] + self.symmetric = False + self.rxq = 64 + self.rsspro = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq) + self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rsspro.tester_ifaces)) + self.logger.info('rssprocess.test_case: {}'.format(self.rsspro.test_case)) + + def set_up(self): + """ + Run before each test case. + """ + pass + + def tear_down(self): + """ + Run after each test case. + """ + # destroy all flow rule on port 0 + self.dut.send_command("flow flush 0", timeout=1) + self.dut.send_command("clear port stats all", timeout=1) + self.pmd_output.execute_cmd("stop") + self.dut.kill_all() + + def tear_down_all(self): + """ + Run after each test suite. + """ + self.dut.kill_all() + + def replace_package(self, package='comms'): + ice_pkg_path = ''.join([self.ddp_dir,"ice.pkg"]) + self.dut.send_expect("rm -f {}".format(ice_pkg_path), "# ") + if package == 'os_default': + self.dut.send_expect("cp {} {}".format(self.os_default_package,ice_pkg_path), "# ") + elif package == 'comms': + self.dut.send_expect("cp {} {}".format(self.comms_package,ice_pkg_path), "# ") + for pci in self.pci_list: + self.dut.send_expect("echo {0} > /sys/bus/pci/devices/{0}/driver/unbind".format(pci), "# ", 60) + self.dut.send_expect("echo {} > /sys/bus/pci/drivers/ice/bind".format(pci), "# ", 60) + pci_str = ' '.join(self.pci_list) + self.dut.send_expect("./usertools/dpdk-devbind.py --force --bind=vfio-pci {}".format(pci_str), "# ", 60) + + def launch_testpmd(self, symmetric=False, package='comms'): + if symmetric: + param = "--rxq=64 --txq=64" + else: + param = "--rxq=64 --txq=64 --disable-rss --rxd=384 --txd=384" + out = self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param, + eal_param=f"-w {self.pci_list[0]}", socket=self.ports_socket) + self.symmetric = symmetric + package_version = re.search('Active\spackage\sis:\s(.+),', out).group(1) + self.logger.info('DDP package version: %s' % package_version) + if package == 'comms': + self.verify(package_version in self.comms_package.split('/')[-1], + 'package version not match') + elif package == 'os_default': + self.verify(package_version in self.os_default_package.split('/')[-1], + 'package version not match') + if symmetric: + # Need config rss in setup + self.pmd_output.execute_cmd("port config all rss all") + self.pmd_output.execute_cmd("set fwd rxonly") + self.pmd_output.execute_cmd("set verbose 1") + res = self.pmd_output.wait_link_status_up('all', timeout=15) + self.verify(res is True, 'there have port link is down') + return package_version + + def switch_testpmd(self, symmetric=True, pkg='comms'): + self.dut.kill_all() + self.launch_testpmd(symmetric, pkg) + self.pmd_output.execute_cmd("start") + + def _gener_str(self, str_len=6): + return ''.join(random.sample(string.ascii_letters + string.digits, k=str_len)) + + def test_mac_ipv4_pfcp_session(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_pfcp_session) + + def test_mac_ipv6_pfcp_session(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_pfcp_session) + + def test_mac_ipv4_l2tpv3(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_l2tpv3) + + def test_mac_ipv6_l2tpv3(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_l2tpv3) + + def test_mac_ipv4_esp(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_esp) + + def test_mac_ipv4_udp_esp(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_esp) + + def test_mac_ipv6_esp(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_esp) + + def test_mac_ipv6_udp_esp(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_esp) + + def test_mac_ipv4_ah(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_ah) + + def test_mac_ipv6_ah(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_ah) + + def test_mac_pppoe_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_pay) + + def test_mac_pppoe_ipv4_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_pay_cases) + + def test_mac_pppoe_ipv4_udp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_udp_pay) + + def test_mac_pppoe_ipv4_tcp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_tcp_pay) + + def test_mac_pppoe_ipv6_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_pay) + + def test_mac_pppoe_ipv6_udp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_udp_pay) + + def test_mac_pppoe_ipv6_tcp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_tcp_pay) + + def test_mac_pppoe_ipv4_pay_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_pay_symmetric) + + def test_mac_pppoe_ipv4_udp_pay_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_udp_pay_symmetric) + + def test_mac_pppoe_ipv4_tcp_pay_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_tcp_pay_symmetric) + + def test_mac_pppoe_ipv6_pay_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_pay_symmetric) + + def test_mac_pppoe_ipv6_udp_pay_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_udp_pay_symmetric) + + def test_mac_pppoe_ipv6_tcp_pay_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_tcp_pay_symmetric) + + def test_simple_xor(self): + self.switch_testpmd(symmetric=True) + self.rsspro.handle_rss_distribute_cases(cases_info=simple_xor) + + def test_multirules_two_rules_not_hit_default_profile(self): + """ + Subcase 1: two rules with same pattern but different hash input set, not hit default profile + :return: + """ + self.rsspro.error_msgs = [] + self.switch_testpmd(symmetric=True) + rule0 = 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end' + self.rsspro.create_rule(rule0) + self.rsspro.check_rule(0) + pkts_list1 = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)'] + out = self.rsspro.send_pkt_get_output(pkts_list1[0]) + pkt1_first_key = 'l3_src' + self.rsspro.save_hash(out, pkt1_first_key) + res = self.rsspro.send_pkt_get_output(pkts_list1[1]) + self.rsspro.check_hash_different(res, pkt1_first_key) + + rule1 = 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end' + self.rsspro.create_rule(rule1) + pkts_list2 = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + ] + self._send_pkt_action(pkts_list2) + + pkts_list3 = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)'] + + for i in range(1, 3): + self.rsspro.destroy_rule(rule_id=i % 2) + self.rsspro.check_rule(rule_list='rule{}'.format(i % 2), stats=False) + pkt_base = 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)' + res3 = self.rsspro.send_pkt_get_output(pkt_base) + pkt3_key = 'hash_record_{}'.format(i % 2) + self.rsspro.save_hash(res3, pkt3_key) + for each_rule in pkts_list3: + result = self.rsspro.send_pkt_get_output(each_rule) + self.rsspro.check_hash_different(result, pkt3_key) + self.verify(not self.rsspro.error_msgs, 'some subcases failed') + + def test_multirules_two_rules_hit_default_profile(self): + """ + # Subcase 2: two rules with same pattern but different hash input set, hit default profile + :return: + """ + self.rsspro.error_msgs = [] + self.switch_testpmd(symmetric=True) + rule_list = [ + 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + + ] + pkt_list = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.5")/Raw("x"*80)', + ] + self._two_rules_operation(rule_list, pkt_list,action_list1=['check_no_hash' for _ in range(0,len(pkt_list))],action_list2=['check_no_hash']) + self.verify(not self.rsspro.error_msgs, 'some subcases failed') + + def _send_pkt_action(self, pkt_list, action_list=None): + if action_list is None: + action_list = ['save_hash', 'check_hash_different', 'check_hash_same'] + hash_key = self._gener_str() + for i in range(0, len(pkt_list)): + out = self.rsspro.send_pkt_get_output(pkt_list[i]) + func = getattr(self.rsspro, action_list[i]) + func(out, hash_key) + + def _two_rules_operation(self, rule_list, pkt_list, action_list1=None, action_list2=None): + for i in range(0, len(rule_list)): + self.rsspro.create_rule(rule_list[i]) + self.rsspro.check_rule(rule_list=['{}'.format(i)]) + if i == 1: + pkt_list[1], pkt_list[2] = pkt_list[2], pkt_list[1] + self._send_pkt_action(pkt_list) + else: + self._send_pkt_action(pkt_list) + # destory rule 1 + self.rsspro.destroy_rule(rule_id=1) + self.rsspro.check_rule(rule_list=['1'], stats=False) + pkt_list[1], pkt_list[2] = pkt_list[2], pkt_list[1] + self._send_pkt_action(pkt_list, action_list=action_list1) + # destory rule 0 + self.rsspro.destroy_rule(rule_id=0) + self.rsspro.check_rule(rule_list=['0'], stats=False) + self._send_pkt_action([pkt_list[0]], action_list=action_list2) + + def test_two_rules_smaller_first_larger_later(self, ): + """ + two rules, scope smaller created first, and the larger one created later + """ + self.rsspro.error_msgs = [] + self.switch_testpmd(symmetric=True) + rule_list = [ + 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end' + ] + pkt_list = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=25,dport=99)/Raw("x"*80)', + ] + self._two_rules_operation(rule_list, pkt_list, action_list2=['check_no_hash']) + self.verify(not self.rsspro.error_msgs, 'some subcases failed') + + def test_two_rules_larger_first_smaller_later(self): + """ + Subcase 4: two rules, scope larger created first, and the smaller one created later + """ + self.rsspro.error_msgs = [] + self.switch_testpmd(symmetric=True) + rule_list = [ + 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end' + ] + pkt_list = [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=25,dport=99)/Raw("x"*80)', + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)', + ] + self._two_rules_operation(rule_list, pkt_list, action_list2=['check_no_hash']) + + def test_wrong_hash_input_set(self): + self.switch_testpmd(symmetric=True) + rule_list = [ + 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end'] + + for rule in rule_list: + self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument') + self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument') + + def test_duplicated_rules(self): + self.switch_testpmd(symmetric=True) + rule = 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end' + self.rsspro.create_rule(rule) + self.rsspro.create_rule(rule, check_stats=False, msg='Operation not permitted') + self.rsspro.check_rule(rule_list=[rule]) + + def test_void_action(self): + self.switch_testpmd(symmetric=True) + rule = 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end' + self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument') + self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument') + self.rsspro.check_rule(stats=False, rule_list=[rule]) + + def test_delete_nonexisting_rule(self): + self.switch_testpmd(symmetric=True) + self.rsspro.check_rule(stats=False) + out = self.dut.send_command("flow destroy 0 rule 0", timeout=1) + self.verify('error' not in out, 'delete nonexisting rule raise err,expected no err') + self.dut.send_command("flow flush 0", timeout=1) + + def test_unsupported_pattern_with_OS_default_package(self): + self.replace_package('os_default') + self.switch_testpmd(symmetric=True, pkg='os_default') + rule_list = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end' + ] + self.rsspro.validate_rule(rule_list, check_stats=False, check_msg='Invalid argument') + self.rsspro.create_rule(rule_list, check_stats=False, msg='Invalid argument') + self.rsspro.check_rule(stats=False) + self.dut.kill_all() + self.replace_package('comms') + self.launch_testpmd() + + def test_invalid_port(self): + self.switch_testpmd(symmetric=True) + rule = 'flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end' + self.rsspro.create_rule(rule, check_stats=False, msg='No such device') + self.rsspro.check_rule(stats=False, rule_list=[rule]) + pattern = 'Invalid port 1' + out = self.dut.send_command("flow list 1", timeout=1) + result = re.search(r'%s' % pattern, out) + self.verify(result, 'actual result not match expected,expected result is:{}'.format(pattern)) + + def test_mac_vlan_ipv4_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_pay) + + def test_mac_vlan_ipv4_udp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_udp_pay) + + def test_mac_vlan_ipv4_tcp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_tcp_pay) + + def test_mac_vlan_ipv4_sctp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_sctp_pay) + + def test_mac_vlan_ipv6_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_pay) + + def test_mac_vlan_ipv6_udp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_udp_pay) + + def test_mac_vlan_ipv6_tcp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_tcp_pay) + + def test_mac_vlan_ipv6_sctp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_sctp_pay) + + def test_mac_vlan_pppoe_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_pppoe_pay) From patchwork Tue Nov 3 08:36:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhao, HaiyangX" X-Patchwork-Id: 83509 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id AE229A0521; Tue, 3 Nov 2020 09:38:42 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B3AD6C87A; Tue, 3 Nov 2020 09:38:38 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id D3A50C83E for ; Tue, 3 Nov 2020 09:38:36 +0100 (CET) IronPort-SDR: kUWdhcEKgu4VWEobhvc9TfIZmxFisUz7rzYaHSfseSsRtaPTOr6cRlfHoVN/3zqz2FvbQAdD/J xj1EwsX9gU1A== X-IronPort-AV: E=McAfee;i="6000,8403,9793"; a="156798029" X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="156798029" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:33 -0800 IronPort-SDR: sHGH1L8TjwcsOHt8waTmOOY5xK9Nrjs61GOTUe9Bd+ykwG6JnKXsIgEvxHqlHmj0IkDSZpk0LQ UqKyYWh29Yaw== X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="305734301" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:32 -0800 From: Haiyang Zhao To: dts@dpdk.org, qi.fu@intel.com Cc: sunqin Date: Tue, 3 Nov 2020 16:36:53 +0800 Message-Id: <20201103083656.16541-6-haiyangx.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201103083656.16541-1-haiyangx.zhao@intel.com> References: <20201103083656.16541-1-haiyangx.zhao@intel.com> Subject: [dts] [PATCH V4 5/8] conf/cvl_advanced_rss_pppoe X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" From: sunqin add cvl rss configure file for new suite Signed-off-by: sunqin --- conf/cvl_advanced_rss_pppoe.cfg | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 conf/cvl_advanced_rss_pppoe.cfg diff --git a/conf/cvl_advanced_rss_pppoe.cfg b/conf/cvl_advanced_rss_pppoe.cfg new file mode 100644 index 0000000..d317282 --- /dev/null +++ b/conf/cvl_advanced_rss_pppoe.cfg @@ -0,0 +1,5 @@ +[suite] +# cvl_advanced_rss_pppoe_vlan_ah_l2tp_pfcp ice package file location +ice_driver_file_location=/lib/modules/4.18.0-193.14.2.el8_2.x86_64/updates/drivers/net/ethernet/intel/ice/ice.ko +os_default_package_file_location=/lib/firmware/updates/intel/ice/ddp/ice-1.3.18.0.pkg +comms_package_file_location=/lib/firmware/updates/intel/ice/ddp/ice_comms-1.3.22.0.pkg From patchwork Tue Nov 3 08:36:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhao, HaiyangX" X-Patchwork-Id: 83510 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E549EA0521; Tue, 3 Nov 2020 09:38:45 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DE401C882; Tue, 3 Nov 2020 09:38:40 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 854FFC872 for ; Tue, 3 Nov 2020 09:38:37 +0100 (CET) IronPort-SDR: juwF2Xla7FDnhfGl+9tBokQr40WzM20oIgXFM5g7wNqOxiHpozUzEKM3K8BreRoTMmBenYvbLb nffHmKCULHhg== X-IronPort-AV: E=McAfee;i="6000,8403,9793"; a="156798035" X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="156798035" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:36 -0800 IronPort-SDR: C2vNjO7q4cyLTxct8jj0UfE0rlHymw+OTKzzvdQ/t1clDPlI3SVUoqigoMK8ARZXz8ZCDCuRdv zOvmHczC7uIA== X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="305734307" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:33 -0800 From: Haiyang Zhao To: dts@dpdk.org, qi.fu@intel.com Cc: sunqin Date: Tue, 3 Nov 2020 16:36:54 +0800 Message-Id: <20201103083656.16541-7-haiyangx.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201103083656.16541-1-haiyangx.zhao@intel.com> References: <20201103083656.16541-1-haiyangx.zhao@intel.com> Subject: [dts] [PATCH V4 6/8] tests/cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp add cvl rss iavf test suite X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" From: sunqin Signed-off-by: sunqin Tested-by: Sun, QinX --- ...advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py | 1046 +++++++++++++++++ 1 file changed, 1046 insertions(+) create mode 100644 tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py diff --git a/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py b/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py new file mode 100644 index 0000000..f9644b5 --- /dev/null +++ b/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py @@ -0,0 +1,1046 @@ +# BSD LICENSE +# +# Copyright(c)2020 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import re +import random +import string +import time +from test_case import TestCase +from pmd_output import PmdOutput +from packet import Packet +from rte_flow_common import RssProcessing +from config import UserConf + +vf0_mac = '00:11:22:33:44:55' + +mac_ipv4_pfcp_session_packets = { + 'match': [ + 'Ether(dst="{}")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=2)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.25",dst="192.168.0.23")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)'.format( + vf0_mac)], + 'mismatch': [ + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)'.format(vf0_mac)] +} + +mac_ipv4_pfcp_session = { + 'sub_casename': 'mac_ipv4_pfcp_session', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_pfcp_session_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_pfcp_session_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_pfcp_session_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in mac_ipv4_pfcp_session_packets['match']], +} + +mac_ipv6_pfcp_session_packets = { + 'match': [ + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=2)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)'.format( + vf0_mac)], + 'mismatch': [ + 'Ether(dst="{}")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)'.format( + vf0_mac)] +} + +mac_ipv6_pfcp_session = { + 'sub_casename': 'mac_ipv6_pfcp_session', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_pfcp_session_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_pfcp_session_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_pfcp_session_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in mac_ipv6_pfcp_session_packets['match']], +} + +mac_ipv4_l2tpv3_packets = { + 'match': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.4", proto=115)/L2TP(\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.5",dst="192.168.0.7", proto=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'.format( + vf0_mac) + ], + 'mismatch': [ + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)'.format(vf0_mac) + ] +} + +mac_ipv4_l2tpv3 = { + 'sub_casename': 'mac_ipv4_l2tpv3', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_l2tpv3_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_l2tpv3_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_l2tpv3_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in mac_ipv4_l2tpv3_packets['match']], +} + +mac_ipv6_l2tpv3_packets = { + 'match': [ + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'.format( + vf0_mac) + ], + 'mismatch': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)'.format( + vf0_mac) + ] +} + +mac_ipv6_l2tpv3 = { + 'sub_casename': 'mac_ipv6_l2tpv3', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_l2tpv3_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_l2tpv3_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_l2tpv3_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in mac_ipv6_l2tpv3_packets['match']] +} + +mac_ipv4_esp_packets = { + 'match': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)'.format(vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=12)/Raw("x"*480)'.format(vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.4",dst="192.168.0.7",proto=50)/ESP(spi=11)/Raw("x"*480)'.format(vf0_mac)], + 'mismatch': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)'.format( + vf0_mac) + ] +} + +mac_ipv4_esp = { + 'sub_casename': 'mac_ipv4_esp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_esp_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_esp_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_esp_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [ + # i for i in mac_ipv4_esp_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in mac_ipv4_esp_packets['match']], +} + +mac_ipv4_udp_esp_packets = { + 'match': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.4",dst="192.168.0.7")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac)], + 'mismatch': [ + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)'.format(vf0_mac)] +} + +mac_ipv4_udp_esp = { + 'sub_casename': 'mac_ipv4_udp_esp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_udp_esp_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_udp_esp_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_udp_esp_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [i for i in mac_ipv4_udp_esp_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_ipv4_esp_packets['match']], +} + +mac_ipv6_esp_packets = { + 'match': [ + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=50)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac)], + 'mismatch': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)'.format(vf0_mac), + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'.format( + vf0_mac)] +} + +mac_ipv6_esp = { + 'sub_casename': 'mac_ipv6_esp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_esp_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_esp_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_esp_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [i for i in mac_ipv6_esp_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_ipv6_esp_packets['match']], +} + +mac_ipv6_udp_esp_packets = { + 'match': [ + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac)], + 'mismatch': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)'.format( + vf0_mac)] +} + +mac_ipv6_udp_esp = { + 'sub_casename': 'mac_ipv6_udp_esp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_udp_esp_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_udp_esp_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_udp_esp_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [i for i in mac_ipv6_udp_esp_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_ipv6_udp_esp_packets['match']], + +} + +mac_ipv4_ah_packets = { + 'match': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)'.format(vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=12)/Raw("x"*480)'.format(vf0_mac), + 'Ether(dst="{}")/IP(src="192.168.0.4",dst="192.168.0.8",proto=51)/AH(spi=11)/Raw("x"*480)'.format(vf0_mac)], + 'mismatch': [ + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)'.format( + vf0_mac)] +} + +mac_ipv4_ah = { + 'sub_casename': 'mac_ipv4_ah', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_ah_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_ah_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_ah_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_ipv4_ah_packets['mismatch'], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in mac_ipv4_ah_packets['match']], + +} + +mac_ipv6_ah_packets = { + 'match': [ + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=12)/Raw("x"*480)'.format( + vf0_mac), + 'Ether(dst="{}")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=51)/AH(spi=11)/Raw("x"*480)'.format( + vf0_mac)], + 'mismatch': [ + 'Ether(dst="{}")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)'.format(vf0_mac), + 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'.format( + vf0_mac)] +} + +mac_ipv6_ah = { + 'sub_casename': 'mac_ipv6_ah', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_ah_packets['match'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv6_ah_packets['match'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_ah_packets['match'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': [i for i in mac_ipv6_ah_packets['mismatch']], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in mac_ipv6_ah_packets['match']], +} + +mac_vlan_ipv4_pay_packets = { + 'match': { + 'mac_vlan_ipv4_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:99", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/Raw("x" * 80)'.format( + vf0_mac), + ], + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'.format( + vf0_mac) + ] +} + +mac_vlan_ipv4_pay = { + 'sub_casename': 'mac_vlan_ipv4_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_vlan_ipv4_pay_packets['mismatch'][0], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay']], +} + +mac_vlan_ipv4_udp_pay_packets = { + 'match': { + 'mac_vlan_ipv4_udp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:99", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)'.format( + vf0_mac), + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac) + ] +} + +mac_vlan_ipv4_udp_pay = { + 'sub_casename': 'mac_vlan_ipv4_udp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_vlan_ipv4_udp_pay_packets['mismatch'], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay']], +} + +mac_vlan_ipv4_tcp_pay_packets = { + 'match': { + 'mac_vlan_ipv4_tcp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:99", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/TCP(sport=19,dport=99)/Raw("x" * 80)'.format( + vf0_mac) + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac) + ] +} + +mac_vlan_ipv4_tcp_pay = { + 'sub_casename': 'mac_vlan_ipv4_tcp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_vlan_ipv4_tcp_pay_packets['mismatch'], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay']], +} + +mac_vlan_ipv4_sctp_pay_packets = { + 'match': { + 'mac_vlan_ipv4_sctp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:99", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.5")/SCTP(sport=19,dport=99)/Raw("x" * 80)'.format( + vf0_mac) + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac) + + ] +} + +mac_vlan_ipv4_sctp_pay = { + 'sub_casename': 'mac_vlan_ipv4_sctp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_vlan_ipv4_sctp_pay_packets['mismatch'], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay']], +} + +mac_vlan_ipv6_pay_packets = { + 'match': { + 'mac_vlan_ipv6_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:99", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)'.format( + vf0_mac) + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'.format( + vf0_mac) + ] +} + +mac_vlan_ipv6_pay = { + 'sub_casename': 'mac_vlan_ipv6_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_vlan_ipv6_pay_packets['mismatch'], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay']], +} + +mac_vlan_ipv6_udp_pay_packets = { + 'match': { + 'mac_vlan_ipv6_udp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:99", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=99)/Raw("x" * 80)'.format( + vf0_mac) + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac) + ] +} + +mac_vlan_ipv6_udp_pay = { + 'sub_casename': 'mac_vlan_ipv6_udp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_vlan_ipv6_udp_pay_packets['mismatch'], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay']], +} + +mac_vlan_ipv6_tcp_pay_packets = { + 'match': { + 'mac_vlan_ipv6_tcp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:99", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x" * 80)'.format( + vf0_mac) + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac) + ] +} + +mac_vlan_ipv6_tcp_pay = { + 'sub_casename': 'mac_vlan_ipv6_tcp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_vlan_ipv6_tcp_pay_packets['mismatch'], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay']], +} + +mac_vlan_ipv6_sctp_pay_packets = { + 'match': { + 'mac_vlan_ipv6_sctp_pay': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:99", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=99)/Raw("x" * 80)'.format( + vf0_mac) + ] + }, + 'mismatch': [ + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac), + 'Ether(src="10:22:33:44:55:66", dst="{}",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'.format( + vf0_mac) + ] +} + +mac_vlan_ipv6_sctp_pay = { + 'sub_casename': 'mac_vlan_ipv6_sctp_pay', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][0], + 'action': 'save_hash', + }, + { + 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][1], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][2], + 'action': 'check_hash_same', + }, + # { + # 'send_packet': mac_vlan_ipv6_sctp_pay_packets['mismatch'], + # 'action': 'check_no_hash_or_different', + # }, + ], + 'post-test': [{'send_packet': pkt, 'action': 'check_no_hash_or_different'} for pkt in + mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay']], +} + + +class Cvl_advance_iavf_rss_vlan_ah_l2tp_pfcp(TestCase): + + def set_up_all(self): + """ + Run at the start of each test suite. + Generic filter Prerequistites + """ + + # Based on h/w type, choose how many ports to use + self.dut_ports = self.dut.get_ports(self.nic) + self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing") + # Verify that enough threads are available + cores = self.dut.get_core_list("1S/4C/1T") + self.verify(cores is not None, "Insufficient cores for speed testing") + self.ports_socket = self.dut.get_numa_id(self.dut_ports[0]) + self.tester_port0 = self.tester.get_local_port(self.dut_ports[0]) + self.tester_port1 = self.tester.get_local_port(self.dut_ports[1]) + self.tester_iface0 = self.tester.get_interface(self.tester_port0) + self.tester_iface1 = self.tester.get_interface(self.tester_port1) + self.pci0 = self.dut.ports_info[self.dut_ports[0]]['pci'] + self.pci1 = self.dut.ports_info[self.dut_ports[1]]['pci'] + + self.used_dut_port = self.dut_ports[0] + self.pf_interface = self.dut.ports_info[self.dut_ports[0]]['intf'] + self.vf_flag = False + self.create_iavf() + + self.pkt = Packet() + self.pmd_output = PmdOutput(self.dut) + self.ddp_dir = "/lib/firmware/updates/intel/ice/ddp/" + conf_file = 'conf/cvl_advanced_rss_pppoe.cfg' + conf_info = UserConf(conf_file) + conf_section = conf_info.conf._sections['suite'] + self.os_default_package = conf_section['os_default_package_file_location'] + self.comms_package = conf_section['comms_package_file_location'] + self.ice_driver = conf_section['ice_driver_file_location'] + self.symmetric = False + self.rxq = 16 + self.rsspro = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq) + self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rsspro.tester_ifaces)) + self.logger.info('rssprocess.test_case: {}'.format(self.rsspro.test_case)) + + def set_up(self): + """ + Run before each test case. + """ + pass + + def create_iavf(self): + if self.vf_flag is False: + self.dut.bind_interfaces_linux('ice') + self.dut.generate_sriov_vfs_by_port(self.used_dut_port, 1) + self.sriov_vfs_port = self.dut.ports_info[self.used_dut_port]['vfs_port'] + self.vf_flag = True + try: + for port in self.sriov_vfs_port: + port.bind_driver(self.drivername) + self.vf0_prop = {'opt_host': self.sriov_vfs_port[0].pci} + self.dut.send_expect("ifconfig %s up" % self.pf_interface, "# ") + self.dut.send_expect("ip link set %s vf 0 mac %s" % (self.pf_interface, vf0_mac), "# ") + except Exception as e: + self.destroy_iavf() + raise Exception(e) + + def destroy_iavf(self): + if self.vf_flag is True: + self.dut.destroy_sriov_vfs_by_port(self.used_dut_port) + self.vf_flag = False + + def tear_down(self): + """ + Run after each test case. + """ + # destroy all flow rule on port 0 + self.dut.send_command("flow flush 0", timeout=1) + self.dut.send_command("clear port stats all", timeout=1) + self.pmd_output.execute_cmd("stop") + self.dut.kill_all() + + def tear_down_all(self): + """ + Run after each test suite. + """ + self.dut.kill_all() + self.destroy_iavf() + + def replace_package(self, package='comms'): + ice_pkg_path = ''.join([self.ddp_dir,"ice.pkg"]) + self.dut.send_expect("rm -f {}".format(ice_pkg_path), "# ") + if package == 'os_default': + self.dut.send_expect("cp {} {}".format(self.os_default_package,ice_pkg_path), "# ") + elif package == 'comms': + self.dut.send_expect("cp {} {}".format(self.comms_package,ice_pkg_path), "# ") + self.dut.send_expect("rmmod ice", "# ", 15) + self.dut.send_expect("insmod {}".format(self.ice_driver), "# ",) + + def launch_testpmd(self, symmetric=False): + param = "--rxq=16 --txq=16" + self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param, + ports=[self.sriov_vfs_port[0].pci], socket=self.ports_socket) + self.symmetric = symmetric + if symmetric: + # Need config rss in setup + self.pmd_output.execute_cmd("port config all rss all") + self.pmd_output.execute_cmd("set fwd rxonly") + self.pmd_output.execute_cmd("set verbose 1") + res = self.pmd_output.wait_link_status_up('all', timeout=15) + self.verify(res is True, 'there have port link is down') + + def switch_testpmd(self, symmetric=False): + self.dut.kill_all() + self.launch_testpmd(symmetric) + self.pmd_output.execute_cmd("start") + + def _gener_str(self, str_len=6): + return ''.join(random.sample(string.ascii_letters + string.digits, k=str_len)) + + def test_mac_ipv4_pfcp_session(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_pfcp_session) + + def test_mac_ipv6_pfcp_session(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_pfcp_session) + + def test_mac_ipv4_l2tpv3(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_l2tpv3) + + def test_mac_ipv6_l2tpv3(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_l2tpv3) + + def test_mac_ipv4_esp(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_esp) + + def test_mac_ipv4_udp_esp(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_esp) + + def test_mac_ipv6_esp(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_esp) + + def test_mac_ipv6_udp_esp(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_esp) + + def test_mac_ipv4_ah(self): + self.switch_testpmd() + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_ah) + + def test_mac_ipv6_ah(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_ah) + + def test_wrong_hash_input_set(self): + self.switch_testpmd(symmetric=False) + rule_list = [ + 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end'] + + for rule in rule_list: + self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument') + self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument') + + def test_void_action(self): + self.switch_testpmd(symmetric=False) + rule = 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end' + self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument') + self.rsspro.check_rule(stats=False, rule_list=[rule]) + + def test_delete_nonexisting_rule(self): + self.switch_testpmd(symmetric=False) + self.rsspro.check_rule(stats=False) + out = self.dut.send_command("flow destroy 0 rule 0", timeout=1) + self.verify('error' not in out, 'delete nonexisting rule raise err,expected no err') + self.dut.send_command("flow flush 0", timeout=1) + + def test_unsupported_pattern_with_OS_default_package(self): + self.destroy_iavf() + self.replace_package('os_default') + self.create_iavf() + self.switch_testpmd(symmetric=True) + rule_list = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end' + ] + self.rsspro.create_rule(rule_list, check_stats=False, msg='Invalid argument') + self.rsspro.check_rule(stats=False) + self.dut.kill_all() + self.destroy_iavf() + self.replace_package('comms') + self.create_iavf() + self.switch_testpmd(symmetric=True) + self.rsspro.create_rule(rule_list, check_stats=True) + + def test_invalid_port(self): + self.switch_testpmd(symmetric=False) + rule = 'flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end' + self.rsspro.create_rule(rule, check_stats=False, msg='No such device') + self.rsspro.check_rule(stats=False, rule_list=[rule]) + pattern = 'Invalid port 1' + out = self.dut.send_command("flow list 1", timeout=1) + result = re.search(r'%s' % pattern, out) + self.verify(result, 'actual result not match expected,expected result is:{}'.format(pattern)) + + def test_mac_vlan_ipv4_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_pay) + + def test_mac_vlan_ipv4_udp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_udp_pay) + + def test_mac_vlan_ipv4_tcp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_tcp_pay) + + def test_mac_vlan_ipv4_sctp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_sctp_pay) + + def test_mac_vlan_ipv6_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_pay) + + def test_mac_vlan_ipv6_udp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_udp_pay) + + def test_mac_vlan_ipv6_tcp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_tcp_pay) + + def test_mac_vlan_ipv6_sctp_pay(self): + self.switch_testpmd(symmetric=False) + self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_sctp_pay) From patchwork Tue Nov 3 08:36:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhao, HaiyangX" X-Patchwork-Id: 83514 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 561EAA0521; Tue, 3 Nov 2020 09:39:06 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D1536C87E; Tue, 3 Nov 2020 09:39:04 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 0B222C80E for ; Tue, 3 Nov 2020 09:38:41 +0100 (CET) IronPort-SDR: 5u1Gzu5Qfx4JozIMcHnLLtMDyHo6W+9qA+GURMRBx5ojiOo7iMnJSHJKDtxSG6GaDHDX+Ly5Pc 0rTYcEZTb4NA== X-IronPort-AV: E=McAfee;i="6000,8403,9793"; a="156798049" X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="156798049" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:39 -0800 IronPort-SDR: aFcVcnabiBeXXUxtqLJ0xiBXnpqrNMu2fWEntdRqQ9yiTM3FfYS+3IpqgZb/vTZFfaEHzjMs+E 1N1Ykno69gtw== X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="305734317" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:36 -0800 From: Haiyang Zhao To: dts@dpdk.org, qi.fu@intel.com Cc: Zhimin Huang Date: Tue, 3 Nov 2020 16:36:55 +0800 Message-Id: <20201103083656.16541-8-haiyangx.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201103083656.16541-1-haiyangx.zhao@intel.com> References: <20201103083656.16541-1-haiyangx.zhao@intel.com> Subject: [dts] [PATCH V4 7/8] tests/cvl_advanced_iavf_rss_gtpu:add iavf rss gtpu suite X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" From: Zhimin Huang *.add cvl_advanced_iavf_rss_gtpu suite,support scapy 2.4.4 Signed-off-by: Zhimin Huang --- tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py | 8964 +++++++++++++++++ 1 file changed, 8964 insertions(+) create mode 100755 tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py diff --git a/tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py b/tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py new file mode 100755 index 0000000..80e5feb --- /dev/null +++ b/tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py @@ -0,0 +1,8964 @@ +# BSD LICENSE +# +# Copyright(c)2020 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +import re +import random +import time +from packet import Packet +from pmd_output import PmdOutput +from test_case import TestCase +from rte_flow_common import RssProcessing + +mac_ipv4_gtpu_ipv4_basic = { + 'ipv4-nonfrag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'ipv4-frag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)', + 'ipv4-icmp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + 'ipv4-tcp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/TCP()/("X"*480)', + 'ipv4-udp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/UDP()/("X"*480)', +} + +mac_ipv4_gtpu_ipv4_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_ipv4_basic).replace('192.168.0.2', '192.168.1.2')) +mac_ipv4_gtpu_ipv4_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_ipv4_basic).replace('192.168.0.1', '192.168.1.1')) + +mac_ipv4_gtpu_ipv4_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-tcp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_l3src_only = eval(str(mac_ipv4_gtpu_ipv4_l3dst_only) + .replace('mac_ipv4_gtpu_ipv4_l3dst', 'mac_ipv4_gtpu_ipv4_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) +mac_ipv4_gtpu_ipv4_all = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-tcp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-tcp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-tcp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_toeplitz = [mac_ipv4_gtpu_ipv4_l3dst_only, mac_ipv4_gtpu_ipv4_l3src_only, + mac_ipv4_gtpu_ipv4_all, mac_ipv4_gtpu_ipv4_gtpu] + +mac_ipv4_gtpu_ipv4_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)', + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.10",dst="192.168.0.20")/UDP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp'}, + }, + ], +} + +mac_ipv4_gtpu_ipv6_symmetric = eval(str(mac_ipv4_gtpu_ipv4_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace(', frag=6)', ')/IPv6ExtHdrFragment()') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('gtpu / ipv4', 'gtpu / ipv6').replace('types ipv4', 'types ipv6') + ) + +mac_ipv4_gtpu_ipv4_udp_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash': 'basic_with_rule'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + ], +} + +mac_ipv4_gtpu_ipv6_udp_symmetric = eval(str(mac_ipv4_gtpu_ipv4_udp_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('gtpu / ipv4', 'gtpu / ipv6').replace('types ipv4-udp', 'types ipv6-udp') + ) + +mac_ipv4_gtpu_ipv4_tcp_symmetric = eval(str(mac_ipv4_gtpu_ipv4_udp_symmetric).replace('TCP(', 'TCP1(') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('udp / end', 'tcp / end ').replace('ipv4-udp', 'ipv4-tcp') + .replace('udp_symmetric', 'tcp_symmetric')) + +mac_ipv4_gtpu_ipv6_tcp_symmetric = eval(str(mac_ipv4_gtpu_ipv4_tcp_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('gtpu / ipv4', 'gtpu / ipv6').replace('types ipv4-tcp', 'types ipv6-tcp') + ) + +mac_ipv4_gtpu_eh_dl_ipv4_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)', + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-udp'}, + }, + ], +} +mac_ipv4_gtpu_eh_ul_ipv4_symmetric = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_symmetric) + .replace('(type=1', '(type=2') + .replace('(type=0', '(type=1') + .replace('(type=2', '(type=0') + .replace('eh_dl', 'eh_ul') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + ) + +mac_ipv4_gtpu_eh_ipv4_symmetric = [mac_ipv4_gtpu_eh_dl_ipv4_symmetric, mac_ipv4_gtpu_eh_ul_ipv4_symmetric] + +mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + ], +} +mac_ipv4_gtpu_eh_ul_ipv4_udp_symmetric = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric) + .replace('(type=1', '(type=2') + .replace('(type=0', '(type=1') + .replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) +mac_ipv4_gtpu_eh_ipv4_udp_symmetric = [mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric, mac_ipv4_gtpu_eh_ul_ipv4_udp_symmetric] + +mac_ipv4_gtpu_eh_ipv4_tcp_symmetric = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_eh_ipv4_udp_symmetric] + +mac_ipv4_gtpu_eh_ipv6_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace(', frag=6)', ')/IPv6ExtHdrFragment()') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('ipv4 / end', 'ipv6 / end').replace('types ipv4', 'types ipv6') + .replace('ipv4_symmetric', 'ipv6_symmetric') + ) + +mac_ipv4_gtpu_eh_ipv6_udp_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_udp_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('ipv4 / udp / end', 'ipv6 / udp / end').replace('types ipv4-udp', 'types ipv6-udp') + .replace('ipv4_udp_symmetric', 'ipv6_udp_symmetric') + ) + + +mac_ipv4_gtpu_eh_ipv6_tcp_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_tcp_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('ipv4 / tcp / end', 'ipv6 / tcp / end').replace('types ipv4-tcp', 'types ipv6-tcp') + .replace('ipv4_tcp_symmetric', 'ipv6_tcp_symmetric') + ) + +mac_ipv4_gtpu_ipv4_udp_basic = 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' + +mac_ipv4_gtpu_ipv4_udp_l3dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_l3src = eval(str(mac_ipv4_gtpu_ipv4_udp_l3dst) + .replace('mac_ipv4_gtpu_ipv4_udp_l3dst', 'mac_ipv4_gtpu_ipv4_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) + +mac_ipv4_gtpu_ipv4_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.1', + '192.168.1.1'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash_different', + }, + ] +} +mac_ipv4_gtpu_ipv4_udp_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32') + .replace('192.168.0', '192.168.1'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} +mac_ipv4_gtpu_ipv4_udp_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=32') + .replace('192.168.0', '192.168.1'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_all = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_toeplitz = [mac_ipv4_gtpu_ipv4_udp_l3dst, mac_ipv4_gtpu_ipv4_udp_l3src, + mac_ipv4_gtpu_ipv4_udp_l3dst_l4src, mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst, + mac_ipv4_gtpu_ipv4_udp_l3src_l4src, mac_ipv4_gtpu_ipv4_udp_l3src_l4dst, + mac_ipv4_gtpu_ipv4_udp_l4src, mac_ipv4_gtpu_ipv4_udp_l4dst, + mac_ipv4_gtpu_ipv4_udp_all] + +mac_ipv4_gtpu_ipv4_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_ipv6_basic = { + 'ipv6-nonfrag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'ipv6-frag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'ipv6-icmp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'ipv6-tcp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(''src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP()/("X"*480)', + 'ipv6-udp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/("X"*480)', +} + +mac_ipv4_gtpu_ipv6_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_ipv6_basic).replace('ABAB', '1212')) +mac_ipv4_gtpu_ipv6_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_ipv6_basic).replace('CDCD', '3434')) + +mac_ipv4_gtpu_ipv6_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + 'action': {'save_hash', 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + 'action': {'save_hash', 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + 'action': {'save_hash', 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-tcp'], + 'action': {'save_hash', 'ipv6-tcp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + 'action': {'save_hash', 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-tcp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_l3src_only = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_l3src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + 'action': {'save_hash', 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + 'action': {'save_hash', 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + 'action': {'save_hash', 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-tcp'], + 'action': {'save_hash', 'ipv6-tcp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + 'action': {'save_hash', 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-tcp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_l3src_only = eval(str(mac_ipv4_gtpu_ipv6_l3dst_only) + .replace('mac_ipv4_gtpu_ipv6_l3dst', 'mac_ipv4_gtpu_ipv6_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) +mac_ipv4_gtpu_ipv6_all = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + 'action': {'save_hash', 'ipv6-nonfrag'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + 'action': {'save_hash', 'ipv6-frag'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + 'action': {'save_hash', 'ipv6-icmp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-tcp'], + 'action': {'save_hash', 'ipv6-tcp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-tcp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + 'action': {'save_hash', 'ipv6-udp'}, + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-tcp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-tcp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_toeplitz = [mac_ipv4_gtpu_ipv6_l3dst_only, mac_ipv4_gtpu_ipv6_l3src_only, + mac_ipv4_gtpu_ipv6_all, mac_ipv4_gtpu_ipv6_gtpu] + +mac_ipv4_gtpu_ipv6_udp_basic = 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' + +mac_ipv4_gtpu_ipv6_udp_l3dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_l3src = eval(str(mac_ipv4_gtpu_ipv6_udp_l3dst) + .replace('mac_ipv4_gtpu_ipv6_udp_l3dst', 'mac_ipv4_gtpu_ipv6_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) + +mac_ipv4_gtpu_ipv6_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} +mac_ipv4_gtpu_ipv6_udp_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32') + .replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} +mac_ipv4_gtpu_ipv6_udp_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=32') + .replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_all = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_toeplitz = [mac_ipv4_gtpu_ipv6_udp_l3dst, mac_ipv4_gtpu_ipv6_udp_l3src, + mac_ipv4_gtpu_ipv6_udp_l3dst_l4src, mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst, + mac_ipv4_gtpu_ipv6_udp_l3src_l4src, mac_ipv4_gtpu_ipv6_udp_l3src_l4dst, + mac_ipv4_gtpu_ipv6_udp_l4src, mac_ipv4_gtpu_ipv6_udp_l4dst, + mac_ipv4_gtpu_ipv6_udp_all] + +mac_ipv4_gtpu_ipv6_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_ipv6_udp_toeplitz] + +mac_ipv4_gtpu_eh_dl_ipv4_basic = { + 'ipv4-nonfrag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'ipv4-frag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'ipv4-icmp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'ipv4-udp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + 'ipv4-tcp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP()/("X"*480)', + +} + +mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt = eval( + str(mac_ipv4_gtpu_eh_dl_ipv4_basic).replace('192.168.0.2', '192.168.1.2')) +mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt = eval( + str(mac_ipv4_gtpu_eh_dl_ipv4_basic).replace('192.168.0.1', '192.168.1.1')) + +mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_l3src_only = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only) + .replace('eh_dl_ipv4_l3dst', 'eh_ul_ipv4_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) +mac_ipv4_gtpu_eh_dl_ipv4_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + + +mac_ipv4_gtpu_eh_dl_ipv4 = [mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only, mac_ipv4_gtpu_eh_dl_ipv4_l3src_only, + mac_ipv4_gtpu_eh_dl_ipv4_all] + +mac_ipv4_gtpu_eh_ul_ipv4 = [eval(str(element).replace('(type=1', '(type=2') + .replace('(type=0', '(type=1').replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) + for element in mac_ipv4_gtpu_eh_dl_ipv4] + +mac_ipv4_gtpu_eh_ipv4_toeplitz = mac_ipv4_gtpu_eh_dl_ipv4 + mac_ipv4_gtpu_eh_ul_ipv4 + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic = { + 'ipv4-nonfrag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'ipv4-nonfrag_ul': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'ipv4-frag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'ipv4-icmp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'ipv4-udp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic).replace('192.168.0.2', '192.168.1.2')) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic).replace('192.168.0.1', '192.168.1.1')) + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-nonfrag_ul'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag_ul'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-frag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-icmp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-udp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_only = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_only) + .replace('ul_dl_ipv4_l3dst', 'ul_dl_ipv4_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('dst="192.168.0.1",src="192.168.1.2"', 'dst="192.168.0.1",src="192.168.1.3"') + .replace('dst="192.168.1.1",src="192.168.0.2"', 'dst="192.168.0.1",src="192.168.1.2"') + .replace('dst="192.168.0.1",src="192.168.1.3"', 'dst="192.168.1.1",src="192.168.0.2"') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-nonfrag_ul'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag_ul'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz = [mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_all] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic = { + 'dl': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'ul': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.2', '192.168.1.2') + .replace('sport=22, dport=23', 'sport=32, dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_only = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_only) + .replace('ul_dl_ipv4_udp_l3dst', 'ul_dl_ipv4_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('dst="192.168.0.1",src="192.168.1.2"', 'dst="192.168.0.1",src="192.168.1.3"') + .replace('dst="192.168.1.1",src="192.168.0.2"', 'dst="192.168.0.1",src="192.168.1.2"') + .replace('dst="192.168.0.1",src="192.168.1.3"', 'dst="192.168.1.1",src="192.168.0.2"') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.1', '192.168.1.1') + .replace('dport=23', 'dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('192.168.0.1', '192.168.1.1') + .replace('dport=23', 'dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4dst = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src) + .replace('udp_l3src_l4src', 'udp_l3src_l4dst') + .replace('l4-src-only', 'l4-dst-only') + .replace('sport=32, dport=23', 'sport=22, dport=34') + .replace('sport=22, dport=33', 'sport=32, dport=23') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4src = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src) + .replace('udp_l3src_l4src', 'udp_l3dst_l4src') + .replace('l3-src-only', 'l3-dst-only') + .replace('dst="192.168.0.1",src="192.168.1.2"', 'dst="192.168.0.1",src="192.168.1.3"') + .replace('dst="192.168.1.1",src="192.168.0.2"', 'dst="192.168.0.1",src="192.168.1.2"') + .replace('dst="192.168.0.1",src="192.168.1.3"', 'dst="192.168.1.1",src="192.168.0.2"') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4dst = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4src) + .replace('udp_l3dst_l4src', 'udp_l3dst_l4dst') + .replace('l3-src-only', 'l3-dst-only') + .replace('l4-src-only', 'l4-dst-only') + .replace('sport=32, dport=23', 'sport=22, dport=34') + .replace('sport=22, dport=33', 'sport=32, dport=23') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0', '192.168.1') + .replace('dport=23', 'dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('192.168.0', '192.168.1') + .replace('dport=23', 'dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4dst_only = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only) + .replace('udp_l4src_only', 'udp_l4dst_only') + .replace('l4-src-only', 'l4-dst-only') + .replace('sport=32, dport=23', 'sport=22, dport=34') + .replace('sport=22, dport=33', 'sport=32, dport=23') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz = [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4dst, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4src, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4dst, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4dst_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp, +] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv6_toeplitz = [eval(str(element).replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('types ipv4', 'types ipv6') + .replace('ul_dl_ipv4', 'ul_dl_ipv6') + .replace(', frag=6)', ')/IPv6ExtHdrFragment()') + .replace('IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(dst="192.168.0.3", src="192.168.0.3"',) + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.0.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.1",src="192.168.1.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.1.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.3",src="192.168.0.3"', 'IP(dst="192.168.0.1",src="192.168.0.2"')) + for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv6_udp_toeplitz = [eval(str(element).replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('ipv4-udp', 'ipv6-udp') + .replace('ul_dl_ipv4_udp', 'ul_dl_ipv6_udp') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.0.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.1",src="192.168.1.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.1.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"')) + for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz = [eval(str(element).replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('ipv4 / tcp', 'ipv6 / tcp') + .replace('ipv4-tcp', 'ipv6-tcp') + .replace('ul_dl_ipv4_tcp', 'ul_dl_ipv6_tcp') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.0.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.1",src="192.168.1.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.1.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"')) + for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz] + +mac_ipv4_gtpu_eh_dl_ipv4_udp_basic = 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst) + .replace('mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst', + 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32') + .replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} +mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32') + .replace('192.168.0', '192.168.1'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} +mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=32') + .replace('192.168.0', '192.168.1'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_toeplitz = [mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst, mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src, + mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src, + mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst, + mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src, + mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst, + mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src, mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst, + mac_ipv4_gtpu_eh_dl_ipv4_udp_all] + +mac_ipv4_gtpu_eh_ul_ipv4_udp_toeplitz = [eval(str(element).replace('(type=1', '(type=2') + .replace('(type=0', '(type=1').replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) + for element in mac_ipv4_gtpu_eh_dl_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_eh_ipv4_udp_toeplitz = mac_ipv4_gtpu_eh_dl_ipv4_udp_toeplitz + mac_ipv4_gtpu_eh_ul_ipv4_udp_toeplitz + +mac_ipv4_gtpu_eh_ipv4_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_eh_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_eh_dl_ipv6_basic = { + 'ipv6-nonfrag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'ipv6-frag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'ipv6-icmp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'ipv6-udp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/("X"*480)', + 'ipv6-tcp': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP()/("X"*480)', +} + +mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_basic).replace('ABAB', '1212')) +mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_basic).replace('CDCD', '3434')) + +mac_ipv4_gtpu_eh_dl_ipv6_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_l3src_only = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_l3dst_only) + .replace('mac_ipv4_gtpu_eh_dl_ipv6_l3dst', 'mac_ipv4_gtpu_eh_dl_ipv6_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) +mac_ipv4_gtpu_eh_dl_ipv6_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + ], + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_toeplitz = [mac_ipv4_gtpu_eh_dl_ipv6_l3dst_only, mac_ipv4_gtpu_eh_dl_ipv6_l3src_only, + mac_ipv4_gtpu_eh_dl_ipv6_all] + +mac_ipv4_gtpu_eh_ul_ipv6_toeplitz = [eval(str(element).replace('(type=1', '(type=2') + .replace('(type=0', '(type=1').replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) + for element in mac_ipv4_gtpu_eh_dl_ipv6_toeplitz] + +mac_ipv4_gtpu_eh_ipv6_toeplitz = mac_ipv4_gtpu_eh_dl_ipv6_toeplitz + mac_ipv4_gtpu_eh_ul_ipv6_toeplitz + +mac_ipv4_gtpu_eh_dl_ipv6_udp_basic = 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst) + .replace('mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst', 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} +mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32') + .replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash_different', + }, + ] +} +mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=32') + .replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash_or_different', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_toeplitz = [mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst, mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src, + mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src, + mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst, + mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src, + mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst, + mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src, mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst, + mac_ipv4_gtpu_eh_dl_ipv6_udp_all] +mac_ipv4_gtpu_eh_ul_ipv6_udp_toeplitz = [eval(str(element).replace('(type=1', '(type=2') + .replace('(type=0', '(type=1').replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) + for element in mac_ipv4_gtpu_eh_dl_ipv6_udp_toeplitz] +mac_ipv4_gtpu_eh_ipv6_udp_toeplitz = mac_ipv4_gtpu_eh_dl_ipv6_udp_toeplitz + mac_ipv4_gtpu_eh_ul_ipv6_udp_toeplitz + +mac_ipv4_gtpu_eh_ipv6_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_eh_ipv6_udp_toeplitz] + +inner_l4_mac_ipv4_gtpu_ipv4_udp_tcp = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_tcp', + 'port_id': 0, + 'rule': [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + ], + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'save_or_no_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same_or_no_hash', + }, + ] +} +inner_l4_mac_ipv6_gtpu_ipv4_udp_tcp = eval(str(inner_l4_mac_ipv4_gtpu_ipv4_udp_tcp) + .replace('eth / ipv4', 'eth / ipv6') + .replace('gtpu / ipv4', 'gtpu / gtp_psc / ipv4') + .replace('IP()', 'IPv6()') + .replace('teid=0x123456)', 'teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)') + .replace('mac_ipv4', 'mac_ipv6')) +inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp = { + 'sub_casename': 'inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp', + 'port_id': 0, + 'rule': [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end', + ], + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'save_or_no_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same_or_no_hash', + }, + ] +} +inner_l4_mac_ipv6_gtpu_eh_ipv6_udp_tcp = eval(str(inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp) + .replace('eth / ipv4', 'eth / ipv6') + .replace('pdu_t is 0', 'pdu_t is 1') + .replace('(type=0', '(type=1') + .replace('IP()', 'IPv6()') + .replace('mac_ipv4', 'mac_ipv6')) +inner_l4_protocal_hash = [inner_l4_mac_ipv4_gtpu_ipv4_udp_tcp, inner_l4_mac_ipv6_gtpu_ipv4_udp_tcp, + inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp, inner_l4_mac_ipv6_gtpu_eh_ipv6_udp_tcp] + +mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1",frag=6)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash': 'ipv4-udp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different', 'ipv4-udp'}, + }, + ], +} + +mac_ipv4_gtpu_eh_ipv6_without_ul_dl_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric) + .replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('types ipv4', 'types ipv6') + .replace('gtpu_eh_ipv4', 'gtpu_eh_ipv6') + .replace(',frag=6)', ')/IPv6ExtHdrFragment()') + .replace('IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(dst="192.168.1.1", src="192.168.1.2"',) + .replace('IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(src="192.168.1.1", dst="192.168.1.2"',) + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + ) + +mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash': 'udp-dl'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash': 'udp-ul'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different', 'udp-dl'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different', 'udp-ul'}, + }, + ], +} +mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric) + .replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('types ipv4', 'types ipv6') + .replace('gtpu_eh_ipv4', 'gtpu_eh_ipv6') + .replace('IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(dst="192.168.1.1", src="192.168.1.2"',) + .replace('IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(src="192.168.1.1", dst="192.168.1.2"',) + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + ) + +mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash': 'udp-dl'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash': 'udp-ul'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different', 'udp-dl'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': {'check_no_hash_or_different', 'udp-ul'}, + }, + ], +} + +mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric) + .replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('types ipv4', 'types ipv6') + .replace('gtpu_eh_ipv4', 'gtpu_eh_ipv6') + .replace('IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(dst="192.168.1.1", src="192.168.1.2"',) + .replace('IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(src="192.168.1.1", dst="192.168.1.2"',) + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + ) + +# iavf rss gtpc gtpu +# matched basic pkt +mac_ipv4_gtpu_basic_pkt = { + 'ipv4-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv4-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv4-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv4-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()', + ], + 'vlan-ipv4-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'vlan-ipv4-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'vlan-ipv4-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv4-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()', + ], +} + +mac_ipv6_gtpu_basic_pkt = { + 'ipv6-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv6-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv6-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv6-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv6-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'vlan-ipv6-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'vlan-ipv6-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv6-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], +} + +mac_ipv4_gtpc_basic_pkt = { + 'ipv4-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv4-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'ipv4-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'ipv4-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'ipv4-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'ipv4-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'ipv4-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'ipv4-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'ipv4-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()', + ], + 'ipv4-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + 'vlan-ipv4-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv4-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv4-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'vlan-ipv4-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ] +} + +mac_ipv6_gtpc_basic_pkt = { + 'ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv6-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'ipv6-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'ipv6-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'ipv6-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'ipv6-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'ipv6-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'ipv6-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'ipv6-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'ipv6-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + 'vlan-ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv6-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv6-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'vlan-ipv6-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ] +} + +# mismatched basic pkt + +mac_ipv4_gtpu_mismatched_pkt = { + 'ipv4-gtpu-eh-ipv4': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678, gtp_type=255)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + ], + 'ipv4-gtpu-ipv4': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678, gtp_type=255)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + ], + 'ipv4-gtpu-eh-ipv6': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678, gtp_type=255)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + ], + 'ipv4-gtpu-ipv6': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678, gtp_type=255)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + ], + 'ipv6-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv6-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv4-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ] +} + +mac_ipv6_gtpu_mismatched_pkt = { + 'ipv6-gtpu-eh-ipv4': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + ], + 'ipv6-gtpu-ipv4': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + ], + 'ipv6-gtpu-eh-ipv6': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + ], + 'ipv6-gtpu-ipv6': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + ], + 'ipv4-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv4-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], +} + +mac_ipv4_gtpc_mismatched_pkt = { + 'ipv4-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv4-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv4-gtpu-ipv4': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678, gtp_type=255)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + ], + 'ipv4-gtpu-ipv6': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678, gtp_type=255)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + ], + 'ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ] +} + +mac_ipv6_gtpc_mismatched_pkt = { + 'ipv6-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv6-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv6-gtpu-ipv4': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + ], + 'ipv6-gtpu-ipv6': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + ], + 'ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ] +} + +# matched change pkt + +mac_ipv4_gtpu_l3src_only_changed = { + 'ipv4-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv4-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv4-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv4-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()', + ], + 'vlan-ipv4-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'vlan-ipv4-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'vlan-ipv4-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv4-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()', + ], +} + +mac_ipv4_gtpu_l3dst_only_changed = { + 'ipv4-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv4-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv4-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv4-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()', + ], + 'vlan-ipv4-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'vlan-ipv4-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'vlan-ipv4-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv4-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()', + ], +} + +mac_ipv6_gtpu_l3src_only_changed = { + 'ipv6-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv6-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv6-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv6-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv6-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'vlan-ipv6-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'vlan-ipv6-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv6-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], +} + +mac_ipv6_gtpu_l3dst_only_changed = { + 'ipv6-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'ipv6-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'ipv6-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv6-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv6-gtpu-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + ], + 'vlan-ipv6-gtpu-eh-pay': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + ], + 'vlan-ipv6-gtpu-echo-request': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv6-gtpu-echo-reponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], +} + +mac_ipv4_gtpc_l3src_only_changed = { + 'ipv4-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv4-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'ipv4-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'ipv4-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'ipv4-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'ipv4-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'ipv4-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'ipv4-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'ipv4-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()', + ], + 'ipv4-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + 'vlan-ipv4-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv4-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv4-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'vlan-ipv4-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + +} + +mac_ipv4_gtpc_l3dst_only_changed = { + 'ipv4-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv4-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'ipv4-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'ipv4-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'ipv4-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'ipv4-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'ipv4-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'ipv4-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'ipv4-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'ipv4-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + 'vlan-ipv4-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv4-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv4-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'vlan-ipv4-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'vlan-ipv4-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'vlan-ipv4-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + +} + +mac_ipv6_gtpc_l3src_only_changed = { + 'ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv6-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'ipv6-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'ipv6-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'ipv6-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'ipv6-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'ipv6-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'ipv6-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'ipv6-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'ipv6-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + 'vlan-ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv6-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv6-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'vlan-ipv6-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + +} + +mac_ipv6_gtpc_l3dst_only_changed = { + 'ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'ipv6-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'ipv6-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'ipv6-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'ipv6-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'ipv6-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'ipv6-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'ipv6-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'ipv6-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'ipv6-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + 'vlan-ipv6-gtpc-EchoRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + ], + 'vlan-ipv6-gtpc-EchoEesponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + ], + 'vlan-ipv6-gtpc-CreatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-CreatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-UpdatePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-UpdatePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-DeletePDPContextRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + ], + 'vlan-ipv6-gtpc-DeletePDPContextResponse': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + ], + 'vlan-ipv6-gtpc-PDUNotificationRequest': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + ], + 'vlan-ipv6-gtpc-SupportedExtensionHeadersNotification': [ + 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + ], + +} + +# subcase + +mac_ipv4_gtpu_l3src_only = { + 'sub_casename': 'mac_ipv4_gtpu_l3src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / end actions rss types ipv4 l3-src-only end ' + 'key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash': 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['ipv4-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['ipv4-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-request'], + 'action': {'save_hash': 'ipv4-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['ipv4-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-reponse'], + 'action': {'save_hash': 'ipv4-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['ipv4-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-pay'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['vlan-ipv4-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['vlan-ipv4-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-request'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['vlan-ipv4-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-reponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['vlan-ipv4-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + # send mismatched pkt + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-eh-ipv4'], + 'action': 'check_no_hash', + #'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683, gtp_type=255)/GTPPDUSessionContainer(type=1, P=1, QFI=0x35)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv4'], + 'action': 'check_no_hash', + #'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-eh-ipv6'], + 'action': 'check_no_hash', + #'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/GTPPDUSessionContainer(type=0, P=1, QFI=0x55)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv6'], + 'action': 'check_no_hash', + #'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.5")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-pay'], + #'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-eh-pay'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpc-EchoRequest'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-pay'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-eh-pay'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-request'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-reponse'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-pay'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-eh-pay'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-request'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-reponse'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv4_gtpu_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_l3dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / end actions rss types ipv4 l3-dst-only end ' + 'key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash': 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['ipv4-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['ipv4-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': {'check_hash_same': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-request'], + 'action': {'save_hash': 'ipv4-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['ipv4-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-reponse'], + 'action': {'save_hash': 'ipv4-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['ipv4-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=27,dport=2152)/GTP_U_Header(teid=0x12345685,gtp_type=0x01)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-pay'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['vlan-ipv4-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['vlan-ipv4-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-request'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['vlan-ipv4-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-reponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['vlan-ipv4-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + # send mismatched pkt + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-eh-ipv4'], + 'action': 'check_no_hash', + # 'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv4'], + 'action': 'check_no_hash', + # 'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-eh-ipv6'], + 'action': 'check_no_hash', + # 'action': {'save_hash': 'ipv4-gtpu-eh-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/GTPPDUSessionContainer(type=0, P=1, QFI=0x55)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv6'], + 'action': 'check_no_hash', + # 'action': {'save_hash': 'ipv4-gtpu-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-pay'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-eh-pay'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpc-EchoRequest'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-pay'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-eh-pay'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-request'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-reponse'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-pay'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-eh-pay'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-request'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-reponse'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv4_gtpu_l3_src_only_l3_dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_l3_src_only_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash': 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['ipv4-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['ipv4-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['ipv4-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['ipv4-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': {'check_hash_different': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345691,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-request'], + 'action': {'save_hash': 'ipv4-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['ipv4-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['ipv4-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345691,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-reponse'], + 'action': {'save_hash': 'ipv4-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['ipv4-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['ipv4-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-pay'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['vlan-ipv4-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['vlan-ipv4-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['vlan-ipv4-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['vlan-ipv4-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-request'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['vlan-ipv4-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['vlan-ipv4-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=21,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-reponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv4_gtpu_l3dst_only_changed['vlan-ipv4-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_l3src_only_changed['vlan-ipv4-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-eh-ipv4'], + 'action': 'check_no_hash', + # 'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv4'], + 'action': 'check_no_hash', + # 'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-eh-ipv6'], + 'action': 'check_no_hash', + # 'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/GTPPDUSessionContainer(type=0, P=1, QFI=0x55)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv6'], + 'action': 'check_no_hash', + # 'action': {'save_hash': 'ipv4-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + # not support 20.11 + { + #'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-pay'], + # 'action': 'check_no_hash', + }, + { + #'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-eh-pay'], + # 'action': 'check_no_hash', + }, + { + #'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpc-EchoRequest'], + # 'action': 'check_no_hash', + }, + ], + # not support 20.11 + 'post-test': [ + { + ''' + 'send_packet': [ + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-pay'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-eh-pay'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-request'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-reponse'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-pay'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-eh-pay'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-request'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-reponse'][0], + ], + 'action': 'check_no_hash', + ''' + }, + ], +} + +mac_ipv6_gtpu_l3src_only = { + 'sub_casename': 'mac_ipv6_gtpu_l3src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-pay'], + 'action': {'save_hash': 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['ipv6-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345691,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['ipv6-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-request'], + 'action': {'save_hash': 'ipv6-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['ipv6-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-reponse'], + 'action': {'save_hash': 'ipv6-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['ipv6-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-pay'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['vlan-ipv6-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['vlan-ipv6-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x44)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-request'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['vlan-ipv6-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-reponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['vlan-ipv6-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-eh-ipv4'], + #'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/GTPPDUSessionContainer(type=0, P=1, QFI=0x55)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv4'], + #'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-eh-ipv6'], + #'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-eh-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2930",dst="CDCD:910A:2222:5498:8475:1111:3900:2055")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv6'], + #'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2930",dst="CDCD:910A:2222:5498:8475:1111:3900:2055")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-pay'], + #'action': 'check_no_hash', + 'action': {'save_hash': 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-eh-pay'], + #'action': 'check_no_hash', + 'action': {'save_hash': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpc-EchoRequest'], + #'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-pay'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-eh-pay'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-request'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-reponse'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-pay'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-eh-pay'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-request'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-reponse'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv6_gtpu_l3dst_only = { + 'sub_casename': 'mac_ipv6_gtpu_l3dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-pay'], + 'action': {'save_hash': 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['ipv6-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['ipv6-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-request'], + 'action': {'save_hash': 'ipv6-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['ipv6-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-reponse'], + 'action': {'save_hash': 'ipv6-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['ipv6-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345691,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-pay'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['vlan-ipv6-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=7)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['vlan-ipv6-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-request'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['vlan-ipv6-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-reponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['vlan-ipv6-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-eh-ipv4'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/GTPPDUSessionContainer(type=0, P=1, QFI=0x55)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv4'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-eh-ipv6'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-eh-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2930",dst="CDCD:910A:2222:5498:8475:1111:3900:2091")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv6'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpu-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2930",dst="CDCD:910A:2222:5498:8475:1111:3900:2091")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-pay'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-eh-pay'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpc-EchoRequest'], + # 'action': 'check_no_hash', + 'action': {'save_hash': 'ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-pay'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-eh-pay'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-request'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-reponse'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-pay'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-eh-pay'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-request'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-reponse'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv6_gtpu_l3_src_only_l3_dst_only = { + 'sub_casename': 'mac_ipv6_gtpu_l3_src_only_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / end actions rss types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-pay'], + 'action': {'save_hash': 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['ipv6-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['ipv6-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['ipv6-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['ipv6-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'heck_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=27,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-request'], + 'action': {'save_hash': 'ipv6-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['ipv6-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['ipv6-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-reponse'], + 'action': {'save_hash': 'ipv6-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['ipv6-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['ipv6-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-pay'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['vlan-ipv6-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['vlan-ipv6-gtpu-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345683,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['vlan-ipv6-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['vlan-ipv6-gtpu-eh-pay'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-request'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-echo-request'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['vlan-ipv6-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['vlan-ipv6-gtpu-echo-request'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-reponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-echo-reponse'}, + }, + { + 'send_packet': mac_ipv6_gtpu_l3dst_only_changed['vlan-ipv6-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_l3src_only_changed['vlan-ipv6-gtpu-echo-reponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + # mismatched pkt + # not support 20.11 + { + # 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-eh-ipv4'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv4'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-eh-ipv6'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv6'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-pay'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-eh-pay'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpc-EchoRequest'], + # 'action': 'check_no_hash', + }, + ], + # not support 20.11 + 'post-test': [ + { + ''' + 'send_packet': [ + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-pay'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-eh-pay'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-request'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-reponse'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-pay'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-eh-pay'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-request'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-reponse'][0], + ], + 'action': 'check_no_hash', + ''' + }, + ], +} + +mac_ipv4_gtpc_l3src_only = { + 'sub_casename': 'mac_ipv4_gtpc_l3src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpc / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoEesponse'], + 'action': {'save_hash': 'ipv4-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'ipv4-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x27)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'ipv4-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoEesponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash', 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-eh-pay'], + 'action': {'save_hash', 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-ipv4'], + 'action': 'check_no_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-ipv6'], + 'action': 'check_no_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash', 'ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoEesponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-PDUNotificationRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-SupportedExtensionHeadersNotification'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoEesponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-PDUNotificationRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv4_gtpc_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpc_l3dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpc / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end ', + 'test': [ + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoEesponse'], + 'action': {'save_hash': 'ipv4-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'ipv4-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'ipv4-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoEesponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.3", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash': 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-ipv4'], + # 'action': {'save_hash': 'ipv4-gtpu-ipv4'}, + 'action': 'check_no_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-ipv6'], + 'action': 'check_no_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash', 'ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoEesponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-PDUNotificationRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-SupportedExtensionHeadersNotification'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoEesponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-PDUNotificationRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv4_gtpc_l3_src_only_l3_dst_only = { + 'sub_casename': 'mac_ipv4_gtpc_l3_src_only_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpc / end actions rss types ipv4 end key_len 0 queues end / end ', + 'test': [ + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoEesponse'], + 'action': {'save_hash': 'ipv4-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'ipv4-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'ipv4-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoEesponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv4_gtpc_l3dst_only_changed['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_l3src_only_changed['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.5", dst="192.168.1.7")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-ipv4'], + 'action': 'check_no_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-ipv6'], + 'action': 'check_no_hash', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682, gtp_type=255)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_no_hash', + }, + # not support 20.11 + { + # 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-pay'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-eh-pay'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv6-gtpc-EchoRequest'], + # 'action': 'check_no_hash', + }, + ], + # not support 20.11 + 'post-test': [ + { + ''' + 'send_packet': [ + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoEesponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-PDUNotificationRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-SupportedExtensionHeadersNotification'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoEesponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-PDUNotificationRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'][0], + ], + 'action': 'check_no_hash', + ''' + }, + ], +} + +mac_ipv6_gtpc_l3src_only = { + 'sub_casename': 'mac_ipv4_gtpc_l3src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / gtpc / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end ', + 'test': [ + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoEesponse'], + 'action': {'save_hash': 'ipv6-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'ipv6-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'ipv6-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoEesponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash', 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-eh-pay'], + 'action': {'save_hash', 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-ipv4'], + 'action': {'save_hash', 'ipv6-gtpu-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-ipv6'], + 'action': {'save_hash', 'ipv6-gtpu-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2930",dst="CDCD:910A:2222:5498:8475:1111:3900:2055")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpc-EchoRequest'], + 'action': {'save_hash', 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoEesponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-PDUNotificationRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-SupportedExtensionHeadersNotification'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoEesponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-PDUNotificationRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv6_gtpc_l3dst_only = { + 'sub_casename': 'mac_ipv6_gtpc_l3dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / gtpc / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end ', + 'test': [ + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoEesponse'], + 'action': {'save_hash': 'ipv6-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'ipv6-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'ipv6-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoEesponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=3)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-pay'], + 'action': {'save_hash', 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-eh-pay'], + 'action': {'save_hash', 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x55)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-ipv4'], + 'action': {'save_hash', 'ipv6-gtpu-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/IP(src="192.168.1.7", dst="192.168.1.9")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-ipv6'], + 'action': {'save_hash', 'ipv6-gtpu-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345682,gtp_type=255)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2930",dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpc-EchoRequest'], + 'action': {'save_hash', 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoEesponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-PDUNotificationRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-SupportedExtensionHeadersNotification'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoEesponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-PDUNotificationRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv6_gtpc_l3_src_only_l3_dst_only = { + 'sub_casename': 'mac_ipv6_gtpc_l3_src_only_l3_dst_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / gtpc / end actions rss types ipv6 end key_len 0 queues end / end ', + 'test': [ + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345683,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoEesponse'], + 'action': {'save_hash': 'ipv6-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'ipv6-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'ipv6-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-EchoRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoEesponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-EchoEesponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-EchoEesponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-CreatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-CreatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-UpdatePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-UpdatePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-DeletePDPContextRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-DeletePDPContextResponse'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-PDUNotificationRequest'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': mac_ipv6_gtpc_l3dst_only_changed['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_l3src_only_changed['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=5)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345682,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + # mismatched pkt + # not support 20.11 + { + # 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-pay'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-eh-pay'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-ipv4'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-ipv6'], + # 'action': 'check_no_hash', + }, + { + # 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv4-gtpc-EchoRequest'], + # 'action': 'check_no_hash', + }, + ], + # not support 20.11 + 'post-test': [ + { + ''' + 'send_packet': [ + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoEesponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-PDUNotificationRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-SupportedExtensionHeadersNotification'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoEesponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-PDUNotificationRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'][0], + ], + 'action': 'check_no_hash', + ''' + }, + ], +} + +mac_ipv4_gtpu_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash': 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-request'], + 'action': {'save_hash': 'ipv4-gtpu-echo-request'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-reponse'], + 'action': {'save_hash': 'ipv4-gtpu-echo-reponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-pay'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-request'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-echo-request'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-reponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpu-echo-reponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-eh-ipv4'], + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv4'], + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-eh-ipv6'], + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv6'], + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-pay'], + 'action': {'save_hash', 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-eh-pay'], + 'action': {'save_hash', 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash', 'ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-pay'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-eh-pay'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-request'][0], + mac_ipv4_gtpu_basic_pkt['ipv4-gtpu-echo-reponse'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-pay'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-eh-pay'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-request'][0], + mac_ipv4_gtpu_basic_pkt['vlan-ipv4-gtpu-echo-reponse'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv6_gtpu_symmetric = { + 'sub_casename': 'mac_ipv6_gtpu_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-pay'], + 'action': {'save_hash': 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-request'], + 'action': {'save_hash': 'ipv6-gtpu-echo-request'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-reponse'], + 'action': {'save_hash': 'ipv6-gtpu-echo-reponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-pay'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-request'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-echo-request'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-reponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpu-echo-reponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-eh-ipv4'], + 'action': {'save_hash', 'ipv6-gtpu-eh-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpc_mismatched_pkt['ipv6-gtpu-ipv4'], + 'action': {'save_hash', 'ipv6-gtpu-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-eh-ipv6'], + 'action': {'save_hash', 'ipv6-gtpu-eh-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv6'], + 'action': {'save_hash', 'ipv6-gtpu-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash', 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-eh-pay'], + 'action': {'save_hash', 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash', 'ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-pay'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-eh-pay'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-request'][0], + mac_ipv6_gtpu_basic_pkt['ipv6-gtpu-echo-reponse'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-pay'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-eh-pay'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-request'][0], + mac_ipv6_gtpu_basic_pkt['vlan-ipv6-gtpu-echo-reponse'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv4_gtpc_symmetric = { + 'sub_casename': 'mac_ipv4_gtpc_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpc / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoEesponse'], + 'action': {'save_hash': 'ipv4-gtpc-EchoEesponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'ipv4-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'ipv4-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'ipv4-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'ipv4-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoEesponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-EchoEesponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + # mismatched pkt + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv4'], + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpu-ipv6'], + 'action': 'check_no_hash', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv4-gtpu-pay'], + 'action': {'save_hash': 'ipv4-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv4-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv4-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpc_mismatched_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': ''}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-EchoEesponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-CreatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-UpdatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-DeletePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-PDUNotificationRequest'][0], + mac_ipv4_gtpc_basic_pkt['ipv4-gtpc-SupportedExtensionHeadersNotification'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-EchoEesponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-CreatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-UpdatePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-DeletePDPContextResponse'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-PDUNotificationRequest'][0], + mac_ipv4_gtpc_basic_pkt['vlan-ipv4-gtpc-SupportedExtensionHeadersNotification'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv6_gtpc_symmetric = { + 'sub_casename': 'mac_ipv6_gtpc_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / gtpc / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoEesponse'], + 'action': {'save_hash': 'ipv6-gtpc-EchoEesponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'ipv6-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'ipv6-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'ipv6-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'ipv6-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoEesponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-EchoEesponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-CreatePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-CreatePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-UpdatePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-UpdatePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-DeletePDPContextRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextResponse'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-DeletePDPContextResponse'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-PDUNotificationRequest'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-PDUNotificationRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()', + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'], + 'action': {'save_hash': 'vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()', + 'action': 'check_hash_same', + }, + # mismactched pkt + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv6'], + 'action': {'save_hash': 'ipv6-gtpu-ipv6'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv6_gtpu_mismatched_pkt['ipv6-gtpu-ipv4'], + 'action': {'save_hash': 'ipv6-gtpu-ipv4'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=255)/IP(src="192.168.1.5", dst="192.168.1.7")/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-pay'], + 'action': {'save_hash': 'ipv6-gtpu-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv6-gtpu-eh-pay'], + 'action': {'save_hash': 'ipv6-gtpu-eh-pay'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)', + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_mismatched_pkt['ipv4-gtpc-EchoRequest'], + 'action': {'save_hash': 'ipv4-gtpc-EchoRequest'}, + }, + { + 'send_packet': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-EchoEesponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-CreatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-UpdatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-DeletePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-PDUNotificationRequest'][0], + mac_ipv6_gtpc_basic_pkt['ipv6-gtpc-SupportedExtensionHeadersNotification'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-EchoEesponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-CreatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-UpdatePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-DeletePDPContextResponse'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-PDUNotificationRequest'][0], + mac_ipv6_gtpc_basic_pkt['vlan-ipv6-gtpc-SupportedExtensionHeadersNotification'][0], + ], + 'action': 'check_hash_different', + }, + ], +} + +mac_ipv4_gtpu_toeplitz = [mac_ipv4_gtpu_l3src_only, mac_ipv4_gtpu_l3dst_only, mac_ipv4_gtpu_l3_src_only_l3_dst_only] +mac_ipv6_gtpu_toeplitz = [mac_ipv6_gtpu_l3src_only, mac_ipv6_gtpu_l3dst_only, mac_ipv6_gtpu_l3_src_only_l3_dst_only] +mac_ipv4_gtpc_toeplitz = [mac_ipv4_gtpc_l3src_only, mac_ipv4_gtpc_l3dst_only, mac_ipv4_gtpc_l3_src_only_l3_dst_only] +mac_ipv6_gtpc_toeplitz = [mac_ipv6_gtpc_l3src_only, mac_ipv6_gtpc_l3dst_only, mac_ipv6_gtpc_l3_src_only_l3_dst_only] +mac_ipv4_gtpu_symmetric_toeplitz = [mac_ipv4_gtpu_symmetric] +mac_ipv6_gtpu_symmetric_toeplitz = [mac_ipv6_gtpu_symmetric] +mac_ipv4_gtpc_symmetric_toeplitz = [mac_ipv4_gtpc_symmetric] +mac_ipv6_gtpc_symmetric_toeplitz = [mac_ipv6_gtpc_symmetric] + + +class TestCVLAdvancedIAVFRSSGTPU(TestCase): + + def set_up_all(self): + """ + Run at the start of each test suite. + prerequisites. + """ + # Based on h/w type, choose how many ports to use + self.dut_ports = self.dut.get_ports(self.nic) + self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing") + # Verify that enough threads are available + cores = self.dut.get_core_list("1S/4C/1T") + self.verify(cores is not None, "Insufficient cores for speed testing") + self.ports_socket = self.dut.get_numa_id(self.dut_ports[0]) + self.tester_port0 = self.tester.get_local_port(self.dut_ports[0]) + self.tester_port1 = self.tester.get_local_port(self.dut_ports[1]) + self.tester_iface0 = self.tester.get_interface(self.tester_port0) + self.tester_iface1 = self.tester.get_interface(self.tester_port1) + self.pci0 = self.dut.ports_info[self.dut_ports[0]]['pci'] + self.pci1 = self.dut.ports_info[self.dut_ports[1]]['pci'] + self.pf0_intf = self.dut.ports_info[self.dut_ports[0]]['intf'] + + self.vf_driver = self.get_suite_cfg()['vf_driver'] + if self.vf_driver is None: + self.vf_driver = 'vfio-pci' + self.used_dut_port_0 = self.dut_ports[0] + self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, 1, driver=self.kdriver) + self.sriov_vfs_port = self.dut.ports_info[self.used_dut_port_0]['vfs_port'] + self.dut.send_expect('ip link set %s vf 0 mac 00:11:22:33:44:55' % self.pf0_intf, '#') + self.vf0_pci = self.sriov_vfs_port[0].pci + for port in self.sriov_vfs_port: + port.bind_driver(self.vf_driver) + + self.pkt = Packet() + self.pmd_output = PmdOutput(self.dut) + self.launch_testpmd() + self.symmetric = False + self.rxq = 16 + self.rssprocess = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq) + self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rssprocess.tester_ifaces)) + self.logger.info('rssprocess.test_case: {}'.format(self.rssprocess.test_case)) + + def set_up(self): + """ + Run before each test case. + """ + self.pmd_output.execute_cmd("start") + + def destroy_vf(self): + self.dut.send_expect("quit", "# ", 60) + time.sleep(2) + self.dut.destroy_sriov_vfs_by_port(self.dut_ports[0]) + + def launch_testpmd(self, symmetric=False): + if symmetric: + param = "--rxq=16 --txq=16" + else: + # if support add --disable-rss + param = "--rxq=16 --txq=16" + self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param, + eal_param=f"-w {self.vf0_pci}", socket=self.ports_socket) + ''' + self.symmetric = symmetric + if symmetric: + # Need config rss in setup + self.pmd_output.execute_cmd("port config all rss all") + ''' + self.pmd_output.execute_cmd("set fwd rxonly") + self.pmd_output.execute_cmd("set verbose 1") + res = self.pmd_output.wait_link_status_up('all', timeout=15) + self.verify(res is True, 'there have port link is down') + + def switch_testpmd(self, symmetric=True): + if symmetric != self.symmetric: + self.pmd_output.quit() + self.launch_testpmd(symmetric=symmetric) + self.pmd_output.execute_cmd("start") + + def test_mac_ipv4_gtpu_ipv4(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_toeplitz) + + def test_mac_ipv4_gtpu_ipv4_udp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_udp_toeplitz) + + def test_mac_ipv4_gtpu_ipv4_tcp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_tcp_toeplitz) + + def test_mac_ipv4_gtpu_ipv6(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_toeplitz) + + def test_mac_ipv4_gtpu_ipv6_udp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_udp_toeplitz) + + def test_mac_ipv4_gtpu_ipv6_tcp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_tcp_toeplitz) + + def test_mac_ipv6_gtpu_ipv4(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv4_udp(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_udp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv4_tcp(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_tcp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_udp(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_udp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_tcp(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_tcp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_eh_ipv4(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv4_udp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_udp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv4_tcp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_tcp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_udp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_udp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_tcp(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_tcp_toeplitz) + + def test_mac_ipv6_gtpu_eh_ipv4(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_udp(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_udp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_tcp(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_tcp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_udp(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_udp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_tcp(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_tcp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_eh_ipv4_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv6_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv6_udp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz) + + def test_mac_ipv6_gtpu_eh_ipv4_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_udp_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_tcp_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv6_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_udp_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv6_udp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_tcp_without_ul_dl(self): + self.switch_testpmd(symmetric=False) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_ipv4_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_symmetric) + + def test_mac_ipv4_gtpu_ipv4_udp_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_udp_symmetric) + + def test_mac_ipv4_gtpu_ipv4_tcp_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_tcp_symmetric) + + def test_mac_ipv4_gtpu_ipv6_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_symmetric) + + def test_mac_ipv4_gtpu_ipv6_udp_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_udp_symmetric) + + def test_mac_ipv4_gtpu_ipv6_tcp_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_tcp_symmetric) + + def test_mac_ipv6_gtpu_ipv4_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv4_udp_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_udp_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv4_tcp_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_tcp_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_udp_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_udp_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_tcp_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_tcp_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_eh_ipv4_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv4_udp_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_udp_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv4_tcp_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_tcp_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_udp_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_udp_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_tcp_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_tcp_symmetric) + + def test_mac_ipv6_gtpu_eh_ipv4_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_udp_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_tcp_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_tcp_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_tcp_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_symmetric) + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_udp_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_tcp_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_tcp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_tcp_symmetric) + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric) + + def test_mac_ipv6_gtpu_eh_ipv4_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_udp_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_without_ul_dl_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_udp_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric(self): + self.switch_testpmd(symmetric=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_inner_l4_protocal_hash(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=inner_l4_protocal_hash) + + def test_negative_cases(self): + negative_rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 gtpu end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types udp end key_len 0 queues end / end'] + self.rssprocess.create_rule(rule=negative_rules, check_stats=False, msg="Failed to create parser engine.: Invalid argument") + + def test_symmetric_negative_cases(self): + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types gtpu end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l4-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end' + ] + self.rssprocess.create_rule(rule=rules, check_stats=False) + + def test_stress_cases(self): + # Subcase: add/delete IPV4_GTPU_UL_IPV4_TCP rules + self.switch_testpmd() + rule1 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end' + for _ in range(100): + self.pmd_output.execute_cmd(rule1) + self.pmd_output.execute_cmd('flow destroy 0 rule 0') + rule_li = self.rssprocess.create_rule(rule=rule1) + out = self.pmd_output.execute_cmd('flow list 0') + p = re.compile("^(\d+)\s") + li = out.splitlines() + res = list(filter(bool, list(map(p.match, li)))) + result = [i.group(1) for i in res] + self.verify(result == rule_li, 'should only rule 0 existed') + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.1.1", dst="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/TCP(sport=32, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.1.2")/TCP(sport=22, dport=33)/("X"*480)', ] + output = self.rssprocess.send_pkt_get_output(pkts=pkts1) + hash_values1, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + self.verify(hash_values1[1] != hash_values1[0] and hash_values1[2] != hash_values1[0] and hash_values1[3] == + hash_values1[0], + 'packet 2 and packet 3 should have different hash value with packet 1, packet 4 should has same hash value with packet 1.') + self.pmd_output.execute_cmd('flow flush 0') + # Subcase: add/delete IPV4_GTPU_DL_IPV4 rules + rule2 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + for _ in range(100): + self.pmd_output.execute_cmd(rule2) + self.pmd_output.execute_cmd('flow destroy 0 rule 0') + rule_li = self.rssprocess.create_rule(rule=rule2) + out = self.pmd_output.execute_cmd('flow list 0') + p = re.compile("^(\d+)\s") + li = out.splitlines() + res = list(filter(bool, list(map(p.match, li)))) + result = [i.group(1) for i in res] + self.verify(result == rule_li, 'should only rule 0 existed') + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.1.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.1.1", dst="192.168.0.2")/("X"*480)', ] + output = self.rssprocess.send_pkt_get_output(pkts=pkts2) + hash_values2, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + self.verify(hash_values2[1] != hash_values2[0] and hash_values2[2] == hash_values2[0], + 'packet 2 should has different hash value with packet 1, packet 3 should has same hash value with packet 1.') + + def test_multirules(self): + self.switch_testpmd() + self.logger.info('Subcase: IPV4_GTPU_IPV4/IPV4_GTPU_EH_IPV4') + self.logger.info('Subcase: IPV4_GTPU_EH_IPV4 with/without UL/DL') + self.logger.info('Subcase: IPV4_GTPU_EH_IPV4 without/with UL/DL') + self.logger.info('Subcase: IPV4_GTPU_EH_IPV4 and IPV4_GTPU_EH_IPV4_UDP') + self.logger.info('Subcase: IPV6_GTPU_EH_IPV6 and IPV6_GTPU_EH_IPV6_TCP') + self.logger.info('Subcase: IPV4_GTPU_EH_IPV6 and IPV4_GTPU_EH_IPV6_UDP without UL/DL') + self.logger.info('Subcase: IPV6_GTPU_IPV4 and IPV6_GTPU_IPV4_TCP') + + def test_ipv4_gtpu_ipv4_ipv4_gtpu_eh_ipv4(self): + self.switch_testpmd() + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end' + ] + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)' + ] + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)' + ] + pkts3 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)' + ] + rule_li1 = self.rssprocess.create_rule(rule=rules[0]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts3) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_li1) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(all([i == '0' for i in hash_value]), + 'got wrong hash, expect not got rss hash and distribute to queue 0') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] != hash_value[1] and hash_value[0] == hash_value[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts3) + self.verify(hash_value[0] != hash_value[1] and hash_value[0] == hash_value[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + + self.rssprocess.create_rule(rule=rules[0]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] != hash_value[1] and hash_value[0] == hash_value[2], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_li2) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2 + pkts3) + self.verify(all([i == '0' for i in hash_value]), + 'got wrong hash, expect not got rss hash and distribute to queue 0') + + def test_ipv4_gtpu_eh_ipv4_with_without_ul_dl(self): + self.switch_testpmd(True) + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end'] + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)', + ] + + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)' + ] + + pkts3 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)' + ] + rule_li1 = self.rssprocess.create_rule(rule=rules[0]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts3) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_li2) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts3 + pkts2) + self.verify(all([i == '0' for i in hash_value]), + 'got wrong hash, expect not got rss hash and distribute to queue 0') + + def test_ipv4_gtpu_eh_ipv4_without_with_ul_dl(self): + self.switch_testpmd() + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + ] + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)' + ] + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)' + ] + pkts3 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)' + ] + rule1 = self.rssprocess.create_rule(rules[0]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + rule2 = self.rssprocess.create_rule(rules[1]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts3) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + self.rssprocess.destroy_rule(port_id=0, rule_id=rule1) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts1) + self.verify(all([i == '0' for i in hash_value]), + 'got wrong hash, expect not got rss hash and distribute to queue 0') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts3) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + + def test_ipv4_gtpu_eh_ipv4_and_ipv4_gtpu_eh_ipv4_udp(self): + self.switch_testpmd() + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22, dport=13)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.10.2")/UDP(sport=12, dport=23)/("X"*480)' + ] + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)' + ] + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end' + ] + + rule_li1 = self.rssprocess.create_rule(rule=rules[0]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + self.rssprocess.destroy_rule(rule_id=rule_li2) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + self.rssprocess.destroy_rule(rule_id=rule_li1) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + def test_ipv6_gtpu_eh_ipv6_and_ipv6_gtpu_eh_ipv6_tcp(self): + self.switch_testpmd() + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22, dport=13)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=12, dport=23)/("X"*480)', ] + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:1111")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:9999")/("X"*480)' + ] + + rules = [ + 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end' + ] + + rule_li1 = self.rssprocess.create_rule(rule=rules[0]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and 2rd') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[1] and hash_value[1] == hash_value[2], + 'except all hash same hash') + + self.rssprocess.destroy_rule(rule_id=rule_li2) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] != hash_value[1] and hash_value[2] != hash_value[1], + 'except all the packets hash different hash value') + + def test_ipv4_gtpu_eh_ipv6_and_ipv4_gtpu_eh_ipv6_udp_without_ul_dl(self): + self.switch_testpmd() + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/UDP(sport=22, dport=13)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:1111")/UDP(sport=12, dport=23)/("X"*480)' + ] + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:1111")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:9999")/("X"*480)' + ] + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end' + ] + + rule_li1 = self.rssprocess.create_rule(rule=rules[0]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[1] and hash_value[0] != hash_value[2], + 'got wrong hash, expect 1st hash equal to 2nd and different with 3rd') + + def test_ipv6_gtpu_ipv4_and_ipv6_gtpu_ipv4_tcp(self): + self.switch_testpmd() + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=12, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:1111")/TCP(sport=22, dport=13)/("X"*480)' + ] + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:9999")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:1111")/("X"*480)' + ] + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end' + ] + + rule_li1 = self.rssprocess.create_rule(rule=rules[0]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2) + self.verify(hash_value[0] == hash_value[2] and hash_value[0] != hash_value[1], + 'got wrong hash, expect 1st hash equal to 3nd and different with 2rd') + + hash_value, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_value[0] != hash_value[2] and hash_value[0] == hash_value[1], + 'got wrong hash, expect 1st hash equal to 2nd and different with 3rd') + + def test_toeplitz_symmetric_combination(self): + self.switch_testpmd() + self.logger.info('Subcase: toeplitz/symmetric with same pattern') + # step 1 + rule_toeplitz = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + pkts_toeplitz = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)'] + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + # step 2 + rule_symmetric = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end' + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + pkts_symmetric =[ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.8",dst="192.168.0.3",frag=6)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/ICMP()/("X"*480)', + ] + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'expect hash_value[0] == hash_value[1]') + self.verify(hash_value[2] == hash_value[3], 'expect hash_value[2] == hash_value[3]') + self.verify(hash_value[4] == hash_value[5], 'expect hash_value[4] == hash_value[5]') + # step 3 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + for temp in range(len(hash_value)): + self.verify(len(hash_value[temp]) != 0, 'all the toeplitz packet should have hash value') + #step 4 + self.rssprocess.destroy_rule(rule_id=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value) == 0, 'all the toeplitz packet should have no hash value') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + self.pmd_output.execute_cmd('flow flush 0') + + self.logger.info('Subcase: toeplitz/symmetric with same ptype different UL/DL') + # step 1 + rule_toeplitz = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + pkts_toeplitz = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/("X"*480)' + ] + rule_symmetric = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end' + pkts_symmetric = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.8",dst="192.168.0.3",frag=6)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/ICMP()/("X"*480)' + ] + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'expect hash_value[0] == hash_value[1]') + self.verify(hash_value[2] == hash_value[3], 'expect hash_value[2] == hash_value[3]') + self.verify(hash_value[4] == hash_value[5], 'expect hash_value[4] == hash_value[5]') + # step 2 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + # step 3 + self.rssprocess.destroy_rule(rule_id=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'expect hash_value[0] == hash_value[1]') + self.verify(hash_value[2] == hash_value[3], 'expect hash_value[2] == hash_value[3]') + self.verify(hash_value[4] == hash_value[5], 'expect hash_value[4] == hash_value[5]') + + self.rssprocess.destroy_rule(rule_id=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(all([i != '0' for i in hash_value]), 'expect symmetric also can work') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value) == 0, "except toeplitz cant't work") + self.pmd_output.execute_cmd('flow flush 0') + + self.logger.info('Subcase: toeplitz/symmetric with different pattern') + # step 1 + rule_toeplitz = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end' + pkts_toeplitz = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.10.1", dst="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=12, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.10.2")/UDP(sport=22, dport=13)/("X"*480)' + ] + rule_symmetric = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end' + pkts_symmetric = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888",dst="2222:3333:4444:5555:6666:7777:8888:9999")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="2222:3333:4444:5555:6666:7777:8888:9999",dst="1111:2222:3333:4444:5555:6666:7777:8888")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:ABCD",dst="1111:2222:3333:4444:5555:6666:7777:1234")/IPv6ExtHdrFragment()/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1234",dst="1111:2222:3333:4444:5555:6666:7777:ABCD")/IPv6ExtHdrFragment()/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1888",dst="2222:3333:4444:5555:6666:7777:8888:1999")/ICMP()/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="2222:3333:4444:5555:6666:7777:8888:1999",dst="1111:2222:3333:4444:5555:6666:7777:1888")/ICMP()/("X"*480)' + ] + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'hash_value[1] should hash value different from hash_value[0]') + self.verify(hash_value[2] != hash_value[0], 'hash_value[2] should hash value different with hash_value[0]') + self.verify(hash_value[3] == hash_value[0], 'hash_value[3] should hash value same with hash_value[0]') + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'expect hash_value[0] == hash_value[1]') + self.verify(hash_value[2] == hash_value[3], 'expect hash_value[2] == hash_value[3]') + self.verify(hash_value[4] == hash_value[5], 'expect hash_value[4] == hash_value[5]') + # step 2 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'hash_value[1] should hash value different from hash_value[0]') + self.verify(hash_value[2] != hash_value[0], 'hash_value[2] should hash value different with hash_value[0]') + self.verify(hash_value[3] == hash_value[0], 'hash_value[3] should hash value same with hash_value[0]') + # step 3 + self.rssprocess.destroy_rule(rule_id=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + if len(hash_value) != 0: + self.verify(hash_value[0] != hash_value[1] and hash_value[2] != hash_value[3] and hash_value[4] != hash_value[5], + 'except symmetric not work') + else: + self.verify(len(hash_value) == 0, 'except symmetric not work') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'hash_value[1] should hash value different from hash_value[0]') + self.verify(hash_value[2] != hash_value[0], 'hash_value[2] should hash value different with hash_value[0]') + self.verify(hash_value[3] == hash_value[0], 'hash_value[3] should hash value same with hash_value[0]') + # step 4 + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'expect hash_value[0] == hash_value[1]') + self.verify(hash_value[2] == hash_value[3], 'expect hash_value[2] == hash_value[3]') + self.verify(hash_value[4] == hash_value[5], 'expect hash_value[4] == hash_value[5]') + # step 5 + self.rssprocess.destroy_rule(rule_id=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'expect hash_value[0] == hash_value[1]') + self.verify(hash_value[2] == hash_value[3], 'expect hash_value[2] == hash_value[3]') + self.verify(hash_value[4] == hash_value[5], 'expect hash_value[4] == hash_value[5]') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[0] != hash_value[1] and hash_value[2] != hash_value[3] and hash_value[4] != hash_value[5], + 'except symmetric not work') + self.pmd_output.execute_cmd('flow flush 0') + + self.logger.info('Subcase: toeplitz/symmetric with different pattern (with/without UL/DL)') + # step 1 + rule_toeplitz = 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end' + pkts_toeplitz = [ + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:1111")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=12, dport=13)/("X"*480)' + ] + rule_symmetric = 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end' + pkts_symmetric = [ + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=12, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:1111")/TCP(sport=22, dport=13)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=12, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:1111")/TCP(sport=22, dport=13)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888", dst="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=12, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(P=1, QFI=0x34)/IPv6(src="1111:2222:3333:4444:5555:6666:7777:1111", dst="2222:3333:4444:5555:6666:7777:8888:1111")/TCP(sport=22, dport=13)/("X"*480)' + ] + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'hash_value[1] should hash value different from hash_value[0]') + self.verify(hash_value[2] != hash_value[0], 'hash_value[2] should hash value different with hash_value[0]') + self.verify(hash_value[3] == hash_value[0], 'hash_value[3] should hash value same from hash_value[0]') + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[1] != hash_value[0] and hash_value[2] == hash_value[0], + 'hash_value[0] should hash value different from hash_value[1] and equal to hash_value[2]') + self.verify(hash_value[4] != hash_value[3] and hash_value[5] == hash_value[3], + 'hash_value[3] should hash value different from hash_value[4] and equal to hash_value[5]') + self.verify(hash_value[6] != hash_value[7] and hash_value[6] == hash_value[8], + 'hash_value[6] should hash value different from hash_value[7] and equal to hash_value[8]') + # step 2 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + # step 3 + self.rssprocess.destroy_rule(rule_id=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + self.pmd_output.execute_cmd('flow flush 0') + + # vf rss gtpc gtpu + def test_mac_ipv4_gtpu(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_toeplitz) + + def test_mac_ipv6_gtpu(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gtpu_toeplitz) + + def test_mac_ipv4_gtpc(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpc_toeplitz) + + def test_mac_ipv6_gtpc(self): + self.switch_testpmd(symmetric=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gtpc_toeplitz) + + def test_mac_ipv4_gtpu_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_symmetric_toeplitz) + + def test_mac_ipv6_gtpu_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gtpu_symmetric_toeplitz) + + def test_mac_ipv4_gtpc_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpc_symmetric_toeplitz) + + def test_mac_ipv6_gtpc_symmetric(self): + self.switch_testpmd(symmetric=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gtpc_symmetric_toeplitz) + + def tear_down(self): + # destroy all flow rule on port 0 + self.dut.send_command("flow flush 0", timeout=1) + self.dut.send_command("clear port stats all", timeout=1) + self.pmd_output.execute_cmd("stop") + + def tear_down_all(self): + self.destroy_vf() + self.dut.kill_all() From patchwork Tue Nov 3 08:36:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhao, HaiyangX" X-Patchwork-Id: 83512 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A42CCA0521; Tue, 3 Nov 2020 09:38:53 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 84239C872; Tue, 3 Nov 2020 09:38:45 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id AD112C80C for ; Tue, 3 Nov 2020 09:38:42 +0100 (CET) IronPort-SDR: AWDtSMjQfR40iL4od+aSAqQyNb/TiwBmH7zEm4+04N0XdS+MgMy6nsByqOvVw3APjKyyRM8XyE jwpgMhTBLV8w== X-IronPort-AV: E=McAfee;i="6000,8403,9793"; a="156798055" X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="156798055" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:41 -0800 IronPort-SDR: KNF0QVKSmOHyjSA5hzX1O0yJdRp4z0soYB37aP288RagraV+D5+ED1nicwEVGgoYg5pCE3yTgG TGwiz+1tRGNw== X-IronPort-AV: E=Sophos;i="5.77,447,1596524400"; d="scan'208";a="305734324" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 00:38:39 -0800 From: Haiyang Zhao To: dts@dpdk.org, qi.fu@intel.com Cc: Haiyang Zhao Date: Tue, 3 Nov 2020 16:36:56 +0800 Message-Id: <20201103083656.16541-9-haiyangx.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201103083656.16541-1-haiyangx.zhao@intel.com> References: <20201103083656.16541-1-haiyangx.zhao@intel.com> Subject: [dts] [PATCH V4 8/8] tests/cvl_advanced_rss_gtpu: add cvl_advanced_rss_gtpu X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" *.add CVL PF rss gtpu cases. Signed-off-by: Haiyang Zhao Tested-by: Haiyang Zhao --- tests/TestSuite_cvl_advanced_rss_gtpu.py | 5294 ++++++++++++++++++++++ 1 file changed, 5294 insertions(+) create mode 100755 tests/TestSuite_cvl_advanced_rss_gtpu.py diff --git a/tests/TestSuite_cvl_advanced_rss_gtpu.py b/tests/TestSuite_cvl_advanced_rss_gtpu.py new file mode 100755 index 0000000..c92ff6a --- /dev/null +++ b/tests/TestSuite_cvl_advanced_rss_gtpu.py @@ -0,0 +1,5294 @@ +# BSD LICENSE +# +# Copyright(c) 2020 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +import re +import time +from packet import Packet +from pmd_output import PmdOutput +from test_case import TestCase +from rte_flow_common import RssProcessing + + +mac_ipv4_gtpu_ipv4_basic = { + 'ipv4-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'ipv4-frag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'ipv4-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', +} + +mac_ipv4_gtpu_ipv4_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_ipv4_basic).replace('192.168.0.2', '192.168.1.2')) +mac_ipv4_gtpu_ipv4_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_ipv4_basic).replace('192.168.0.1', '192.168.1.1')) +mac_ipv4_gtpu_ipv4_unmatched_pkt = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', +] + +mac_ipv4_gtpu_ipv4_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_l3src_only = eval(str(mac_ipv4_gtpu_ipv4_l3dst_only) + .replace('mac_ipv4_gtpu_ipv4_l3dst', 'mac_ipv4_gtpu_ipv4_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) +mac_ipv4_gtpu_ipv4_all = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_toeplitz = [mac_ipv4_gtpu_ipv4_l3dst_only, mac_ipv4_gtpu_ipv4_l3src_only, + mac_ipv4_gtpu_ipv4_all, mac_ipv4_gtpu_ipv4_gtpu] + +mac_ipv4_gtpu_ipv4_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': {'save_hash': 'nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': {'save_hash': 'frag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'save_hash': 'icmp'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_same', + }, + { # unmatch MAC_IPV4_GTPU_IPV6 nonfrag + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': 'check_hash_different', + }, + { # unmatch MAC_IPV4_GTPU_EH_IPV4 + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { # unmatch MAC_IPV4_GTPU_EH_IPV4 + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': {'check_no_hash_or_different': 'nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': {'check_no_hash_or_different': 'nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': {'check_no_hash_or_different': 'frag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': {'check_no_hash_or_different': 'frag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'icmp'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'icmp'}, + }, + ], +} + +mac_ipv4_gtpu_ipv6_symmetric = eval(str(mac_ipv4_gtpu_ipv4_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace(', frag=6)', ')/IPv6ExtHdrFragment()') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('gtpu / ipv4', 'gtpu / ipv6').replace('types ipv4', 'types ipv6') + ) + +mac_ipv4_gtpu_ipv4_udp_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash': 'basic_with_rule'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'check_hash_different': 'basic_with_rule'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': {'check_hash_different': 'basic_with_rule'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'check_hash_different': 'basic_with_rule'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': {'check_hash_different': 'basic_with_rule'}, + }, + ], +} + +mac_ipv4_gtpu_ipv6_udp_symmetric = eval(str(mac_ipv4_gtpu_ipv4_udp_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('gtpu / ipv4', 'gtpu / ipv6').replace('types ipv4-udp', 'types ipv6-udp') + ) + +mac_ipv4_gtpu_ipv4_tcp_symmetric = eval(str(mac_ipv4_gtpu_ipv4_udp_symmetric).replace('TCP(', 'TCP1(') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('udp / end', 'tcp / end ').replace('ipv4-udp', 'ipv4-tcp') + .replace('udp_symmetric', 'tcp_symmetric')) + +mac_ipv4_gtpu_ipv6_tcp_symmetric = eval(str(mac_ipv4_gtpu_ipv4_tcp_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('gtpu / ipv4', 'gtpu / ipv6').replace('types ipv4-tcp', 'types ipv6-tcp') + ) + +mac_ipv4_gtpu_eh_dl_ipv4_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': 'save_or_no_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'action': 'save_or_no_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1", frag=6)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': 'save_or_no_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + 'action': 'save_or_no_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + ], +} +mac_ipv4_gtpu_eh_ul_ipv4_symmetric = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_symmetric) + .replace('(type=1', '(type=2') + .replace('(type=0', '(type=1') + .replace('(type=2', '(type=0') + .replace('eh_dl', 'eh_ul') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + ) + +mac_ipv4_gtpu_eh_ipv4_symmetric = [mac_ipv4_gtpu_eh_dl_ipv4_symmetric, mac_ipv4_gtpu_eh_ul_ipv4_symmetric] + +mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_no_hash_or_different', + }, + ], +} +mac_ipv4_gtpu_eh_ul_ipv4_udp_symmetric = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric) + .replace('(type=1', '(type=2') + .replace('(type=0', '(type=1') + .replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) +mac_ipv4_gtpu_eh_ipv4_udp_symmetric = [mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric, mac_ipv4_gtpu_eh_ul_ipv4_udp_symmetric] + +mac_ipv4_gtpu_eh_ipv4_tcp_symmetric = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_eh_ipv4_udp_symmetric] + +mac_ipv4_gtpu_eh_ipv6_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace(', frag=6)', ')/IPv6ExtHdrFragment()') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('ipv4 / end', 'ipv6 / end').replace('types ipv4', 'types ipv6') + .replace('ipv4_symmetric', 'ipv6_symmetric') + ) + +mac_ipv4_gtpu_eh_ipv6_udp_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_udp_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('ipv4 / udp / end', 'ipv6 / udp / end').replace('types ipv4-udp', 'types ipv6-udp') + .replace('ipv4_udp_symmetric', 'ipv6_udp_symmetric') + ) + + +mac_ipv4_gtpu_eh_ipv6_tcp_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_tcp_symmetric).replace('IPv6', 'IPv61') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + .replace('IPv61(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(dst="192.168.0.1",src="192.168.0.2")') + .replace('IPv61(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")', 'IP(src="192.168.0.1",dst="192.168.0.2")') + .replace('ipv4 / tcp / end', 'ipv6 / tcp / end').replace('types ipv4-tcp', 'types ipv6-tcp') + .replace('ipv4_tcp_symmetric', 'ipv6_tcp_symmetric') + ) + +mac_ipv4_gtpu_ipv4_udp_basic = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' +mac_ipv4_gtpu_ipv4_udp_unmatch = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' +] +mac_ipv4_gtpu_ipv4_udp_l3dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_l3src = eval(str(mac_ipv4_gtpu_ipv4_udp_l3dst) + .replace('mac_ipv4_gtpu_ipv4_udp_l3dst', 'mac_ipv4_gtpu_ipv4_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) + +mac_ipv4_gtpu_ipv4_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_ipv4_udp_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32') + .replace('192.168.0', '192.168.1'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_ipv4_udp_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=32') + .replace('192.168.0', '192.168.1'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_all = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv4_udp_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0', '192.168.1') + .replace('sport=22', 'sport=32') + .replace('dport=23', 'dport=33'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + + +mac_ipv4_gtpu_ipv4_udp_toeplitz = [mac_ipv4_gtpu_ipv4_udp_l3dst, mac_ipv4_gtpu_ipv4_udp_l3src, + mac_ipv4_gtpu_ipv4_udp_l3dst_l4src, mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst, + mac_ipv4_gtpu_ipv4_udp_l3src_l4src, mac_ipv4_gtpu_ipv4_udp_l3src_l4dst, + mac_ipv4_gtpu_ipv4_udp_l4src, mac_ipv4_gtpu_ipv4_udp_l4dst, + mac_ipv4_gtpu_ipv4_udp_all, mac_ipv4_gtpu_ipv4_udp_gtpu] + +mac_ipv4_gtpu_ipv4_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_ipv6_basic = { + 'ipv6-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'ipv6-frag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'ipv6-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'ipv6-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/("X"*480)', +} + +mac_ipv4_gtpu_ipv6_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_ipv6_basic).replace('ABAB', '1212')) +mac_ipv4_gtpu_ipv6_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_ipv6_basic).replace('CDCD', '3434')) +mac_ipv4_gtpu_ipv6_unmatched_pkt = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', +] +mac_ipv4_gtpu_ipv6_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_l3src_only = eval(str(mac_ipv4_gtpu_ipv6_l3dst_only) + .replace('mac_ipv4_gtpu_ipv6_l3dst', 'mac_ipv4_gtpu_ipv6_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) +mac_ipv4_gtpu_ipv6_all = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-frag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_ipv6_basic['ipv6-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_toeplitz = [mac_ipv4_gtpu_ipv6_l3dst_only, mac_ipv4_gtpu_ipv6_l3src_only, + mac_ipv4_gtpu_ipv6_all, mac_ipv4_gtpu_ipv6_gtpu] + +mac_ipv4_gtpu_ipv6_udp_basic = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' +mac_ipv4_gtpu_ipv6_udp_unmatch = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' +] +mac_ipv4_gtpu_ipv6_udp_l3dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_l3src = eval(str(mac_ipv4_gtpu_ipv6_udp_l3dst) + .replace('mac_ipv4_gtpu_ipv6_udp_l3dst', 'mac_ipv4_gtpu_ipv6_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) + +mac_ipv4_gtpu_ipv6_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_ipv6_udp_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32') + .replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_ipv6_udp_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=32') + .replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_all = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212').replace('CDCD', '3434') + .replace('sport=22', 'sport=32') + .replace('dport=23', 'dport=33'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_ipv6_udp_toeplitz = [mac_ipv4_gtpu_ipv6_udp_l3dst, mac_ipv4_gtpu_ipv6_udp_l3src, + mac_ipv4_gtpu_ipv6_udp_l3dst_l4src, mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst, + mac_ipv4_gtpu_ipv6_udp_l3src_l4src, mac_ipv4_gtpu_ipv6_udp_l3src_l4dst, + mac_ipv4_gtpu_ipv6_udp_l4src, mac_ipv4_gtpu_ipv6_udp_l4dst, + mac_ipv4_gtpu_ipv6_udp_all, mac_ipv4_gtpu_ipv6_udp_gtpu] + +mac_ipv4_gtpu_ipv6_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_ipv6_udp_toeplitz] + +mac_ipv4_gtpu_eh_dl_ipv4_basic = { + 'ipv4-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'ipv4-frag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'ipv4-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + 'ipv4-tcp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP()/("X"*480)', + +} + +mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_basic).replace('192.168.0.2', '192.168.1.2')) +mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_basic).replace('192.168.0.1', '192.168.1.1')) +mac_ipv4_gtpu_eh_ipv4_unmatched_pkt = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', +] + +mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_l3src_only = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only) + .replace('eh_dl_ipv4_l3dst', 'eh_ul_ipv4_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) +mac_ipv4_gtpu_eh_dl_ipv4_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'], + mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4 = [mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only, mac_ipv4_gtpu_eh_dl_ipv4_l3src_only, + mac_ipv4_gtpu_eh_dl_ipv4_all, mac_ipv4_gtpu_eh_dl_ipv4_gtpu] + +mac_ipv4_gtpu_eh_ul_ipv4 = [eval(str(element).replace('(type=1', '(type=2') + .replace('(type=0', '(type=1').replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) + for element in mac_ipv4_gtpu_eh_dl_ipv4] + +mac_ipv4_gtpu_eh_ipv4_toeplitz = mac_ipv4_gtpu_eh_dl_ipv4 + mac_ipv4_gtpu_eh_ul_ipv4 + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic = { + 'ipv4-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'ipv4-nonfrag_ul': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'ipv4-frag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)', + 'ipv4-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)', + +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic).replace('192.168.0.2', '192.168.1.2')) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic).replace('192.168.0.1', '192.168.1.1')) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_unmatched_pkt = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)', +] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-nonfrag_ul'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag_ul'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-frag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-icmp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-udp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_only = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_only) + .replace('ul_dl_ipv4_l3dst', 'ul_dl_ipv4_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('dst="192.168.0.1",src="192.168.1.2"', 'dst="192.168.0.1",src="192.168.1.3"') + .replace('dst="192.168.1.1",src="192.168.0.2"', 'dst="192.168.0.1",src="192.168.1.2"') + .replace('dst="192.168.0.1",src="192.168.1.3"', 'dst="192.168.1.1",src="192.168.0.2"') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-nonfrag_ul'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag_ul'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz = [mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_all, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_gtpu] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic = { + 'dl': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'ul': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', +] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.2', '192.168.1.2') + .replace('sport=22, dport=23', 'sport=32, dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_only = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_only) + .replace('ul_dl_ipv4_udp_l3dst', 'ul_dl_ipv4_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('dst="192.168.0.1",src="192.168.1.2"', 'dst="192.168.0.1",src="192.168.1.3"') + .replace('dst="192.168.1.1",src="192.168.0.2"', 'dst="192.168.0.1",src="192.168.1.2"') + .replace('dst="192.168.0.1",src="192.168.1.3"', 'dst="192.168.1.1",src="192.168.0.2"') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.1', '192.168.1.1') + .replace('dport=23', 'dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('192.168.0.1', '192.168.1.1') + .replace('dport=23', 'dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4dst = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src) + .replace('udp_l3src_l4src', 'udp_l3src_l4dst') + .replace('l4-src-only', 'l4-dst-only') + .replace('sport=32, dport=23', 'sport=22, dport=34') + .replace('sport=22, dport=33', 'sport=32, dport=23') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4src = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src) + .replace('udp_l3src_l4src', 'udp_l3dst_l4src') + .replace('l3-src-only', 'l3-dst-only') + .replace('dst="192.168.0.1",src="192.168.1.2"', 'dst="192.168.0.1",src="192.168.1.3"') + .replace('dst="192.168.1.1",src="192.168.0.2"', 'dst="192.168.0.1",src="192.168.1.2"') + .replace('dst="192.168.0.1",src="192.168.1.3"', 'dst="192.168.1.1",src="192.168.0.2"') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4dst = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4src) + .replace('udp_l3dst_l4src', 'udp_l3dst_l4dst') + .replace('l3-src-only', 'l3-dst-only') + .replace('l4-src-only', 'l4-dst-only') + .replace('sport=32, dport=23', 'sport=22, dport=34') + .replace('sport=22, dport=33', 'sport=32, dport=23') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0', '192.168.1') + .replace('dport=23', 'dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('192.168.0', '192.168.1') + .replace('dport=23', 'dport=33') + .replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4dst_only = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only) + .replace('udp_l4src_only', 'udp_l4dst_only') + .replace('l4-src-only', 'l4-dst-only') + .replace('sport=32, dport=23', 'sport=22, dport=34') + .replace('sport=22, dport=33', 'sport=32, dport=23') + ) +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'] + .replace('192.168.0.', '192.168.1.') + .replace('sport=22, dport=23', 'sport=32, dport=33'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'] + .replace('192.168.0.', '192.168.1.') + .replace('sport=22, dport=23', 'sport=32, dport=33'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('0x123456', '0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'], + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'], + ], + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz = [ + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4dst, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4src, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_l4dst, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4dst_only, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp, + mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_gtpu, +] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv6_toeplitz = [eval(str(element).replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('types ipv4', 'types ipv6') + .replace('ul_dl_ipv4', 'ul_dl_ipv6') + .replace(', frag=6)', ')/IPv6ExtHdrFragment()') + .replace('IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(dst="192.168.0.3", src="192.168.0.3"',) + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.0.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.1",src="192.168.1.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.1.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.3",src="192.168.0.3"', 'IP(dst="192.168.0.1",src="192.168.0.2"')) + for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv6_udp_toeplitz = [eval(str(element).replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('ipv4-udp', 'ipv6-udp') + .replace('ul_dl_ipv4_udp', 'ul_dl_ipv6_udp') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.0.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.1",src="192.168.1.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.1.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"')) + for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz = [eval(str(element).replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('ipv4 / tcp', 'ipv6 / tcp') + .replace('ipv4-tcp', 'ipv6-tcp') + .replace('ul_dl_ipv4_tcp', 'ul_dl_ipv6_tcp') + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.0.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.1",src="192.168.1.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.1.1",src="192.168.1.2"', 'IPv6(dst="1212:910B:6666:3457:8295:3333:1800:2929",src="3434:910A:2222:5498:8475:1111:3900:2020"')) + for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz] + +mac_ipv4_gtpu_eh_dl_ipv4_udp_basic = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)' +mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', +] +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst) + .replace('mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst', 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32') + .replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32') + .replace('192.168.0', '192.168.1'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=32') + .replace('192.168.0', '192.168.1'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0', '192.168.1') + .replace('sport=22', 'sport=32') + .replace('dport=23', 'dport=33'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv4_udp_toeplitz = [mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst, mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src, + mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src, mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst, + mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src, mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst, + mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src, mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst, + mac_ipv4_gtpu_eh_dl_ipv4_udp_all, mac_ipv4_gtpu_eh_dl_ipv4_udp_gtpu] + +mac_ipv4_gtpu_eh_ul_ipv4_udp_toeplitz = [eval(str(element).replace('(type=1', '(type=2') + .replace('(type=0', '(type=1').replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) + for element in mac_ipv4_gtpu_eh_dl_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_eh_ipv4_udp_toeplitz = mac_ipv4_gtpu_eh_dl_ipv4_udp_toeplitz + mac_ipv4_gtpu_eh_ul_ipv4_udp_toeplitz + +mac_ipv4_gtpu_eh_ipv4_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_eh_ipv4_udp_toeplitz] + +mac_ipv4_gtpu_eh_dl_ipv6_basic = { + 'ipv6-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'ipv6-frag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)', + 'ipv6-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)', + 'ipv6-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/("X"*480)', + 'ipv6-tcp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP()/("X"*480)', +} + +mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_basic).replace('ABAB', '1212')) +mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_basic).replace('CDCD', '3434')) +mac_ipv4_gtpu_eh_dl_ipv6_unmatched_pkt = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', +] +mac_ipv4_gtpu_eh_dl_ipv6_l3dst_only = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_l3src_only = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_l3dst_only) + .replace('mac_ipv4_gtpu_eh_dl_ipv6_l3dst', 'mac_ipv4_gtpu_eh_dl_ipv6_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) +mac_ipv4_gtpu_eh_dl_ipv6_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-nonfrag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-frag'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-icmp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-udp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-tcp'], + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'].replace('0x123456', '0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'].replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'].replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_unmatched_pkt, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': [ + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'], + mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'], + ], + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_toeplitz = [mac_ipv4_gtpu_eh_dl_ipv6_l3dst_only, mac_ipv4_gtpu_eh_dl_ipv6_l3src_only, + mac_ipv4_gtpu_eh_dl_ipv6_all, mac_ipv4_gtpu_eh_dl_ipv6_gtpu] + +mac_ipv4_gtpu_eh_ul_ipv6_toeplitz = [eval(str(element).replace('(type=1', '(type=2') + .replace('(type=0', '(type=1').replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) + for element in mac_ipv4_gtpu_eh_dl_ipv6_toeplitz] + +mac_ipv4_gtpu_eh_ipv6_toeplitz = mac_ipv4_gtpu_eh_dl_ipv6_toeplitz + mac_ipv4_gtpu_eh_ul_ipv6_toeplitz + +mac_ipv4_gtpu_eh_dl_ipv6_udp_basic = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' +mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/("X"*480)', +] +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst) + .replace('mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst', 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src') + .replace('l3-dst-only', 'l3-src-only') + .replace('check_hash_same', 'hash_check_different') + .replace('check_hash_different', 'check_hash_same') + .replace('hash_check_different', 'check_hash_different')) + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('ABAB', '1212'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32') + .replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} +mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=32') + .replace('ABAB', '1212').replace('CDCD', '3434'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_all = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_all', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_gtpu = { + 'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_gtpu', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types gtpu end key_len 0 queues end / end', + 'test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'save_hash', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212').replace('CDCD', '3434') + .replace('sport=22', 'sport=32') + .replace('dport=23', 'dport=33'), + 'action': 'check_hash_same', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'), + 'action': 'check_hash_different', + }, + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch, + 'action': 'check_no_hash', + }, + ], + 'post-test': [ + { + 'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic, + 'action': 'check_no_hash', + }, + ] +} + +mac_ipv4_gtpu_eh_dl_ipv6_udp_toeplitz = [mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst, mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src, + mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src, mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst, + mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src, mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst, + mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src, mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst, + mac_ipv4_gtpu_eh_dl_ipv6_udp_all, mac_ipv4_gtpu_eh_dl_ipv6_udp_gtpu] +mac_ipv4_gtpu_eh_ul_ipv6_udp_toeplitz = [eval(str(element).replace('(type=1', '(type=2') + .replace('(type=0', '(type=1').replace('(type=2', '(type=0') + .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1') + .replace('eh_dl', 'eh_ul')) + for element in mac_ipv4_gtpu_eh_dl_ipv6_udp_toeplitz] +mac_ipv4_gtpu_eh_ipv6_udp_toeplitz = mac_ipv4_gtpu_eh_dl_ipv6_udp_toeplitz + mac_ipv4_gtpu_eh_ul_ipv6_udp_toeplitz + +mac_ipv4_gtpu_eh_ipv6_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp') + .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP') + .replace('ipv4 / tcp / gtpu', 'ipv4 / udp / gtpu')) + for element in mac_ipv4_gtpu_eh_ipv6_udp_toeplitz] + +default_pattern_ipv4_gtpu_eh_dl_ipv4_src = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)' +default_pattern_ipv4_gtpu_eh_dl_ipv4_dst = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)' +default_pattern_ipv4_gtpu_eh_dl_ipv6_src = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' +default_pattern_ipv4_gtpu_eh_dl_ipv6_dst = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)' +default_pattern_support_ipv4 = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_gtpu', + 'port_id': 0, + 'rule': '', + 'test': [ + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src, + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst, + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src.replace('(type=0', '(type=1'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst.replace('(type=0', '(type=1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src.replace('/("X"', '/UDP(sport=22,dport=23)/("X"'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst.replace('/("X"', '/UDP(sport=22,dport=23)/("X"'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src + .replace('/("X"', '/UDP(sport=22,dport=23)/("X"') + .replace('(type=0', '(type=1'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/("X"', '/UDP(sport=22,dport=23)/("X"') + .replace('(type=0', '(type=1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src.replace('/("X"', '/TCP(sport=22,dport=23)/("X"'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst.replace('/("X"', '/TCP(sport=22,dport=23)/("X"'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src + .replace('/("X"', '/TCP(sport=22,dport=23)/("X"') + .replace('(type=0', '(type=1'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/("X"', '/TCP(sport=22,dport=23)/("X"') + .replace('(type=0', '(type=1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src + .replace('/("X"', '/UDP(sport=22,dport=23)/("X"') + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/("X"', '/UDP(sport=22,dport=23)/("X"') + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_src + .replace('/("X"', '/TCP(sport=22,dport=23)/("X"') + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/("X"', '/TCP(sport=22,dport=23)/("X"') + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src, + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst, + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src.replace('(type=0', '(type=1'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst.replace('(type=0', '(type=1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src.replace('/("X"', '/UDP(sport=22,dport=23)/("X"'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst.replace('/("X"', '/UDP(sport=22,dport=23)/("X"'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src + .replace('/("X"', '/UDP(sport=22,dport=23)/("X"') + .replace('(type=0', '(type=1'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/("X"', '/UDP(sport=22,dport=23)/("X"') + .replace('(type=0', '(type=1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src.replace('/("X"', '/TCP(sport=22,dport=23)/("X"'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst.replace('/("X"', '/TCP(sport=22,dport=23)/("X"'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src + .replace('/("X"', '/TCP(sport=22,dport=23)/("X"') + .replace('(type=0', '(type=1'), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/("X"', '/TCP(sport=22,dport=23)/("X"') + .replace('(type=0', '(type=1'), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src + .replace('/("X"', '/UDP(sport=22,dport=23)/("X"') + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/("X"', '/UDP(sport=22,dport=23)/("X"') + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'check_hash_different', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv6_src + .replace('/("X"', '/TCP(sport=22,dport=23)/("X"') + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'save_hash', + }, + { + 'send_packet': default_pattern_ipv4_gtpu_eh_dl_ipv4_dst + .replace('/("X"', '/TCP(sport=22,dport=23)/("X"') + .replace('/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) ', ''), + 'action': 'check_hash_different', + }, + ], +} + +inner_l4_mac_ipv4_gtpu_ipv4_udp_tcp = { + 'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_tcp', + 'port_id': 0, + 'rule': [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + ] +} +inner_l4_mac_ipv6_gtpu_ipv4_udp_tcp = eval(str(inner_l4_mac_ipv4_gtpu_ipv4_udp_tcp) + .replace('eth / ipv4', 'eth / ipv6') + .replace('gtpu / ipv4', 'gtpu / gtp_psc / ipv4') + .replace('IP()', 'IPv6()') + .replace('teid=0x123456)', 'teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) ') + .replace('mac_ipv4', 'mac_ipv6')) +inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp = { + 'sub_casename': 'mac_ipv4_gtpu_eh_ipv6_udp_tcp', + 'port_id': 0, + 'rule': [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end', + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + ] +} +inner_l4_mac_ipv6_gtpu_eh_ipv6_udp_tcp = eval(str(inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp) + .replace('eth / ipv4', 'eth / ipv6') + .replace('pdu_t is 0', 'pdu_t is 1') + .replace('(type=0', '(type=1') + .replace('IP()', 'IPv6()') + .replace('mac_ipv4', 'mac_ipv6')) +inner_l4_protocal_hash = [inner_l4_mac_ipv4_gtpu_ipv4_udp_tcp, inner_l4_mac_ipv6_gtpu_ipv4_udp_tcp, + inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp, inner_l4_mac_ipv6_gtpu_eh_ipv6_udp_tcp] + +mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2",frag=6)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1",frag=6)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': {'save_hash': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'save_hash': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1",frag=6)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'save_hash': 'ipv4-icmp'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-nonfrag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2",frag=6)/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-frag'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)', + 'action': {'check_no_hash_or_different': 'ipv4-icmp'}, + }, + ], +} + +mac_ipv4_gtpu_eh_ipv6_without_ul_dl_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric) + .replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('types ipv4', 'types ipv6') + .replace('gtpu_eh_ipv4', 'gtpu_eh_ipv6') + .replace(',frag=6)', ')/IPv6ExtHdrFragment()') + .replace('IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(dst="192.168.1.1", src="192.168.1.2"',) + .replace('IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(src="192.168.1.1", dst="192.168.1.2"',) + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + ) + +mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash', 'udp-dl'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash', 'udp-ul'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'check_hash_different', 'udp-dl'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': {'check_hash_different', 'udp-ul'}, + }, + ], +} +mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric) + .replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('types ipv4', 'types ipv6') + .replace('gtpu_eh_ipv4', 'gtpu_eh_ipv6') + .replace('IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(dst="192.168.1.1", src="192.168.1.2"',) + .replace('IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(src="192.168.1.1", dst="192.168.1.2"',) + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + ) + +mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric = { + 'sub_casename': 'mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric', + 'port_id': 0, + 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end', + 'pre-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash', 'udp-dl'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': {'save_hash', 'udp-ul'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_same', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'check_hash_different', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': 'save_hash', + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)', + 'action': 'check_hash_different', + }, + ], + 'post-test': [ + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': {'check_hash_different', 'udp-dl'}, + }, + { + 'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'action': {'check_hash_different', 'udp-ul'}, + }, + ], +} + +mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric) + .replace('gtp_psc / ipv4', 'gtp_psc / ipv6') + .replace('types ipv4', 'types ipv6') + .replace('gtpu_eh_ipv4', 'gtpu_eh_ipv6') + .replace('IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(dst="192.168.1.1", src="192.168.1.2"',) + .replace('IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020"','IP(src="192.168.1.1", dst="192.168.1.2"',) + .replace('IP(dst="192.168.0.1",src="192.168.0.2"', 'IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020"') + .replace('IP(dst="192.168.0.2",src="192.168.0.1"', 'IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020",src="ABAB:910B:6666:3457:8295:3333:1800:2929"') + ) + + +class TestCVLAdvancedRSSGTPU(TestCase): + + def set_up_all(self): + """ + Run at the start of each test suite. + prerequisites. + """ + # Based on h/w type, choose how many ports to use + self.dut_ports = self.dut.get_ports(self.nic) + self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing") + # Verify that enough threads are available + cores = self.dut.get_core_list("1S/4C/1T") + self.verify(cores is not None, "Insufficient cores for speed testing") + self.ports_socket = self.dut.get_numa_id(self.dut_ports[0]) + self.tester_port0 = self.tester.get_local_port(self.dut_ports[0]) + self.tester_port1 = self.tester.get_local_port(self.dut_ports[1]) + self.tester_iface0 = self.tester.get_interface(self.tester_port0) + self.tester_iface1 = self.tester.get_interface(self.tester_port1) + self.pci0 = self.dut.ports_info[self.dut_ports[0]]['pci'] + self.pci1 = self.dut.ports_info[self.dut_ports[1]]['pci'] + self.pass_flag = 'passed' + self.fail_flag = 'failed' + + self.pkt = Packet() + self.pmd_output = PmdOutput(self.dut) + self.launch_testpmd() + self.enable_rss = False + self.rxq = 64 + self.rssprocess = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq) + self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rssprocess.tester_ifaces)) + self.logger.info('rssprocess.test_case: {}'.format(self.rssprocess.test_case)) + + def set_up(self): + """ + Run before each test case. + """ + pass + + def launch_testpmd(self, enable_rss=False, set_rss=None): + if enable_rss: + param = "--rxq=64 --txq=64" + else: + param = "--rxq=64 --txq=64 --disable-rss --rxd=384 --txd=384" + self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param, + eal_param=f"-w {self.pci0}", socket=self.ports_socket) + self.enable_rss = enable_rss + if set_rss: + self.pmd_output.execute_cmd('port config all rss all') + self.pmd_output.execute_cmd("set fwd rxonly") + self.pmd_output.execute_cmd("set verbose 1") + res = self.pmd_output.wait_link_status_up('all', timeout=15) + self.verify(res is True, 'there have port link is down') + + def switch_testpmd(self, enable_rss=True, set_rss=False): + if enable_rss != self.enable_rss: + self.pmd_output.quit() + self.launch_testpmd(enable_rss=enable_rss, set_rss=set_rss) + self.pmd_output.execute_cmd("start") + if set_rss: + self.pmd_output.execute_cmd('port config all rss all') + + def test_mac_ipv4_gtpu_ipv4(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_toeplitz) + + def test_mac_ipv4_gtpu_ipv4_udp(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_udp_toeplitz) + + def test_mac_ipv4_gtpu_ipv4_tcp(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_tcp_toeplitz) + + def test_mac_ipv4_gtpu_ipv6(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_toeplitz) + + def test_mac_ipv4_gtpu_ipv6_udp(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_udp_toeplitz) + + def test_mac_ipv4_gtpu_ipv6_tcp(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_tcp_toeplitz) + + def test_mac_ipv6_gtpu_ipv4(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv4_udp(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_udp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv4_tcp(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_tcp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_udp(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_udp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_tcp(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_tcp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_eh_ipv4(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv4_udp(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_udp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv4_tcp(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_tcp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_udp(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_udp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_tcp(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_tcp_toeplitz) + + def test_mac_ipv6_gtpu_eh_ipv4(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_udp(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_udp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_tcp(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_tcp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_udp(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_udp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_tcp(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_tcp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_eh_ipv4_without_ul_dl(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_without_ul_dl(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv6_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv6_udp_toeplitz) + + def test_mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl(self): + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz) + + def test_mac_ipv6_gtpu_eh_ipv4_without_ul_dl(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_udp_without_ul_dl(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_tcp_without_ul_dl(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_without_ul_dl(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv6_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_udp_without_ul_dl(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv6_udp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_tcp_without_ul_dl(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz) + self.switch_testpmd(enable_rss=False) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_ipv4_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_symmetric) + + def test_mac_ipv4_gtpu_ipv4_udp_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_udp_symmetric) + + def test_mac_ipv4_gtpu_ipv4_tcp_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv4_tcp_symmetric) + + def test_mac_ipv4_gtpu_ipv6_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_symmetric) + + def test_mac_ipv4_gtpu_ipv6_udp_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_udp_symmetric) + + def test_mac_ipv4_gtpu_ipv6_tcp_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_ipv6_tcp_symmetric) + + def test_mac_ipv6_gtpu_ipv4_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv4_udp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_udp_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv4_tcp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv4_tcp_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_udp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_udp_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_ipv6_tcp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_ipv6_tcp_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_eh_ipv4_symmetric(self): + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv4_udp_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_udp_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv4_tcp_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_tcp_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_symmetric(self): + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_udp_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_udp_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_tcp_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_tcp_symmetric) + + def test_mac_ipv6_gtpu_eh_ipv4_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_symmetric) + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_udp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_udp_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_tcp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_tcp_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_symmetric) + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_udp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_udp_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_tcp_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_tcp_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric(self): + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_without_ul_dl_symmetric(self): + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl_symmetric) + + def test_mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric(self): + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric) + + def test_mac_ipv6_gtpu_eh_ipv4_without_ul_dl_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric) + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_udp_without_ul_dl_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_without_ul_dl_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_without_ul_dl_symmetric) + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_udp_without_ul_dl_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_udp_without_ul_dl_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_mac_ipv6_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric(self): + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(mac_ipv4_gtpu_eh_ipv6_tcp_without_ul_dl_symmetric) + self.switch_testpmd(enable_rss=True, set_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_template) + + def test_inner_l4_protocal_hash(self): + self.switch_testpmd(enable_rss=True) + self.rssprocess.handle_rss_distribute_cases(cases_info=inner_l4_protocal_hash) + + def test_default_pattern_support(self): + self.switch_testpmd(enable_rss=True) + ipv6_template = self.rssprocess.get_ipv6_template_by_ipv4(default_pattern_support_ipv4) + self.rssprocess.handle_rss_distribute_cases(cases_info=[default_pattern_support_ipv4] + ipv6_template) + + def test_negative_cases(self): + negative_rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types udp end key_len 0 queues end / end'] + self.rssprocess.create_rule(rule=negative_rules, check_stats=False, msg="Invalid input pattern: Invalid argument") + + def test_symmetric_negative_cases(self): + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types gtpu end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l4-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end'] + self.rssprocess.create_rule(rule=rules, check_stats=False) + + def test_global_simple_xor(self): + self.switch_testpmd() + rule1 = 'flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end' + rule_li1 = self.rssprocess.create_rule(rule=rule1) + pkts1 = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:ca:a3:28:94")/IP(src="1.1.4.1",dst="2.2.2.3")/("X"*480)', + 'Ether(dst="68:05:ca:a3:28:94")/IP(src="2.2.2.3",dst="1.1.4.1")/("X"*480)', + 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X" * 80)', + 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X" * 80)', + 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=22, dport=23)/("X" * 80)', + 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X" * 80)', ] + output = self.rssprocess.send_pkt_get_output(pkts=pkts1) + hash_values, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + for i in range(0, len(hash_values), 2): + self.verify(hash_values[i] == hash_values[i + 1], + 'the pair of packets with switched l3 address should have same hash value') + rule2 = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end'] + rule_li2 = self.rssprocess.create_rule(rule=rule2) + pkts2 = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)', + 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=22, dport=23)/("X" * 80)', + 'Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=23, dport=22)/("X" * 80)', ] + output = self.rssprocess.send_pkt_get_output(pkts=pkts2) + hash_values, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + for i in range(0, len(hash_values), 2): + self.verify(hash_values[i] != hash_values[i + 1], + 'the packets with switched l4 port should have different hash values.') + self.pmd_output.execute_cmd('flow destroy 0 rule 0') + output = self.rssprocess.send_pkt_get_output(pkts=pkts1) + hash_values, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + for i in range(0, len(hash_values), 2): + self.verify(hash_values[i] != hash_values[i + 1], + 'the pair of packets with switched l3 address should have defferent hash value') + output = self.rssprocess.send_pkt_get_output(pkts=pkts2) + hash_values, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + for i in range(0, len(hash_values), 2): + self.verify(hash_values[i] != hash_values[i + 1], + 'the packets with switched l4 port should have different hash values.') + self.pmd_output.execute_cmd('flow flush 0') + output = self.rssprocess.send_pkt_get_output(pkts=pkts1) + hash_values, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + for i in range(0, len(hash_values), 2): + self.verify(hash_values[i] != hash_values[i + 1], + 'the pair of packets with switched l3 address should have defferent hash value') + output = self.rssprocess.send_pkt_get_output(pkts=pkts2) + hash_values, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + for i in range(0, len(hash_values), 2): + self.verify(hash_values[i] == hash_values[i + 1], + 'the packets with switched l4 port should have same hash values.') + + def test_rss_function_when_disable_rss(self): + self.switch_testpmd(False) + rule = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end' + self.rssprocess.create_rule(rule=rule) + pkt = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=RandIP(),src=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)' + output = self.rssprocess.send_pkt_get_output(pkts=pkt, count=1280) + hashes, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + self.verify(len(hashes) == 1280, + 'all the packets should have hash value and distributed to all queues by RSS.') + self.verify(rss_distribute, 'the packet do not distribute by rss') + + def test_stress_cases(self): + # Subcase: add/delete IPV4_GTPU_UL_IPV4_TCP rules + self.switch_testpmd(enable_rss=True) + rule1 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end' + for _ in range(100): + self.pmd_output.execute_cmd(rule1) + self.pmd_output.execute_cmd('flow destroy 0 rule 0') + rule_li = self.rssprocess.create_rule(rule=rule1) + out = self.pmd_output.execute_cmd('flow list 0') + p = re.compile("^(\d+)\s") + li = out.splitlines() + res = list(filter(bool, list(map(p.match, li)))) + result = [i.group(1) for i in res] + self.verify(result == rule_li, 'should only rule 0 existed') + pkts1 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.1.1", dst="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/TCP(sport=32, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.1.2")/TCP(sport=22, dport=33)/("X"*480)', ] + output = self.rssprocess.send_pkt_get_output(pkts=pkts1) + hash_values1, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + self.verify(hash_values1[1] != hash_values1[0] and hash_values1[2] != hash_values1[0] and hash_values1[3] == + hash_values1[0], + 'packet 2 and packet 3 should have different hash value with packet 1, packet 4 should has same hash value with packet 1.') + self.pmd_output.execute_cmd('flow flush 0') + # Subcase: add/delete IPV4_GTPU_DL_IPV4 rules + rule2 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + for _ in range(100): + self.pmd_output.execute_cmd(rule2) + self.pmd_output.execute_cmd('flow destroy 0 rule 0') + rule_li = self.rssprocess.create_rule(rule=rule2) + out = self.pmd_output.execute_cmd('flow list 0') + p = re.compile("^(\d+)\s") + li = out.splitlines() + res = list(filter(bool, list(map(p.match, li)))) + result = [i.group(1) for i in res] + self.verify(result == rule_li, 'should only rule 0 existed') + pkts2 = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.1.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.1.1", dst="192.168.0.2")/("X"*480)', ] + output = self.rssprocess.send_pkt_get_output(pkts=pkts2) + hash_values2, rss_distribute = self.rssprocess.get_hash_verify_rss_distribute(output) + self.verify(hash_values2[1] != hash_values2[0] and hash_values2[2] == hash_values2[0], + 'packet 2 should has different hash value with packet 1, packet 3 should has same hash value with packet 1.') + + def test_ipv4_gtpu_ipv4_ipv4_gtpu_eh_ipv4(self): + self.switch_testpmd(enable_rss=True) + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end' + ] + pkts1 = [ + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ], + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ], + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', ] + ] + + pkts2 = [ + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ], + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ], + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ] + ] + rule_li1 = self.rssprocess.create_rule(rule=rules[0]) + hash_value1, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1[0]) + self.verify(hash_value1[0] == hash_value1[1] and hash_value1[0] != hash_value1[2], + 'got wrong hash, expect 1st hash equal to 2nd and different with 3rd') + hash_value2, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1[1]) + self.verify(len(set(hash_value2)) == len(pkts1[1]), 'hash wrong, expect all hash value are different') + hash_value3, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1[2]) + self.verify(len(set(hash_value3)) == len(pkts1[2]), 'hash wrong, expect all hash value are different') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + hash_value1, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[0]) + self.verify(hash_value1[0] == hash_value1[1] and hash_value1[0] != hash_value1[2], + 'got wrong hash, expect 1st hash equal to 2nd and different with 3rd') + hash_value2, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[1]) + self.verify(hash_value2[0] != hash_value2[1] and hash_value2[0] == hash_value2[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + hash_value3, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[2]) + self.verify(hash_value3[0] != hash_value3[1] and hash_value3[0] == hash_value3[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_li1) + hash_value1, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[0]) + self.verify(all([i == '0' for i in hash_value1]), + 'got wrong hash, expect not got rss hash and distribute to queue 0') + hash_value2, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[1]) + self.verify(hash_value2[0] != hash_value2[1] and hash_value2[0] == hash_value2[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + hash_value3, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[2]) + self.verify(hash_value3[0] != hash_value3[1] and hash_value3[0] == hash_value3[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + + self.rssprocess.create_rule(rule=rules[0]) + hash_value1, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[0]) + self.verify(hash_value1[0] == hash_value1[1] and hash_value1[0] != hash_value1[2], + 'got wrong hash, expect 1st hash equal to 2nd and different with 3rd') + hash_value2, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[1]) + self.verify(hash_value2[0] != hash_value2[1] and hash_value2[0] == hash_value2[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + hash_value3, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[2]) + self.verify(hash_value3[0] != hash_value3[1] and hash_value3[0] == hash_value3[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_li2) + hash_value1, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[0]) + self.verify(hash_value1[0] == hash_value1[1] and hash_value1[0] != hash_value1[2], + 'got wrong hash, expect 1st hash equal to 2nd and different with 3rd') + hash_value2, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[1] + pkts2[2]) + self.verify(all([i == '0' for i in hash_value2]), + 'got wrong hash, expect not got rss hash and distribute to queue 0') + + def test_ipv4_gtpu_eh_ipv4_with_without_ul_dl(self): + self.switch_testpmd(enable_rss=True) + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end'] + pkts1 = [ + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', + ], + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', + ] + ] + + pkts2 = [ + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ], + [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ] + ] + rule_li1 = self.rssprocess.create_rule(rule=rules[0]) + hash_value1, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1[0]) + self.verify(hash_value1[0] == hash_value1[1] and hash_value1[0] != hash_value1[2], + 'got wrong hash, expect 1st hash equal to 2nd and different with 3rd') + hash_value2, queues = self.rssprocess.send_pkt_get_hash_queues(pkts1[1]) + self.verify(len(set(hash_value2)) == len(pkts1[1]), 'hash wrong, expect all hash value are different') + + rule_li2 = self.rssprocess.create_rule(rule=rules[1]) + hash_value1, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[0]) + self.verify(hash_value1[0] != hash_value1[1] and hash_value1[0] == hash_value1[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + hash_value2, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts2[1]) + self.verify(hash_value2[0] != hash_value2[1] and hash_value2[0] == hash_value2[2], + 'got wrong hash, expect 1st hash equal to 3rd and different with 2nd') + + self.rssprocess.destroy_rule(port_id=0, rule_id=rule_li2) + hash_value1, queues = self.rssprocess.send_pkt_get_hash_queues(pkts2[0] + pkts2[1]) + self.verify(all([i == '0' for i in hash_value1]), + 'got wrong hash, expect not got rss hash and distribute to queue 0') + + def test_ipv4_gtpu_eh_ipv4_without_with_ul_dl(self): + self.switch_testpmd(enable_rss=True) + rules = [ + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', + 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end'] + pkts1 = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ] + rule0 = self.rssprocess.create_rule(rules[0]) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0], 'packet 3 should has different hash value with packet 1') + self.verify(hash_values[4] == hash_values[3], 'packet 5 should has same hash value with packet 4') + self.verify(hash_values[5] != hash_values[3], 'packet 6 should has different hash value with packet 4') + + rule1 = self.rssprocess.create_rule(rules[1]) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0], 'packet 3 should has different hash value with packet 1') + self.verify(hash_values[4] != hash_values[3], 'packet 5 should has different hash value with packet 4') + self.verify(hash_values[5] == hash_values[3], 'packet 6 should has same hash value with packet 4') + + self.rssprocess.destroy_rule(port_id=0, rule_id=rule0) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts1[3:]) + self.verify(hash_values[1] != hash_values[0], 'should get different hash values') + self.verify(hash_values[2] == hash_values[0], 'should get same hash values') + + rule2 = self.rssprocess.create_rule(rules[0]) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0], 'packet 3 should has different hash value with packet 1') + self.verify(hash_values[4] == hash_values[3], 'packet 5 should has same hash value with packet 4') + self.verify(hash_values[5] != hash_values[3], 'packet 6 should has different hash value with packet 4') + + self.rssprocess.destroy_rule(port_id=0, rule_id=rule2) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts1) + self.verify(all([i == '0' for i in hash_values]), 'all pkts should has no hash value and distribute to queue 0') + + def test_ipv4_gtpu_eh_ipv4_and_ipv4_gtpu_eh_ipv4_udp_tcp(self): + self.switch_testpmd(enable_rss=True) + pkts1 = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ] + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0], 'packet 3 should has different hash value with packet 1') + self.verify(hash_values[4] == hash_values[3], 'packet 5 should has same hash value with packet 4') + self.verify(hash_values[5] != hash_values[3], 'packet 6 should has different hash value with packet 4') + self.verify(hash_values[7] != hash_values[6], 'packet 8 should has different hash value to packet 7') + self.verify(hash_values[8] != hash_values[6] and hash_values[8] != hash_values[7], + 'packet 9 should have different hash value to packet 7 and 8') + self.verify(hash_values[10] != hash_values[9], 'packet 11 should has different hash value to packet 10') + self.verify(hash_values[11] != hash_values[9] and hash_values[11] != hash_values[10], + 'packet 12 have different hash value to packet 10 and 11') + rule1 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end' + rule_li1 = self.rssprocess.create_rule(rule=rule1) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0], 'packet 3 should has different hash value with packet 1') + self.verify(hash_values[4] != hash_values[3], 'packet 5 should has different hash value with packet 4') + self.verify(hash_values[5] == hash_values[3], 'packet 6 should has same hash value with packet 4') + self.verify(hash_values[7] != hash_values[6], 'packet 8 should has different hash value to packet 7') + self.verify(hash_values[8] != hash_values[6] and hash_values[8] != hash_values[7], + 'packet 9 should have different hash value to packet 7 and 8') + self.verify(hash_values[10] != hash_values[9], 'packet 11 should has different hash value to packet 10') + self.verify(hash_values[11] != hash_values[9] and hash_values[11] != hash_values[10], + 'packet 12 have different hash value to packet 10 and 11') + rule2 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end' + rule_li2 = self.rssprocess.create_rule(rule=rule2) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] == hash_values[0], 'packet 3 should has same hash value with packet 1') + self.verify(hash_values[4] != hash_values[3], 'packet 5 should has different hash value with packet 4') + self.verify(hash_values[5] == hash_values[3], 'packet 6 should has same hash value with packet 4') + self.verify(hash_values[7] != hash_values[6], 'packet 8 should has different hash value to packet 7') + self.verify(hash_values[8] != hash_values[6] and hash_values[8] != hash_values[7], + 'packet 9 should have different hash value to packet 7 and 8') + self.verify(hash_values[10] != hash_values[9], 'packet 11 should has different hash value to packet 10') + self.verify(hash_values[11] == hash_values[9], + 'packet 12 have same hash value to packet 10') + + def test_ipv6_gtpu_eh_ipv6_and_ipv6_gtpu_eh_ipv6_udp_tcp(self): + self.switch_testpmd(enable_rss=True) + pkts1 = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', ] + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0], 'packet 3 should has different hash value with packet 1') + self.verify(hash_values[4] == hash_values[3], 'packet 5 should has same hash value with packet 4') + self.verify(hash_values[5] != hash_values[3], 'packet 6 should has different hash value with packet 4') + self.verify(hash_values[7] != hash_values[6], 'packet 8 should has different hash value to packet 7') + self.verify(hash_values[8] != hash_values[6] and hash_values[8] != hash_values[7], + 'packet 9 should have different hash value to packet 7 and 8') + self.verify(hash_values[10] != hash_values[9], 'packet 11 should has different hash value to packet 10') + self.verify(hash_values[11] != hash_values[9] and hash_values[11] != hash_values[10], + 'packet 12 have different hash value to packet 10 and 11') + rule1 = 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end' + rule_li1 = self.rssprocess.create_rule(rule=rule1) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] != hash_values[0], 'packet 2 should has different hash value with packet 1') + self.verify(hash_values[2] == hash_values[0], 'packet 3 should has same hash value with packet 1') + self.verify(hash_values[4] == hash_values[3], 'packet 5 should has same hash value with packet 4') + self.verify(hash_values[5] != hash_values[3], 'packet 6 should has different hash value with packet 4') + self.verify(hash_values[7] != hash_values[6], 'packet 8 should has different hash value to packet 7') + self.verify(hash_values[8] != hash_values[6] and hash_values[8] != hash_values[7], + 'packet 9 should have different hash value to packet 7 and 8') + self.verify(hash_values[10] != hash_values[9], 'packet 11 should has different hash value to packet 10') + self.verify(hash_values[11] != hash_values[9] and hash_values[11] != hash_values[10], + 'packet 12 have different hash value to packet 10 and 11') + rule2 = 'flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end' + rule_li2 = self.rssprocess.create_rule(rule=rule2) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0], 'packet 3 should has different hash value with packet 1') + self.verify(hash_values[4] == hash_values[3], 'packet 5 should has same hash value with packet 4') + self.verify(hash_values[5] != hash_values[3], 'packet 6 should has different hash value with packet 4') + self.verify(hash_values[7] == hash_values[6], 'packet 8 should has same hash value to packet 7') + self.verify(hash_values[8] != hash_values[6], + 'packet 9 should have different hash value to packet 7') + self.verify(hash_values[10] != hash_values[9], 'packet 11 should has different hash value to packet 10') + self.verify(hash_values[11] != hash_values[9] and hash_values[11] != hash_values[10], + 'packet 12 have different hash value to packet 10 and 11') + + def test_ipv4_gtpu_eh_ipv6_and_ipv4_gtpu_eh_ipv6_udp_tcp_without_ul_dl(self): + self.switch_testpmd(enable_rss=True) + pkts1 = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)', ] + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0] and hash_values[3] != hash_values[0], + 'packet 3 and packet 4 should have different hash value to packet 1.') + self.verify(len({hash_values[4], hash_values[5], hash_values[6]}) == 3, + 'packet 5 and packet 6 and packet 7 have different hash value.') + rule1 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end' + self.rssprocess.create_rule(rule=rule1) + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0] and hash_values[2] == hash_values[0], + 'packet 2 should has same hash value with packet 1, packet 3 should has same hash value to packet 1') + self.verify(hash_values[3] != hash_values[0], 'packet 4 should have different hash value to packet 1.') + self.verify(hash_values[5] == hash_values[4], 'packet 6 should has same hash value to packet 5.') + self.verify(hash_values[6] != hash_values[4], 'packet 7 should has differnt hash value to packet 5.') + + def test_ipv6_gtpu_ipv4_and_ipv6_gtpu_ipv4_udp_tcp(self): + self.switch_testpmd(enable_rss=True) + pkts1 = [ + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.1.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.1.2")/("X"*480)', + 'Ether(dst="68:05:CA:BB:26:E0")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.1.1",src="192.168.0.2")/("X"*480)', ] + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], + 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0] and hash_values[3] != hash_values[0], + 'packet 3 and packet 4 should have different hash value to packet 1.') + self.verify(len({hash_values[4], hash_values[5], hash_values[6]}) == 3, + 'packet 5 and packet 6 and packet 7 have different hash value.') + self.rssprocess.create_rule( + rule='flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end') + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] != hash_values[0], + 'packet 2 should has defferent hash value with packet 1') + self.verify(hash_values[2] == hash_values[0] and hash_values[3] == hash_values[0], + 'packet 3 and packet 4 should have same hash value to packet 1.') + self.verify(len({hash_values[4], hash_values[5], hash_values[6]}) == 3, + 'packet 5 and packet 6 and packet 7 have different hash value.') + self.rssprocess.create_rule( + rule='flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end') + hash_values, queues = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts1) + self.verify(hash_values[1] == hash_values[0], + 'packet 2 should has same hash value with packet 1') + self.verify(hash_values[2] != hash_values[0], 'packet 3 should has different hash value to packet 1.') + self.verify(hash_values[3] == hash_values[0], + 'packet 4 should has same hash value with packet 1') + self.verify(hash_values[5] == hash_values[4], + 'packet 6 should has same hash value with packet 5') + self.verify(hash_values[6] != hash_values[4], 'packet 7 should has different hash value to packet 5.') + + def test_toeplitz_symmetric_combination(self): + self.switch_testpmd(False) + self.logger.info('Subcase: toeplitz/symmetric with same pattern') + # step 1 + rule_toeplitz = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + pkts_toeplitz = ['Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.1.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.1.1", dst="192.168.0.2")/("X"*480)'] + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + # step 2 + rule_symmetric = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end' + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + pkts_symmetric =['Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)'] + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + # step 3 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value[0]) != hash_value[2], 'the toeplitz should not work') + for temp in range(len(hash_value)): + self.verify(len(hash_value[temp]) != 0, 'all the toeplitz packet should have hash value') + #step 4 + self.rssprocess.destroy_rule(rule_id=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value) == 0, 'all the toeplitz packet should have no hash value') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + self.pmd_output.execute_cmd('flow flush 0') + + self.logger.info('Subcase: toeplitz/symmetric with same pattern (switched rule order)') + # step 1 + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + # step 2 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] != hash_value[1], 'symmetric rule should not work') + # step 3 + self.rssprocess.destroy_rule(rule_id=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value) == 0, 'all the toeplitz packet should have no hash value') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + self.pmd_output.execute_cmd('flow flush 0') + + self.logger.info('Subcase: toeplitz/symmetric with different pattern (different UL/DL)') + # step 1 + rule_toeplitz = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + pkts_toeplitz = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.1.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.1.1", dst="192.168.0.2")/("X"*480)' + ] + rule_symmetric = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end' + pkts_symmetric = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)' + ] + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + # step 2 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + # step 3 + self.rssprocess.destroy_rule(rule_id=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'second packet should hash value different from the first packet') + self.verify(hash_value[2] == hash_value[0], 'third packet should hash value same with the first packet') + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + self.rssprocess.destroy_rule(rule_id=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value) == 0, 'third packet should hash value same with the first packet') + self.pmd_output.execute_cmd('flow flush 0') + + self.logger.info('Subcase: toeplitz/symmetric with different pattern (with/without UL/DL)') + # step 1 + rule_toeplitz = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end' + pkts_toeplitz = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.1.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.1.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.1.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(src="192.168.1.1", dst="192.168.0.2")/("X"*480)' + ] + rule_symmetric = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end' + pkts_symmetric = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)' + ] + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'hash_value[1] should hash value different from hash_value[0]') + self.verify(hash_value[2] == hash_value[0], 'hash_value[2] should hash value same with hash_value[0]') + self.verify(hash_value[4] != hash_value[3], 'hash_value[4] should hash value different from hash_value[3]') + self.verify(hash_value[5] == hash_value[3], 'hash_value[5] should hash value same with hash_value[3]') + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + # step 2 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + for temp in range(len(hash_value)): + self.verify(len(hash_value[temp]) != 0, 'all the toeplitz packet should have hash value') + # step 3 + self.rssprocess.destroy_rule(rule_id=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] != hash_value[1], 'symmetric rule should not work') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'hash_value[1] should hash value different from hash_value[0]') + self.verify(hash_value[2] == hash_value[0], 'hash_value[2] should hash value same with hash_value[0]') + self.verify(hash_value[4] != hash_value[3], 'hash_value[4] should hash value different from hash_value[3]') + self.verify(hash_value[5] == hash_value[3], 'hash_value[5] should hash value same with hash_value[3]') + # step 4 + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + # step 5 + self.rssprocess.destroy_rule(rule_id=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + for temp in range(len(hash_value)): + if temp > 2: + self.verify(len(hash_value) == 0, 'all the toeplitz UL packet should have no hash value') + self.pmd_output.execute_cmd('flow flush 0') + + self.logger.info('Subcase: toeplitz/symmetric with different pattern') + # step 1 + rule_toeplitz = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end' + pkts_toeplitz = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.1.1", dst="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=32, dport=23)/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(src="192.168.0.1", dst="192.168.1.2")/UDP(sport=22, dport=33)/("X"*480)' + ] + rule_symmetric = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end' + pkts_symmetric = [ + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888",dst="2222:3333:4444:5555:6666:7777:8888:9999")/("X"*480)', + 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="2222:3333:4444:5555:6666:7777:8888:9999",dst="1111:2222:3333:4444:5555:6666:7777:8888")/("X"*480)' + ] + rule_id_toeplitz = self.rssprocess.create_rule(rule=rule_toeplitz) + self.rssprocess.check_rule(rule_list=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'hash_value[1] should hash value different from hash_value[0]') + self.verify(hash_value[2] != hash_value[0], 'hash_value[2] should hash value different with hash_value[0]') + self.verify(hash_value[3] == hash_value[0], 'hash_value[3] should hash value same from hash_value[0]') + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + # step 2 + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + for temp in range(len(hash_value)): + self.verify(len(hash_value[temp]) != 0, 'all the toeplitz packet should have hash value') + # step 3 + self.rssprocess.destroy_rule(rule_id=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(hash_value[1] != hash_value[0], 'hash_value[1] should hash value different from hash_value[0]') + self.verify(hash_value[2] != hash_value[0], 'hash_value[2] should hash value different with hash_value[0]') + self.verify(hash_value[3] == hash_value[0], 'hash_value[3] should hash value same from hash_value[0]') + # step 4 + rule_id_symmetric = self.rssprocess.create_rule(rule=rule_symmetric) + self.rssprocess.check_rule(rule_list=rule_id_symmetric) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + self.rssprocess.destroy_rule(rule_id=rule_id_toeplitz) + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_symmetric) + self.verify(hash_value[0] == hash_value[1], 'second packet should hash value same with the first packet') + hash_value, _ = self.rssprocess.send_pkt_get_hash_queues(pkts=pkts_toeplitz) + self.verify(len(hash_value) == 0, 'all the symmetric packet should have no hash value') + self.pmd_output.execute_cmd('flow flush 0') + + def tear_down(self): + # destroy all flow rule on port 0 + self.dut.send_command("flow flush 0", timeout=1) + self.dut.send_command("clear port stats all", timeout=1) + self.pmd_output.execute_cmd("stop") + + def tear_down_all(self): + self.dut.kill_all()