<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;
        mso-ligatures:standardcontextual;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="en-DE" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif"></span><span lang="EN-US">Hi All,</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I am experimenting <b>async</b> template APIs to install flow rules to perform matching on IPv6 packets containing TCP payload, using
<b>DPDK 24.11.2</b>. However, I found that creating a pattern template that tries to match both the source and destination IPv6 addresses results in an error. In the experiment, the following testpmd commands were used.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><Install async rules></span><span lang="EN-US" style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">port stop 2</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">port stop 1</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">port stop 0</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">flow configure 2 queues_number 1 queues_size 10 counters_number 0 aging_counters_number 0 meters_number 0 flags 0</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">flow configure 0 queues_number 1 queues_size 10 counters_number 0 aging_counters_number 0 meters_number 0 flags 0</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">flow configure 1 queues_number 1 queues_size 10 counters_number 0 aging_counters_number 0 meters_number 0 flags 0</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">port start all</span><span lang="EN-US" style="color:#333333;mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ligatures:none"># command leading to the error, only matching src or dst address works<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">flow pattern_template 0 create transfer relaxed no pattern_template_id 10  template represented_port ethdev_port_id is 1 / eth type is 0x86dd / ipv6 dst is ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
 src is ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff proto is 0x0006 / tcp  src is 0xffff / end</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">flow actions_template 0 create transfer  actions_template_id 10  template represented_port / end mask represented_port  / end</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#333333;mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">flow template_table 0 create  group 0 priority 0  transfer wire_orig  table_id 5 rules_number 8 pattern_template 10 actions_template 10</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#333333;mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">flow queue 0 create 0 template_table 5 pattern_template 0 actions_template 0 postpone no pattern represented_port ethdev_port_id is 0 / eth type is 0x86dd / ipv6 dst is 2001:0db8:beef:0001::1src
 is fdbe:ef00:dead:beef::2 proto is 0x0006 / tcp src is 0x07d2 / end actions represented_port ethdev_port_id 2 / end</span><span style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#333333;mso-ligatures:none">flow push 0 queue 0</span><span lang="EN-US" style="color:#333333;mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><</span><span lang="EN-US" style="font-size:11.0pt">/</span><span style="font-size:11.0pt">Install async rules></span><span lang="EN-US" style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The error emitted from the driver is:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><emitted error><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">mlx5_net: [mlx5dr_matcher_create]: Failed to initialise matcher: 7<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Pattern template #10 destroyed<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">port_flow_complain(): Caught PMD error type 1 (cause unspecified): failed to validate pattern template: Argument list too long<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"></emitted error><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">One possible mitigation trick is to use two connected groups of flow rules to match the IPv6 source and destination addresses separately, which of course makes the template and flow rule creation more complicated. Thus,
 I would like to ask:  is it the intended behavior, that matching of source and destination IPv6 addresses at a single pattern template is NOT supported, as observed in the above experiment?<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Many thanks in advance.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Tao</span><span lang="EN-US" style="font-size:11.0pt"><br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></b></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
</div>
</body>
</html>