<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>146. CVL Limit Value Test — DPDK Test Plans  documentation</title>
    <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    './',
        VERSION:     '',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true,
        SOURCELINK_SUFFIX: '.txt'
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="147. VEB Switch and floating VEB Tests" href="veb_switch_test_plan.html" />
    <link rel="prev" title="145. metrics" href="metrics_test_plan.html" />
   
  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
  
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />

  </head>
  <body>
  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="cvl-limit-value-test">
<h1>146. CVL Limit Value Test<a class="headerlink" href="#cvl-limit-value-test" title="Permalink to this headline">¶</a></h1>
<div class="section" id="description">
<h2>146.1. Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
<div class="section" id="supported-function-type">
<h3>146.1.1. Supported function type<a class="headerlink" href="#supported-function-type" title="Permalink to this headline">¶</a></h3>
<blockquote>
<div>validate
create
destroy
flush
list</div></blockquote>
</div>
<div class="section" id="supported-action-type">
<h3>146.1.2. Supported action type<a class="headerlink" href="#supported-action-type" title="Permalink to this headline">¶</a></h3>
<blockquote>
<div>queue index
drop
rss queues
passthru
mark
mark/rss</div></blockquote>
</div>
</div>
<div class="section" id="prerequisites">
<h2>146.2. Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline">¶</a></h2>
<ol class="arabic">
<li><p class="first">Hardware:
columbiaville_25g/columbiaville_100g</p>
</li>
<li><p class="first">Software:
DPDK: <a class="reference external" href="http://dpdk.org/git/dpdk">http://dpdk.org/git/dpdk</a>
scapy: <a class="reference external" href="http://www.secdev.org/projects/scapy/">http://www.secdev.org/projects/scapy/</a></p>
</li>
<li><p class="first">Copy specific ice package to /lib/firmware/intel/ice/ddp/ice.pkg
Then reboot server, and compile DPDK</p>
</li>
<li><p class="first">Generate 2 VFs on each PF and set mac address for each VF:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">echo</span> <span class="mi">2</span> <span class="o">></span> <span class="o">/</span><span class="n">sys</span><span class="o">/</span><span class="n">bus</span><span class="o">/</span><span class="n">pci</span><span class="o">/</span><span class="n">devices</span><span class="o">/</span><span class="mi">0000</span><span class="p">:</span><span class="mi">86</span><span class="p">:</span><span class="mf">00.0</span><span class="o">/</span><span class="n">sriov_numvfs</span>
<span class="n">echo</span> <span class="mi">2</span> <span class="o">></span> <span class="o">/</span><span class="n">sys</span><span class="o">/</span><span class="n">bus</span><span class="o">/</span><span class="n">pci</span><span class="o">/</span><span class="n">devices</span><span class="o">/</span><span class="mi">0000</span><span class="p">:</span><span class="mi">86</span><span class="p">:</span><span class="mf">00.1</span><span class="o">/</span><span class="n">sriov_numvfs</span>
<span class="n">ip</span> <span class="n">link</span> <span class="nb">set</span> <span class="n">enp134s0f0</span> <span class="n">vf</span> <span class="mi">0</span> <span class="n">mac</span> <span class="mi">00</span><span class="p">:</span><span class="mi">11</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">55</span>
<span class="n">ip</span> <span class="n">link</span> <span class="nb">set</span> <span class="n">enp134s0f0</span> <span class="n">vf</span> <span class="mi">1</span> <span class="n">mac</span> <span class="mi">00</span><span class="p">:</span><span class="mi">11</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">66</span>
<span class="n">ip</span> <span class="n">link</span> <span class="nb">set</span> <span class="n">enp134s0f1</span> <span class="n">vf</span> <span class="mi">0</span> <span class="n">mac</span> <span class="mi">00</span><span class="p">:</span><span class="mi">11</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">77</span>
<span class="n">ip</span> <span class="n">link</span> <span class="nb">set</span> <span class="n">enp134s0f1</span> <span class="n">vf</span> <span class="mi">1</span> <span class="n">mac</span> <span class="mi">00</span><span class="p">:</span><span class="mi">11</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">88</span>
</pre></div>
</div>
<p>0000:86:00.0 generate 0000:86:01.0 and 0000:86:01.1
0000:86:00.1 generate 0000:86:11.0 and 0000:86:11.1
define 86:01.0 as vf00, 86:01.1 as vf01, 86:11.0 as vf10, 86:11.1 as vf11.
assign mac address of pf0 is 68:05:ca:a3:1a:60,
assign mac address of pf1 is 68:05:ca:a3:1a:61.</p>
</li>
<li><p class="first">Bind VFs to dpdk driver:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">usertools</span><span class="o">/</span><span class="n">dpdk</span><span class="o">-</span><span class="n">devbind</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">b</span> <span class="n">vfio</span><span class="o">-</span><span class="n">pci</span> <span class="mi">86</span><span class="p">:</span><span class="mf">01.0</span> <span class="mi">86</span><span class="p">:</span><span class="mf">01.1</span> <span class="mi">86</span><span class="p">:</span><span class="mf">11.0</span> <span class="mi">86</span><span class="p">:</span><span class="mf">11.1</span>
</pre></div>
</div>
</li>
</ol>
<ol class="arabic" start="5">
<li><p class="first">Launch the app <code class="docutils literal"><span class="pre">testpmd</span></code> with the following arguments:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xff</span> <span class="o">-</span><span class="n">n</span> <span class="mi">6</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">01.0</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">01.1</span> <span class="o">--</span><span class="n">file</span><span class="o">-</span><span class="n">prefix</span><span class="o">=</span><span class="n">vf</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span> <span class="o">--</span><span class="n">rxq</span><span class="o">=</span><span class="mi">16</span> <span class="o">--</span><span class="n">txq</span><span class="o">=</span><span class="mi">16</span>
<span class="n">testpmd</span><span class="o">></span> <span class="nb">set</span> <span class="n">fwd</span> <span class="n">rxonly</span>
<span class="n">testpmd</span><span class="o">></span> <span class="nb">set</span> <span class="n">verbose</span> <span class="mi">1</span>
</pre></div>
</div>
</li>
<li><p class="first">on tester side, copy the layer python file to /root:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">cp</span> <span class="n">pfcp</span><span class="o">.</span><span class="n">py</span> <span class="n">to</span> <span class="o">/</span><span class="n">root</span>
</pre></div>
</div>
<p>then import layers when start scapy:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">sys</span>
<span class="gp">>>> </span><span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'/root'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">pfcp</span> <span class="k">import</span> <span class="n">PFCP</span>
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scapy.contrib.gtp</span> <span class="k">import</span> <span class="o">*</span>
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scapy.contrib.mpls</span> <span class="k">import</span> <span class="o">*</span>
</pre></div>
</div>
</li>
</ol>
</div>
<div class="section" id="test-case-max-number">
<h2>146.3. Test case: Max number<a class="headerlink" href="#test-case-max-number" title="Permalink to this headline">¶</a></h2>
<p>All the max number cases are designed based on 2*100G NIC.
If the hardware is 4*25G NIC, the guaranteed rule number of PF is 512.
So in subcase 3 and subcase 4, there can be created at most 14848 rules on 1pf and 2vfs.</p>
<div class="section" id="subcase-1-14336-rules-on-1-vf">
<h3>146.3.1. Subcase 1: 14336 rules on 1 vf<a class="headerlink" href="#subcase-1-14336-rules-on-1-vf" title="Permalink to this headline">¶</a></h3>
<ol class="arabic">
<li><p class="first">create 14336 rules on vf00:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.1</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
<span class="o">......</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">55.255</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>all the rules are created successfully.</p>
</li>
<li><p class="first">create one more rule:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">56.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>the rule failed to create. return the error message.</p>
</li>
<li><p class="first">check the rule list, there are 14336 rules listed.</p>
</li>
<li><p class="first">send matched packets for rule 0 and rule 14335:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"00:11:22:33:44:55"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.0.20"</span><span class="p">,</span><span class="n">dst</span><span class="o">=</span><span class="s2">"192.168.0.0"</span><span class="p">)</span><span class="o">/</span><span class="n">Raw</span><span class="p">(</span><span class="s1">'x'</span> <span class="o">*</span> <span class="mi">80</span><span class="p">)],</span><span class="n">iface</span><span class="o">=</span><span class="s2">"enp134s0f1"</span><span class="p">)</span>
<span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"00:11:22:33:44:55"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.0.20"</span><span class="p">,</span><span class="n">dst</span><span class="o">=</span><span class="s2">"192.168.55.255"</span><span class="p">)</span><span class="o">/</span><span class="n">Raw</span><span class="p">(</span><span class="s1">'x'</span> <span class="o">*</span> <span class="mi">80</span><span class="p">)],</span><span class="n">iface</span><span class="o">=</span><span class="s2">"enp134s0f1"</span><span class="p">)</span>
</pre></div>
</div>
<p>check all packets are redirected to expected queue with FDIR matched ID=0x0</p>
</li>
<li><p class="first">create a rule on vf01, it failed,
check the error message, the rule number has expired the max rule number.</p>
</li>
<li><p class="first">create a rule on vf10, it failed,
check the error message, the rule number has expired the max rule number.</p>
</li>
<li><p class="first">flush all the rules, check the rule list,
there is no rule listed.</p>
</li>
<li><p class="first">verify matched packets for rule 0  and rule 14335 received without FDIR matched ID.</p>
</li>
</ol>
</div>
<div class="section" id="subcase-2-14336-rules-on-2-vfs-of-2pfs">
<h3>146.3.2. Subcase 2: 14336 rules on 2 vfs of 2pfs<a class="headerlink" href="#subcase-2-14336-rules-on-2-vfs-of-2pfs" title="Permalink to this headline">¶</a></h3>
<ol class="arabic">
<li><p class="first">start testpmd on vf00:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xf</span> <span class="o">-</span><span class="n">n</span> <span class="mi">6</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">01.0</span> <span class="o">--</span><span class="n">file</span><span class="o">-</span><span class="n">prefix</span><span class="o">=</span><span class="n">vf00</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span> <span class="o">--</span><span class="n">rxq</span><span class="o">=</span><span class="mi">4</span> <span class="o">--</span><span class="n">txq</span><span class="o">=</span><span class="mi">4</span>
</pre></div>
</div>
<p>create 1 rule on vf00:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>created successfully, check the rule is listed.</p>
</li>
<li><p class="first">start testpmd on vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xf0</span> <span class="o">-</span><span class="n">n</span> <span class="mi">6</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mi">0</span><span class="n">a</span><span class="o">.</span><span class="mi">0</span> <span class="o">--</span><span class="n">file</span><span class="o">-</span><span class="n">prefix</span><span class="o">=</span><span class="n">vf10</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span> <span class="o">--</span><span class="n">rxq</span><span class="o">=</span><span class="mi">4</span> <span class="o">--</span><span class="n">txq</span><span class="o">=</span><span class="mi">4</span>
</pre></div>
</div>
<p>create 14336 rules on vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.1</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
<span class="o">......</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">55.255</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>all the rules except the last one are created successfully.
check the rule list, there listed 14335 rules.</p>
</li>
<li><p class="first">send matched packet to vf00 and matched packet for rule 14334 to vf10,
check all packets are redirected to expected queue with FDIR matched ID=0x0</p>
</li>
<li><p class="first">flush all the rules, check the rule list,
there is no rule listed.</p>
</li>
<li><p class="first">verify matched packet received without FDIR matched ID.</p>
</li>
</ol>
</div>
<div class="section" id="subcase-3-1025-rules-on-1pf-and-14335-rules-on-2vfs">
<h3>146.3.3. Subcase 3: 1025 rules on 1pf and 14335 rules on 2vfs<a class="headerlink" href="#subcase-3-1025-rules-on-1pf-and-14335-rules-on-2vfs" title="Permalink to this headline">¶</a></h3>
<p>each pf can create 1024 rules at least in 2 ports card.
each pf can create 512 rules at least in 4 ports card.
there are 14k rules shared by pfs and vfs.
so 1 pf and 2 vfs can create 15360 rules at most on 2 ports card.
1 pf and 2 vfs can create 14848 rules at most on 4 ports card.</p>
<ol class="arabic">
<li><p class="first">create 1025 rules on pf0:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">flow</span><span class="o">-</span><span class="nb">type</span> <span class="n">tcp4</span> <span class="n">src</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="n">dst</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">100.2</span> <span class="n">src</span><span class="o">-</span><span class="n">port</span> <span class="mi">32</span> <span class="n">dst</span><span class="o">-</span><span class="n">port</span> <span class="mi">33</span> <span class="n">action</span> <span class="mi">8</span>
<span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">flow</span><span class="o">-</span><span class="nb">type</span> <span class="n">tcp4</span> <span class="n">src</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.1</span> <span class="n">dst</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">100.2</span> <span class="n">src</span><span class="o">-</span><span class="n">port</span> <span class="mi">32</span> <span class="n">dst</span><span class="o">-</span><span class="n">port</span> <span class="mi">33</span> <span class="n">action</span> <span class="mi">8</span>
<span class="o">......</span>
<span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">flow</span><span class="o">-</span><span class="nb">type</span> <span class="n">tcp4</span> <span class="n">src</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">3.255</span> <span class="n">dst</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">100.2</span> <span class="n">src</span><span class="o">-</span><span class="n">port</span> <span class="mi">32</span> <span class="n">dst</span><span class="o">-</span><span class="n">port</span> <span class="mi">33</span> <span class="n">action</span> <span class="mi">8</span>
<span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">flow</span><span class="o">-</span><span class="nb">type</span> <span class="n">tcp4</span> <span class="n">src</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">4.0</span> <span class="n">dst</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">100.2</span> <span class="n">src</span><span class="o">-</span><span class="n">port</span> <span class="mi">32</span> <span class="n">dst</span><span class="o">-</span><span class="n">port</span> <span class="mi">33</span> <span class="n">action</span> <span class="mi">8</span>
</pre></div>
</div>
<p>all the rules can be created successfully:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Added</span> <span class="n">rule</span> <span class="k">with</span> <span class="n">ID</span> <span class="o"><</span><span class="n">Rule</span> <span class="n">ID</span><span class="o">></span>
</pre></div>
</div>
<p>List the rules on pf0:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ethtool</span> <span class="o">-</span><span class="n">n</span> <span class="n">enp134s0f0</span>
</pre></div>
</div>
</li>
<li><p class="first">start testpmd on vf00:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xf</span> <span class="o">-</span><span class="n">n</span> <span class="mi">6</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">01.0</span> <span class="o">--</span><span class="n">file</span><span class="o">-</span><span class="n">prefix</span><span class="o">=</span><span class="n">vf00</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span> <span class="o">--</span><span class="n">rxq</span><span class="o">=</span><span class="mi">4</span> <span class="o">--</span><span class="n">txq</span><span class="o">=</span><span class="mi">4</span>
</pre></div>
</div>
<p>create 1 rule on vf00:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>created successfully, check the rule is listed.</p>
</li>
</ol>
<ol class="arabic" start="2">
<li><p class="first">start testpmd on vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xf0</span> <span class="o">-</span><span class="n">n</span> <span class="mi">6</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mi">0</span><span class="n">a</span><span class="o">.</span><span class="mi">0</span> <span class="o">--</span><span class="n">file</span><span class="o">-</span><span class="n">prefix</span><span class="o">=</span><span class="n">vf10</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span> <span class="o">--</span><span class="n">rxq</span><span class="o">=</span><span class="mi">4</span> <span class="o">--</span><span class="n">txq</span><span class="o">=</span><span class="mi">4</span>
</pre></div>
</div>
<p>create 14335 rules on vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.1</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
<span class="o">......</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">55.254</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>all the rules except the last one are created successfully.
check the rule list, there listed 14334 rules.</p>
</li>
<li><p class="first">send matched packet to vf00 and matched packet for rule 14333 to vf10,
check all packets are redirected to expected queue with FDIR matched ID=0x0</p>
</li>
<li><p class="first">delete 1 rule on pf0:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">delete</span> <span class="o"><</span><span class="n">Rule</span> <span class="n">ID</span><span class="o">></span>
</pre></div>
</div>
</li>
<li><p class="first">create one more rule on vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">55.254</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>the rule can be created successfully.</p>
</li>
<li><p class="first">send matched packet to vf10, it can be redirected to queue 1 with FDIR matched ID=0x0.</p>
</li>
<li><p class="first">flush all the rules, check the rule list,
there is no rule listed.</p>
</li>
<li><p class="first">verify matched packet received without FDIR matched ID.</p>
</li>
</ol>
</div>
<div class="section" id="subcase-4-15360-rules-on-1pf-and-0-rules-on-2vfs">
<h3>146.3.4. Subcase 4: 15360 rules on 1pf and 0 rules on 2vfs<a class="headerlink" href="#subcase-4-15360-rules-on-1pf-and-0-rules-on-2vfs" title="Permalink to this headline">¶</a></h3>
<p>each pf can create 1024 rules at least in 2 ports card.
each pf can create 512 rules at least in 4 ports card.
there are 14k rules shared by pfs and vfs.
so 1 pf and 2 vfs can create 15360 rules at most on 2 ports card.
1 pf and 2 vfs can create 14848 rules at most on 4 ports card.
so if create 15360/14848 rules on 1 pf, there can’t create rule on vf successfully.</p>
<ol class="arabic">
<li><p class="first">create 15360 rules on pf0:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">flow</span><span class="o">-</span><span class="nb">type</span> <span class="n">tcp4</span> <span class="n">src</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="n">dst</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">100.2</span> <span class="n">src</span><span class="o">-</span><span class="n">port</span> <span class="mi">32</span> <span class="n">dst</span><span class="o">-</span><span class="n">port</span> <span class="mi">33</span> <span class="n">action</span> <span class="mi">8</span>
<span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">flow</span><span class="o">-</span><span class="nb">type</span> <span class="n">tcp4</span> <span class="n">src</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.1</span> <span class="n">dst</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">100.2</span> <span class="n">src</span><span class="o">-</span><span class="n">port</span> <span class="mi">32</span> <span class="n">dst</span><span class="o">-</span><span class="n">port</span> <span class="mi">33</span> <span class="n">action</span> <span class="mi">8</span>
<span class="o">......</span>
<span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">flow</span><span class="o">-</span><span class="nb">type</span> <span class="n">tcp4</span> <span class="n">src</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">57.255</span> <span class="n">dst</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">100.2</span> <span class="n">src</span><span class="o">-</span><span class="n">port</span> <span class="mi">32</span> <span class="n">dst</span><span class="o">-</span><span class="n">port</span> <span class="mi">33</span> <span class="n">action</span> <span class="mi">8</span>
</pre></div>
</div>
<p>all the rules can be created successfully:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Added</span> <span class="n">rule</span> <span class="k">with</span> <span class="n">ID</span> <span class="o"><</span><span class="n">Rule</span> <span class="n">ID</span><span class="o">></span>
</pre></div>
</div>
</li>
<li><p class="first">failed to create one more rule on pf0:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">flow</span><span class="o">-</span><span class="nb">type</span> <span class="n">tcp4</span> <span class="n">src</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">58.0</span> <span class="n">dst</span><span class="o">-</span><span class="n">ip</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">100.2</span> <span class="n">src</span><span class="o">-</span><span class="n">port</span> <span class="mi">32</span> <span class="n">dst</span><span class="o">-</span><span class="n">port</span> <span class="mi">33</span> <span class="n">action</span> <span class="mi">8</span>
</pre></div>
</div>
</li>
<li><p class="first">start testpmd on vf00 and vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xf</span> <span class="o">-</span><span class="n">n</span> <span class="mi">6</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">01.0</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">11.0</span> <span class="o">--</span><span class="n">file</span><span class="o">-</span><span class="n">prefix</span><span class="o">=</span><span class="n">vf00</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span> <span class="o">--</span><span class="n">rxq</span><span class="o">=</span><span class="mi">4</span> <span class="o">--</span><span class="n">txq</span><span class="o">=</span><span class="mi">4</span>
</pre></div>
</div>
<p>create 1 rule on vf00:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>failed to create the rule, check there is no rule listed.</p>
<p>create 1 rule on vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">1</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>failed to create the rule, check there is no rule listed.</p>
</li>
<li><p class="first">delete 1 rule on pf0:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">delete</span> <span class="o"><</span><span class="n">Rule</span> <span class="n">ID</span><span class="o">></span>
</pre></div>
</div>
</li>
<li><p class="first">create 1 rule on vf00:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">55.254</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>the rule can be created successfully.</p>
<p>create 1 rule on vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">1</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>failed to create the rule, check there is no rule listed.</p>
</li>
<li><p class="first">send matched packet to vf00, it can be redirected to queue 1 with FDIR matched ID=0x0.
send matched packet to vf10, it is received without FDIR matched ID.</p>
</li>
<li><p class="first">delete 1 more rule on pf0:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ethtool</span> <span class="o">-</span><span class="n">N</span> <span class="n">enp134s0f0</span> <span class="n">delete</span> <span class="o"><</span><span class="n">Rule</span> <span class="n">ID</span><span class="o">></span>
</pre></div>
</div>
</li>
<li><p class="first">create 1 rule on vf10:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">1</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>the rule can be created successfully.</p>
</li>
<li><p class="first">send matched packet to vf00, it can be redirected to queue 1 with FDIR matched ID=0x0.
send matched packet to vf10, it can be redirected to queue 1 with FDIR matched ID=0x0.</p>
</li>
</ol>
</div>
</div>
<div class="section" id="test-case-stress-test">
<h2>146.4. Test case: Stress test<a class="headerlink" href="#test-case-stress-test" title="Permalink to this headline">¶</a></h2>
<div class="section" id="subcase-1-add-delete-rules">
<h3>146.4.1. Subcase 1: add/delete rules<a class="headerlink" href="#subcase-1-add-delete-rules" title="Permalink to this headline">¶</a></h3>
<ol class="arabic">
<li><p class="first">create two rules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.21</span> <span class="o">/</span> <span class="n">udp</span> <span class="n">src</span> <span class="ow">is</span> <span class="mi">22</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mi">23</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="nb">id</span> <span class="mi">0</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.21</span> <span class="o">/</span> <span class="n">tcp</span> <span class="n">src</span> <span class="ow">is</span> <span class="mi">22</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mi">23</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">rss</span> <span class="n">queues</span> <span class="mi">2</span> <span class="mi">3</span> <span class="n">end</span> <span class="o">/</span> <span class="n">mark</span> <span class="nb">id</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>return the message:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Flow</span> <span class="n">rule</span> <span class="c1">#0 created</span>
<span class="n">Flow</span> <span class="n">rule</span> <span class="c1">#1 created</span>
</pre></div>
</div>
<p>list the rules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="nb">list</span> <span class="mi">0</span>
<span class="n">ID</span>      <span class="n">Group</span>   <span class="n">Prio</span>    <span class="n">Attr</span>    <span class="n">Rule</span>
<span class="mi">0</span>       <span class="mi">0</span>       <span class="mi">0</span>       <span class="n">i</span><span class="o">--</span>     <span class="n">ETH</span> <span class="n">IPV4</span> <span class="n">UDP</span> <span class="o">=></span> <span class="n">QUEUE</span> <span class="n">MARK</span>
<span class="mi">1</span>       <span class="mi">0</span>       <span class="mi">0</span>       <span class="n">i</span><span class="o">--</span>     <span class="n">ETH</span> <span class="n">IPV4</span> <span class="n">TCP</span> <span class="o">=></span> <span class="n">RSS</span> <span class="n">MARK</span>
</pre></div>
</div>
</li>
<li><p class="first">delete the rules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="n">flush</span> <span class="mi">0</span>
</pre></div>
</div>
</li>
<li><p class="first">repeat the create and delete operations in step1-2 14336 times.</p>
</li>
<li><p class="first">create the two rules one more time, check the rules listed.</p>
</li>
<li><p class="first">send matched packet:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"00:11:22:33:44:55"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.0.20"</span><span class="p">,</span><span class="n">dst</span><span class="o">=</span><span class="s2">"192.168.0.21"</span><span class="p">)</span><span class="o">/</span><span class="n">UDP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">22</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="n">Raw</span><span class="p">(</span><span class="s1">'x'</span> <span class="o">*</span> <span class="mi">80</span><span class="p">)],</span><span class="n">iface</span><span class="o">=</span><span class="s2">"enp134s0f1"</span><span class="p">)</span>
<span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"00:11:22:33:44:55"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.0.20"</span><span class="p">,</span><span class="n">dst</span><span class="o">=</span><span class="s2">"192.168.0.21"</span><span class="p">)</span><span class="o">/</span><span class="n">TCP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">22</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="n">Raw</span><span class="p">(</span><span class="s1">'x'</span> <span class="o">*</span> <span class="mi">80</span><span class="p">)],</span><span class="n">iface</span><span class="o">=</span><span class="s2">"enp134s0f1"</span><span class="p">)</span>
</pre></div>
</div>
<p>check packet 1 is redirected to queue 1 with FDIR matched ID=0x0
check packet 2 is redirected to queue 2 or queue 3 with FDIR matched ID=0x1</p>
</li>
</ol>
</div>
<div class="section" id="subcase-2-add-delete-rules-on-two-vfs">
<h3>146.4.2. Subcase 2: add/delete rules on two VFs<a class="headerlink" href="#subcase-2-add-delete-rules-on-two-vfs" title="Permalink to this headline">¶</a></h3>
<ol class="arabic">
<li><p class="first">create a rule on each vf:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.1</span><span class="o">.</span><span class="mf">0.0</span> <span class="n">tos</span> <span class="ow">is</span> <span class="mi">4</span> <span class="o">/</span> <span class="n">tcp</span> <span class="n">src</span> <span class="ow">is</span> <span class="mi">22</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mi">23</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">5</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">1</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.1</span><span class="o">.</span><span class="mf">0.0</span> <span class="n">tos</span> <span class="ow">is</span> <span class="mi">4</span> <span class="o">/</span> <span class="n">tcp</span> <span class="n">src</span> <span class="ow">is</span> <span class="mi">22</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mi">23</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">5</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>return the message:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Flow</span> <span class="n">rule</span> <span class="c1">#0 created</span>
<span class="n">Flow</span> <span class="n">rule</span> <span class="c1">#0 created</span>
</pre></div>
</div>
<p>list the rules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="nb">list</span> <span class="mi">0</span>
<span class="n">ID</span>      <span class="n">Group</span>   <span class="n">Prio</span>    <span class="n">Attr</span>    <span class="n">Rule</span>
<span class="mi">0</span>       <span class="mi">0</span>       <span class="mi">0</span>       <span class="n">i</span><span class="o">--</span>     <span class="n">ETH</span> <span class="n">IPV4</span> <span class="n">TCP</span> <span class="o">=></span> <span class="n">QUEUE</span>
<span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="nb">list</span> <span class="mi">1</span>
<span class="n">ID</span>      <span class="n">Group</span>   <span class="n">Prio</span>    <span class="n">Attr</span>    <span class="n">Rule</span>
<span class="mi">0</span>       <span class="mi">0</span>       <span class="mi">0</span>       <span class="n">i</span><span class="o">--</span>     <span class="n">ETH</span> <span class="n">IPV4</span> <span class="n">TCP</span> <span class="o">=></span> <span class="n">QUEUE</span>
</pre></div>
</div>
</li>
<li><p class="first">delete the rules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">destroy</span> <span class="mi">0</span> <span class="n">rule</span> <span class="mi">0</span>
<span class="n">flow</span> <span class="n">destroy</span> <span class="mi">1</span> <span class="n">rule</span> <span class="mi">0</span>
</pre></div>
</div>
</li>
<li><p class="first">repeate the create and delete operations in step1-2 14336 times with different IP src address.</p>
</li>
<li><p class="first">create the rule on each vf one more time, check the rules listed:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">56.0</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.1</span><span class="o">.</span><span class="mf">0.0</span> <span class="n">tos</span> <span class="ow">is</span> <span class="mi">4</span> <span class="o">/</span> <span class="n">tcp</span> <span class="n">src</span> <span class="ow">is</span> <span class="mi">22</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mi">23</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">5</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">1</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">56.0</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.1</span><span class="o">.</span><span class="mf">0.0</span> <span class="n">tos</span> <span class="ow">is</span> <span class="mi">4</span> <span class="o">/</span> <span class="n">tcp</span> <span class="n">src</span> <span class="ow">is</span> <span class="mi">22</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mi">23</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">5</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
</li>
<li><p class="first">send matched packet:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"00:11:22:33:44:55"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.56.0"</span><span class="p">,</span><span class="n">dst</span><span class="o">=</span><span class="s2">"192.1.0.0"</span><span class="p">,</span><span class="n">tos</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span><span class="o">/</span><span class="n">TCP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">22</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="n">Raw</span><span class="p">(</span><span class="s1">'x'</span> <span class="o">*</span> <span class="mi">80</span><span class="p">)],</span><span class="n">iface</span><span class="o">=</span><span class="s2">"enp134s0f1"</span><span class="p">)</span>
<span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"00:11:22:33:44:66"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.56.0"</span><span class="p">,</span><span class="n">dst</span><span class="o">=</span><span class="s2">"192.1.0.0"</span><span class="p">,</span><span class="n">tos</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span><span class="o">/</span><span class="n">TCP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">22</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="n">Raw</span><span class="p">(</span><span class="s1">'x'</span> <span class="o">*</span> <span class="mi">80</span><span class="p">)],</span><span class="n">iface</span><span class="o">=</span><span class="s2">"enp134s0f1"</span><span class="p">)</span>
</pre></div>
</div>
<p>check the packet is redirected to queue 5 of two vfs.</p>
</li>
</ol>
</div>
</div>
<div class="section" id="id1">
<h2>146.5. Prerequisites<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
<ol class="arabic">
<li><p class="first">Hardware:
columbiaville_25g/columbiaville_100g
design the cases with 2 ports card.</p>
</li>
<li><p class="first">Software:
DPDK: <a class="reference external" href="http://dpdk.org/git/dpdk">http://dpdk.org/git/dpdk</a>
scapy: <a class="reference external" href="http://www.secdev.org/projects/scapy/">http://www.secdev.org/projects/scapy/</a></p>
</li>
<li><p class="first">Copy specific ice package to /lib/firmware/intel/ice/ddp/ice.pkg
Then reboot server, and compile DPDK</p>
</li>
<li><p class="first">Bind the pf to dpdk driver:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">usertools</span><span class="o">/</span><span class="n">dpdk</span><span class="o">-</span><span class="n">devbind</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">b</span> <span class="n">igb_uio</span> <span class="mi">86</span><span class="p">:</span><span class="mf">00.0</span> <span class="mi">86</span><span class="p">:</span><span class="mf">00.1</span>
</pre></div>
</div>
</li>
<li><p class="first">Launch the app <code class="docutils literal"><span class="pre">testpmd</span></code> with the following arguments:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xff</span> <span class="o">-</span><span class="n">n</span> <span class="mi">6</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">00.0</span> <span class="o">--</span><span class="n">log</span><span class="o">-</span><span class="n">level</span><span class="o">=</span><span class="s2">"ice,7"</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span> <span class="o">--</span><span class="n">portmask</span><span class="o">=</span><span class="mh">0xff</span> <span class="o">--</span><span class="n">rxq</span><span class="o">=</span><span class="mi">64</span> <span class="o">--</span><span class="n">txq</span><span class="o">=</span><span class="mi">64</span> <span class="o">--</span><span class="n">port</span><span class="o">-</span><span class="n">topology</span><span class="o">=</span><span class="n">loop</span>
<span class="n">testpmd</span><span class="o">></span> <span class="nb">set</span> <span class="n">fwd</span> <span class="n">rxonly</span>
<span class="n">testpmd</span><span class="o">></span> <span class="nb">set</span> <span class="n">verbose</span> <span class="mi">1</span>
</pre></div>
</div>
<p>If set UDP tunnel flow rule:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">port</span> <span class="n">config</span> <span class="mi">0</span> <span class="n">udp_tunnel_port</span> <span class="n">add</span> <span class="n">vxlan</span> <span class="mi">4789</span>
<span class="n">testpmd</span><span class="o">></span> <span class="n">start</span>
</pre></div>
</div>
<p>Notes: if need two ports environment, launch <code class="docutils literal"><span class="pre">testpmd</span></code> with the following arguments:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xff</span> <span class="o">-</span><span class="n">n</span> <span class="mi">6</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">00.0</span> <span class="o">-</span><span class="n">w</span> <span class="mi">86</span><span class="p">:</span><span class="mf">00.1</span> <span class="o">--</span><span class="n">log</span><span class="o">-</span><span class="n">level</span><span class="o">=</span><span class="s2">"ice,7"</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span> <span class="o">--</span><span class="n">portmask</span><span class="o">=</span><span class="mh">0xff</span> <span class="o">--</span><span class="n">rxq</span><span class="o">=</span><span class="mi">64</span> <span class="o">--</span><span class="n">txq</span><span class="o">=</span><span class="mi">64</span> <span class="o">--</span><span class="n">port</span><span class="o">-</span><span class="n">topology</span><span class="o">=</span><span class="n">loop</span>
</pre></div>
</div>
</li>
</ol>
</div>
<div class="section" id="test-case-add-delete-rules">
<h2>146.6. Test case: add/delete rules<a class="headerlink" href="#test-case-add-delete-rules" title="Permalink to this headline">¶</a></h2>
<ol class="arabic">
<li><p class="first">create two rules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.21</span> <span class="o">/</span> <span class="n">udp</span> <span class="n">src</span> <span class="ow">is</span> <span class="mi">22</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mi">23</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">queue</span> <span class="n">index</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">mark</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.20</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.21</span> <span class="o">/</span> <span class="n">tcp</span> <span class="n">src</span> <span class="ow">is</span> <span class="mi">22</span> <span class="n">dst</span> <span class="ow">is</span> <span class="mi">23</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">rss</span> <span class="n">queues</span> <span class="mi">2</span> <span class="mi">3</span> <span class="n">end</span> <span class="o">/</span> <span class="n">mark</span> <span class="nb">id</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>return the message:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Flow</span> <span class="n">rule</span> <span class="c1">#0 created</span>
<span class="n">Flow</span> <span class="n">rule</span> <span class="c1">#1 created</span>
</pre></div>
</div>
<p>list the rules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="nb">list</span> <span class="mi">0</span>
<span class="n">ID</span>      <span class="n">Group</span>   <span class="n">Prio</span>    <span class="n">Attr</span>    <span class="n">Rule</span>
<span class="mi">0</span>       <span class="mi">0</span>       <span class="mi">0</span>       <span class="n">i</span><span class="o">--</span>     <span class="n">ETH</span> <span class="n">IPV4</span> <span class="n">UDP</span> <span class="o">=></span> <span class="n">QUEUE</span> <span class="n">MARK</span>
<span class="mi">1</span>       <span class="mi">0</span>       <span class="mi">0</span>       <span class="n">i</span><span class="o">--</span>     <span class="n">ETH</span> <span class="n">IPV4</span> <span class="n">TCP</span> <span class="o">=></span> <span class="n">RSS</span> <span class="n">MARK</span>
</pre></div>
</div>
</li>
<li><p class="first">delete the rules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="n">flush</span> <span class="mi">0</span>
</pre></div>
</div>
</li>
<li><p class="first">repeate the create and delete operations in step1-2 15360 times.</p>
</li>
<li><p class="first">create the two rules one more time, check the rules listed.</p>
</li>
<li><p class="first">send matched packet:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"00:11:22:33:44:55"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.0.20"</span><span class="p">,</span><span class="n">dst</span><span class="o">=</span><span class="s2">"192.168.0.21"</span><span class="p">)</span><span class="o">/</span><span class="n">UDP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">22</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="n">Raw</span><span class="p">(</span><span class="s1">'x'</span> <span class="o">*</span> <span class="mi">80</span><span class="p">)],</span><span class="n">iface</span><span class="o">=</span><span class="s2">"enp175s0f0"</span><span class="p">)</span>
<span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"00:11:22:33:44:55"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.0.20"</span><span class="p">,</span><span class="n">dst</span><span class="o">=</span><span class="s2">"192.168.0.21"</span><span class="p">)</span><span class="o">/</span><span class="n">TCP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">22</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="n">Raw</span><span class="p">(</span><span class="s1">'x'</span> <span class="o">*</span> <span class="mi">80</span><span class="p">)],</span><span class="n">iface</span><span class="o">=</span><span class="s2">"enp175s0f0"</span><span class="p">)</span>
</pre></div>
</div>
<p>check packet 1 is redirected to queue 1 with FDIR matched ID=0x0
check packet 2 is redirected to queue 2 or queue 3 with FDIR matched ID=0x1</p>
</li>
</ol>
</div>
<div class="section" id="id2">
<h2>146.7. Prerequisites<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
<ol class="arabic">
<li><p class="first">Hardware:
columbiaville_25g/columbiaville_100g
design the cases with 2 ports card.</p>
</li>
<li><p class="first">Software:
dpdk: <a class="reference external" href="http://dpdk.org/git/dpdk">http://dpdk.org/git/dpdk</a>
scapy: <a class="reference external" href="http://www.secdev.org/projects/scapy/">http://www.secdev.org/projects/scapy/</a></p>
</li>
<li><p class="first">Copy specific ice package to /lib/firmware/updates/intel/ice/ddp/ice.pkg,
then load driver:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">rmmod</span> <span class="n">ice</span>
<span class="n">insmod</span> <span class="n">ice</span><span class="o">.</span><span class="n">ko</span>
</pre></div>
</div>
</li>
<li><p class="first">Get the pci device id of DUT, for example:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">usertools</span><span class="o">/</span><span class="n">dpdk</span><span class="o">-</span><span class="n">devbind</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">s</span>

<span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">00.0</span> <span class="s1">'Device 1593'</span> <span class="k">if</span><span class="o">=</span><span class="n">enp24s0f0</span> <span class="n">drv</span><span class="o">=</span><span class="n">ice</span> <span class="n">unused</span><span class="o">=</span><span class="n">vfio</span><span class="o">-</span><span class="n">pci</span>
<span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">00.1</span> <span class="s1">'Device 1593'</span> <span class="k">if</span><span class="o">=</span><span class="n">enp24s0f1</span> <span class="n">drv</span><span class="o">=</span><span class="n">ice</span> <span class="n">unused</span><span class="o">=</span><span class="n">vfio</span><span class="o">-</span><span class="n">pci</span>
</pre></div>
</div>
</li>
<li><p class="first">Generate 4 VFs on PF0:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">echo</span> <span class="mi">4</span> <span class="o">></span> <span class="o">/</span><span class="n">sys</span><span class="o">/</span><span class="n">bus</span><span class="o">/</span><span class="n">pci</span><span class="o">/</span><span class="n">devices</span><span class="o">/</span><span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">00.0</span><span class="o">/</span><span class="n">sriov_numvfs</span>

<span class="o">./</span><span class="n">usertools</span><span class="o">/</span><span class="n">dpdk</span><span class="o">-</span><span class="n">devbind</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">s</span>
<span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.0</span> <span class="s1">'Ethernet Adaptive Virtual Function 1889'</span> <span class="k">if</span><span class="o">=</span><span class="n">enp24s1</span> <span class="n">drv</span><span class="o">=</span><span class="n">iavf</span> <span class="n">unused</span><span class="o">=</span><span class="n">vfio</span><span class="o">-</span><span class="n">pci</span>
<span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.1</span> <span class="s1">'Ethernet Adaptive Virtual Function 1889'</span> <span class="k">if</span><span class="o">=</span><span class="n">enp24s1f1</span> <span class="n">drv</span><span class="o">=</span><span class="n">iavf</span> <span class="n">unused</span><span class="o">=</span><span class="n">vfio</span><span class="o">-</span><span class="n">pci</span>
<span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.2</span> <span class="s1">'Ethernet Adaptive Virtual Function 1889'</span> <span class="k">if</span><span class="o">=</span><span class="n">enp24s1f2</span> <span class="n">drv</span><span class="o">=</span><span class="n">iavf</span> <span class="n">unused</span><span class="o">=</span><span class="n">vfio</span><span class="o">-</span><span class="n">pci</span>
<span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.3</span> <span class="s1">'Ethernet Adaptive Virtual Function 1889'</span> <span class="k">if</span><span class="o">=</span><span class="n">enp24s1f3</span> <span class="n">drv</span><span class="o">=</span><span class="n">iavf</span> <span class="n">unused</span><span class="o">=</span><span class="n">vfio</span><span class="o">-</span><span class="n">pci</span>
</pre></div>
</div>
</li>
<li><p class="first">Set VF0 as trust:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ip</span> <span class="n">link</span> <span class="nb">set</span> <span class="n">enp24s0f0</span> <span class="n">vf</span> <span class="mi">0</span> <span class="n">trust</span> <span class="n">on</span>
</pre></div>
</div>
</li>
<li><p class="first">Bind VFs to dpdk driver:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">modprobe</span> <span class="n">vfio</span><span class="o">-</span><span class="n">pci</span>
<span class="o">./</span><span class="n">usertools</span><span class="o">/</span><span class="n">dpdk</span><span class="o">-</span><span class="n">devbind</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">b</span> <span class="n">vfio</span><span class="o">-</span><span class="n">pci</span> <span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.0</span> <span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.1</span> <span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.2</span> <span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.3</span>
</pre></div>
</div>
</li>
<li><p class="first">Launch dpdk on VF0 and VF1, and VF0 request DCF mode:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">x86_64</span><span class="o">-</span><span class="n">native</span><span class="o">-</span><span class="n">linuxapp</span><span class="o">-</span><span class="n">gcc</span><span class="o">/</span><span class="n">app</span><span class="o">/</span><span class="n">testpmd</span> <span class="o">-</span><span class="n">c</span> <span class="mh">0xf</span> <span class="o">-</span><span class="n">n</span> <span class="mi">4</span> <span class="o">-</span><span class="n">w</span> <span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.0</span><span class="p">,</span><span class="n">cap</span><span class="o">=</span><span class="n">dcf</span> <span class="o">-</span><span class="n">w</span> <span class="mi">0000</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mf">01.1</span> <span class="o">--</span> <span class="o">-</span><span class="n">i</span>
<span class="n">testpmd</span><span class="o">></span> <span class="nb">set</span> <span class="n">portlist</span> <span class="mi">1</span>
<span class="n">testpmd</span><span class="o">></span> <span class="nb">set</span> <span class="n">fwd</span> <span class="n">rxonly</span>
<span class="n">testpmd</span><span class="o">></span> <span class="nb">set</span> <span class="n">verbose</span> <span class="mi">1</span>
<span class="n">testpmd</span><span class="o">></span> <span class="n">start</span>
<span class="n">testpmd</span><span class="o">></span> <span class="n">show</span> <span class="n">port</span> <span class="n">info</span> <span class="nb">all</span>
</pre></div>
</div>
<p>check the VF0 driver is net_ice_dcf.</p>
</li>
<li><p class="first">on tester side, copy the layer python file to /root:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>  <span class="n">cp</span> <span class="n">pfcp</span><span class="o">.</span><span class="n">py</span> <span class="n">to</span> <span class="o">/</span><span class="n">root</span>

<span class="n">then</span> <span class="kn">import</span> <span class="nn">layers</span> <span class="n">when</span> <span class="n">start</span> <span class="n">scapy</span><span class="p">::</span>

  <span class="o">>>></span> <span class="kn">import</span> <span class="nn">sys</span>
  <span class="o">>>></span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'/root'</span><span class="p">)</span>
  <span class="o">>>></span> <span class="kn">from</span> <span class="nn">pfcp</span> <span class="k">import</span> <span class="n">PFCP</span>
  <span class="o">>>></span> <span class="kn">from</span> <span class="nn">scapy.contrib.igmp</span> <span class="k">import</span> <span class="o">*</span>
</pre></div>
</div>
</li>
</ol>
</div>
<div class="section" id="test-case-max-rule-number">
<h2>146.8. Test case: max rule number<a class="headerlink" href="#test-case-max-rule-number" title="Permalink to this headline">¶</a></h2>
<p>Description: 32k switch filter rules can be created on a CVL card,
and all PFs and VFs share the 32k rules. But the system will first create
some MAC_VLAN rules in switch table, and as the number of rules increased,
the hash conflicts in the switch filter table are increased, so we can
create a total of 32563 switch filter rules on a DCF.</p>
<ol class="arabic">
<li><p class="first">create 32563 rules with the same pattern, but different input set:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.0</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">vf</span> <span class="nb">id</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.1</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">vf</span> <span class="nb">id</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">end</span>
<span class="o">......</span>
<span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">127.177</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">vf</span> <span class="nb">id</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">end</span>
<span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="nb">list</span> <span class="mi">0</span>
</pre></div>
</div>
<p>check the rules exist in the list.</p>
</li>
<li><p class="first">create one more rule:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="n">create</span> <span class="mi">0</span> <span class="n">ingress</span> <span class="n">pattern</span> <span class="n">eth</span> <span class="o">/</span> <span class="n">ipv4</span> <span class="n">src</span> <span class="ow">is</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">127.178</span> <span class="o">/</span> <span class="n">end</span> <span class="n">actions</span> <span class="n">vf</span> <span class="nb">id</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">end</span>
</pre></div>
</div>
<p>check the rule can not be created successfully, and
testpmd provide a friendly output, showing:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ice_flow_create</span><span class="p">():</span> <span class="n">Failed</span> <span class="n">to</span> <span class="n">create</span> <span class="n">flow</span>
<span class="n">port_flow_complain</span><span class="p">():</span> <span class="n">Caught</span> <span class="n">PMD</span> <span class="n">error</span> <span class="nb">type</span> <span class="mi">2</span> <span class="p">(</span><span class="n">flow</span> <span class="n">rule</span> <span class="p">(</span><span class="n">handle</span><span class="p">)):</span> <span class="n">switch</span> <span class="nb">filter</span> <span class="n">create</span> <span class="n">flow</span> <span class="n">fail</span><span class="p">:</span> <span class="n">Invalid</span> <span class="n">argument</span>
</pre></div>
</div>
</li>
<li><p class="first">check the rule list</p>
<blockquote>
<div><p>testpmd> flow list 0</p>
</div></blockquote>
<p>check the rule in step 2 not exists in the list.</p>
</li>
<li><p class="first">send 32563 matched packets for rule 0-32562:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"68:05:ca:8d:ed:a8"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.0.0"</span><span class="p">)</span><span class="o">/</span><span class="n">TCP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="s2">"X"</span><span class="o">*</span><span class="mi">480</span><span class="p">)],</span> <span class="n">iface</span><span class="o">=</span><span class="s2">"ens786f0"</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"68:05:ca:8d:ed:a8"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.0.1"</span><span class="p">)</span><span class="o">/</span><span class="n">TCP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="s2">"X"</span><span class="o">*</span><span class="mi">480</span><span class="p">)],</span> <span class="n">iface</span><span class="o">=</span><span class="s2">"ens786f0"</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="o">......</span>
<span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"68:05:ca:8d:ed:a8"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.168.127.177"</span><span class="p">)</span><span class="o">/</span><span class="n">TCP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="s2">"X"</span><span class="o">*</span><span class="mi">480</span><span class="p">)],</span> <span class="n">iface</span><span class="o">=</span><span class="s2">"ens786f0"</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
</div>
<p>check port 1 receive the 32563 packets.
send 1 mismatched packet:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sendp</span><span class="p">([</span><span class="n">Ether</span><span class="p">(</span><span class="n">dst</span><span class="o">=</span><span class="s2">"68:05:ca:8d:ed:a8"</span><span class="p">)</span><span class="o">/</span><span class="n">IP</span><span class="p">(</span><span class="n">src</span><span class="o">=</span><span class="s2">"192.167.0.1"</span><span class="p">)</span><span class="o">/</span><span class="n">TCP</span><span class="p">(</span><span class="n">sport</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">dport</span><span class="o">=</span><span class="mi">23</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="s2">"X"</span><span class="o">*</span><span class="mi">480</span><span class="p">)],</span> <span class="n">iface</span><span class="o">=</span><span class="s2">"ens786f0"</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
</div>
<p>check the packet are not to port 1.</p>
</li>
<li><p class="first">verify rules can be destroyed:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="n">flush</span> <span class="mi">0</span>
<span class="n">testpmd</span><span class="o">></span> <span class="n">flow</span> <span class="nb">list</span> <span class="mi">0</span>
</pre></div>
</div>
<p>check the rules not exist in the list.
send 32563 matched packets, check the packets are not to port 1.</p>
</li>
</ol>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">146. CVL Limit Value Test</a><ul>
<li><a class="reference internal" href="#description">146.1. Description</a><ul>
<li><a class="reference internal" href="#supported-function-type">146.1.1. Supported function type</a></li>
<li><a class="reference internal" href="#supported-action-type">146.1.2. Supported action type</a></li>
</ul>
</li>
<li><a class="reference internal" href="#prerequisites">146.2. Prerequisites</a></li>
<li><a class="reference internal" href="#test-case-max-number">146.3. Test case: Max number</a><ul>
<li><a class="reference internal" href="#subcase-1-14336-rules-on-1-vf">146.3.1. Subcase 1: 14336 rules on 1 vf</a></li>
<li><a class="reference internal" href="#subcase-2-14336-rules-on-2-vfs-of-2pfs">146.3.2. Subcase 2: 14336 rules on 2 vfs of 2pfs</a></li>
<li><a class="reference internal" href="#subcase-3-1025-rules-on-1pf-and-14335-rules-on-2vfs">146.3.3. Subcase 3: 1025 rules on 1pf and 14335 rules on 2vfs</a></li>
<li><a class="reference internal" href="#subcase-4-15360-rules-on-1pf-and-0-rules-on-2vfs">146.3.4. Subcase 4: 15360 rules on 1pf and 0 rules on 2vfs</a></li>
</ul>
</li>
<li><a class="reference internal" href="#test-case-stress-test">146.4. Test case: Stress test</a><ul>
<li><a class="reference internal" href="#subcase-1-add-delete-rules">146.4.1. Subcase 1: add/delete rules</a></li>
<li><a class="reference internal" href="#subcase-2-add-delete-rules-on-two-vfs">146.4.2. Subcase 2: add/delete rules on two VFs</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id1">146.5. Prerequisites</a></li>
<li><a class="reference internal" href="#test-case-add-delete-rules">146.6. Test case: add/delete rules</a></li>
<li><a class="reference internal" href="#id2">146.7. Prerequisites</a></li>
<li><a class="reference internal" href="#test-case-max-rule-number">146.8. Test case: max rule number</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
  <li><a href="index.html">Documentation overview</a><ul>
      <li>Previous: <a href="metrics_test_plan.html" title="previous chapter">145. metrics</a></li>
      <li>Next: <a href="veb_switch_test_plan.html" title="next chapter">147. VEB Switch and floating VEB Tests</a></li>
  </ul></li>
</ul>
</div>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="_sources/cvl_limit_value_test_test_plan.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <div><input type="text" name="q" /></div>
      <div><input type="submit" value="Go" /></div>
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="footer">
      ©2017, dpdk.org.
      
      |
      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.7</a>
      & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
      
      |
      <a href="_sources/cvl_limit_value_test_test_plan.rst.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>