<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-CA" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hello,<o:p></o:p></p>
<p class="MsoNormal">I am using OVS DPDK 2.9.2 with TRex traffic generator to simply forward the received traffic back to the traffic generator (i.e. ingress0->egeress0, egress0->ingress0) over 2 port 10G NIC.<o:p></o:p></p>
<p class="MsoNormal">The OVS throughput with this setup matches the traffic generator (all packets sent by TG are received). And we are getting around 2.5Mpps of traffic forwarded fine (we can probably go even higher, so that’s not a limit).<o:p></o:p></p>
<p class="MsoNormal">Our next goal is to have the TG traffic also mirrored over additional 2 10G ports to a monitoring device and we use SELECT group to achieve load balancing of mirrored traffic. When we add the group as follows:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">ovs-ofctl -O OpenFlow13 add-group br0 group_id=5,type=select,bucket=output:mirror0,bucket=output:mirror1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">ovs-ofctl -O OpenFlow13 add-flow br0 "table=5, metadata=0,in_port=egress0,actions=group:5,output:ingress0"<o:p></o:p></p>
<p class="MsoNormal">ovs-ofctl -O OpenFlow13 add-flow br0 "table=5, metadata=0,in_port=ingress0,actions=group:5,output:egress0"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">mirror0 and mirror1 being our mirror ports. The mirroring works as expected, however the OVS throughput drops to less than 500 Kpps (as reported by the traffic generator).
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The ingress0 and egress0 (i.e. ports that receive traffic) show packets being dropped in large numbers. Adding more pmd cores and distributing Rx queues among them has no effect. Changing the hash fields of the SELECT group has no effect
 either.<o:p></o:p></p>
<p class="MsoNormal">My question is: is there a way to give more cores/memory or otherwise influence the hash calculation and SELECT group action to make it more performant? less than 500Kpps seems like a very low number.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Just in case, here’s the output of the most important statistics commands:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">ovs-vsctl --column statistics list interface egress0<o:p></o:p></p>
<p class="MsoNormal">statistics          : {flow_director_filter_add_errors=0, flow_director_filter_remove_errors=0, mac_local_errors=17, mac_remote_errors=1, "rx_128_to_255_packets"=3936120, "rx_1_to_64_packets"=14561687, "rx_256_to_511_packets"=1624884, "rx_512_to_1023_packets"=2180436,
 "rx_65_to_127_packets"=21519189, rx_broadcast_packets=17, rx_bytes=23487692367, rx_crc_errors=0, rx_dropped=23759559, rx_errors=0, rx_fcoe_crc_errors=0, rx_fcoe_dropped=0, rx_fcoe_mbuf_allocation_errors=0, rx_fragment_errors=0, rx_illegal_byte_errors=0, rx_jabber_errors=0,
 rx_length_errors=0, rx_mac_short_packet_dropped=0, rx_management_dropped=0, rx_management_packets=0, rx_mbuf_allocation_errors=0, rx_missed_errors=23759559, rx_oversize_errors=0, rx_packets=39363905, "rx_priority0_dropped"=23759559, "rx_priority0_mbuf_allocation_errors"=0,
 "rx_priority1_dropped"=0, "rx_priority1_mbuf_allocation_errors"=0, "rx_priority2_dropped"=0, "rx_priority2_mbuf_allocation_errors"=0, "rx_priority3_dropped"=0, "rx_priority3_mbuf_allocation_errors"=0, "rx_priority4_dropped"=0, "rx_priority4_mbuf_allocation_errors"=0,
 "rx_priority5_dropped"=0, "rx_priority5_mbuf_allocation_errors"=0, "rx_priority6_dropped"=0, "rx_priority6_mbuf_allocation_errors"=0, "rx_priority7_dropped"=0, "rx_priority7_mbuf_allocation_errors"=0, rx_undersize_errors=0, "tx_128_to_255_packets"=1549647,
 "tx_1_to_64_packets"=10995089, "tx_256_to_511_packets"=7309468, "tx_512_to_1023_packets"=739062, "tx_65_to_127_packets"=7837579, tx_broadcast_packets=6, tx_bytes=28481732482, tx_dropped=0, tx_errors=0, tx_management_packets=0, tx_multicast_packets=0, tx_packets=43936201}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">ovs-vsctl --column statistics list interface ingress0<o:p></o:p></p>
<p class="MsoNormal">statistics          : {flow_director_filter_add_errors=0, flow_director_filter_remove_errors=0, mac_local_errors=37, mac_remote_errors=1, "rx_128_to_255_packets"=2778420, "rx_1_to_64_packets"=18198197, "rx_256_to_511_packets"=13168041,
 "rx_512_to_1023_packets"=886524, "rx_65_to_127_packets"=14853438, rx_broadcast_packets=17, rx_bytes=28481734408, rx_crc_errors=0, rx_dropped=22718779, rx_errors=0, rx_fcoe_crc_errors=0, rx_fcoe_dropped=0, rx_fcoe_mbuf_allocation_errors=0, rx_fragment_errors=0,
 rx_illegal_byte_errors=0, rx_jabber_errors=0, rx_length_errors=0, rx_mac_short_packet_dropped=0, rx_management_dropped=0, rx_management_packets=0, rx_mbuf_allocation_errors=0, rx_missed_errors=22718779, rx_oversize_errors=0, rx_packets=43936225, "rx_priority0_dropped"=22718779,
 "rx_priority0_mbuf_allocation_errors"=0, "rx_priority1_dropped"=0, "rx_priority1_mbuf_allocation_errors"=0, "rx_priority2_dropped"=0, "rx_priority2_mbuf_allocation_errors"=0, "rx_priority3_dropped"=0, "rx_priority3_mbuf_allocation_errors"=0, "rx_priority4_dropped"=0,
 "rx_priority4_mbuf_allocation_errors"=0, "rx_priority5_dropped"=0, "rx_priority5_mbuf_allocation_errors"=0, "rx_priority6_dropped"=0, "rx_priority6_mbuf_allocation_errors"=0, "rx_priority7_dropped"=0, "rx_priority7_mbuf_allocation_errors"=0, rx_undersize_errors=0,
 "tx_128_to_255_packets"=1793095, "tx_1_to_64_packets"=7027091, "tx_256_to_511_packets"=783763, "tx_512_to_1023_packets"=1133960, "tx_65_to_127_packets"=14219400, tx_broadcast_packets=6, tx_bytes=23487691707, tx_dropped=0, tx_errors=0, tx_management_packets=0,
 tx_multicast_packets=0, tx_packets=39363894}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">ovs-appctl dpif-netdev/pmd-rxq-show<o:p></o:p></p>
<p class="MsoNormal">pmd thread numa_id 0 core_id 2:<o:p></o:p></p>
<p class="MsoNormal">        isolated : true<o:p></o:p></p>
<p class="MsoNormal">        port: egress0           queue-id:  0    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">        port: ingress0          queue-id:  0    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">        port: mirror0           queue-id:  0    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">pmd thread numa_id 0 core_id 3:<o:p></o:p></p>
<p class="MsoNormal">        isolated : true<o:p></o:p></p>
<p class="MsoNormal">        port: egress0           queue-id:  1    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">        port: ingress0          queue-id:  1    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">        port: mirror1           queue-id:  0    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">pmd thread numa_id 0 core_id 4:<o:p></o:p></p>
<p class="MsoNormal">        isolated : true<o:p></o:p></p>
<p class="MsoNormal">        port: egress0           queue-id:  2    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">        port: ingress0          queue-id:  2    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">pmd thread numa_id 0 core_id 5:<o:p></o:p></p>
<p class="MsoNormal">        isolated : true<o:p></o:p></p>
<p class="MsoNormal">        port: egress0           queue-id:  3    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal">        port: ingress0          queue-id:  3    pmd usage:  0 %<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">ovs-appctl dpif-netdev/pmd-stats-show<o:p></o:p></p>
<p class="MsoNormal">pmd thread numa_id 0 core_id 2:<o:p></o:p></p>
<p class="MsoNormal">        packets received: 21323462<o:p></o:p></p>
<p class="MsoNormal">        packet recirculations: 0<o:p></o:p></p>
<p class="MsoNormal">        avg. datapath passes per packet: 1.00<o:p></o:p></p>
<p class="MsoNormal">        emc hits: 5119195<o:p></o:p></p>
<p class="MsoNormal">        megaflow hits: 8461953<o:p></o:p></p>
<p class="MsoNormal">        avg. subtable lookups per megaflow hit: 1.01<o:p></o:p></p>
<p class="MsoNormal">        miss with success upcall: 2286723<o:p></o:p></p>
<p class="MsoNormal">        miss with failed upcall: 5455591<o:p></o:p></p>
<p class="MsoNormal">        avg. packets per output batch: 2.81<o:p></o:p></p>
<p class="MsoNormal">        idle cycles: 18540475978691 (98.75%)<o:p></o:p></p>
<p class="MsoNormal">        processing cycles: 235616197026 (1.25%)<o:p></o:p></p>
<p class="MsoNormal">        avg cycles per packet: 880536.76 (18776092175717/21323462)<o:p></o:p></p>
<p class="MsoNormal">        avg processing cycles per packet: 11049.62 (235616197026/21323462)<o:p></o:p></p>
<p class="MsoNormal">pmd thread numa_id 0 core_id 3:<o:p></o:p></p>
<p class="MsoNormal">        packets received: 20654639<o:p></o:p></p>
<p class="MsoNormal">        packet recirculations: 0<o:p></o:p></p>
<p class="MsoNormal">        avg. datapath passes per packet: 1.00<o:p></o:p></p>
<p class="MsoNormal">        emc hits: 4449782<o:p></o:p></p>
<p class="MsoNormal">        megaflow hits: 7736708<o:p></o:p></p>
<p class="MsoNormal">        avg. subtable lookups per megaflow hit: 1.00<o:p></o:p></p>
<p class="MsoNormal">        miss with success upcall: 2567728<o:p></o:p></p>
<p class="MsoNormal">        miss with failed upcall: 5900421<o:p></o:p></p>
<p class="MsoNormal">        avg. packets per output batch: 3.00<o:p></o:p></p>
<p class="MsoNormal">        idle cycles: 18531334403507 (98.69%)<o:p></o:p></p>
<p class="MsoNormal">        processing cycles: 245349593515 (1.31%)<o:p></o:p></p>
<p class="MsoNormal">        avg cycles per packet: 909078.29 (18776683997022/20654639)<o:p></o:p></p>
<p class="MsoNormal">        avg processing cycles per packet: 11878.67 (245349593515/20654639)<o:p></o:p></p>
<p class="MsoNormal">pmd thread numa_id 0 core_id 4:<o:p></o:p></p>
<p class="MsoNormal">        packets received: 20430879<o:p></o:p></p>
<p class="MsoNormal">        packet recirculations: 0<o:p></o:p></p>
<p class="MsoNormal">        avg. datapath passes per packet: 1.00<o:p></o:p></p>
<p class="MsoNormal">        emc hits: 4361365<o:p></o:p></p>
<p class="MsoNormal">        megaflow hits: 8641516<o:p></o:p></p>
<p class="MsoNormal">        avg. subtable lookups per megaflow hit: 1.00<o:p></o:p></p>
<p class="MsoNormal">        miss with success upcall: 2175208<o:p></o:p></p>
<p class="MsoNormal">        miss with failed upcall: 5252790<o:p></o:p></p>
<p class="MsoNormal">        avg. packets per output batch: 2.86<o:p></o:p></p>
<p class="MsoNormal">        idle cycles: 18547971632247 (98.79%)<o:p></o:p></p>
<p class="MsoNormal">        processing cycles: 228120403283 (1.21%)<o:p></o:p></p>
<p class="MsoNormal">        avg cycles per packet: 919005.59 (18776092035530/20430879)<o:p></o:p></p>
<p class="MsoNormal">        avg processing cycles per packet: 11165.47 (228120403283/20430879)<o:p></o:p></p>
<p class="MsoNormal">pmd thread numa_id 0 core_id 5:<o:p></o:p></p>
<p class="MsoNormal">        packets received: 20891150<o:p></o:p></p>
<p class="MsoNormal">        packet recirculations: 0<o:p></o:p></p>
<p class="MsoNormal">        avg. datapath passes per packet: 1.00<o:p></o:p></p>
<p class="MsoNormal">        emc hits: 4679834<o:p></o:p></p>
<p class="MsoNormal">        megaflow hits: 8247466<o:p></o:p></p>
<p class="MsoNormal">        avg. subtable lookups per megaflow hit: 1.00<o:p></o:p></p>
<p class="MsoNormal">        miss with success upcall: 2350916<o:p></o:p></p>
<p class="MsoNormal">        miss with failed upcall: 5612934<o:p></o:p></p>
<p class="MsoNormal">        avg. packets per output batch: 2.92<o:p></o:p></p>
<p class="MsoNormal">        idle cycles: 18540271879537 (98.74%)<o:p></o:p></p>
<p class="MsoNormal">        processing cycles: 235820084225 (1.26%)<o:p></o:p></p>
<p class="MsoNormal">        avg cycles per packet: 898758.18 (18776091963762/20891150)<o:p></o:p></p>
<p class="MsoNormal">        avg processing cycles per packet: 11288.04 (235820084225/20891150)<o:p></o:p></p>
<p class="MsoNormal">main thread:<o:p></o:p></p>
<p class="MsoNormal">        packets received: 0<o:p></o:p></p>
<p class="MsoNormal">        packet recirculations: 0<o:p></o:p></p>
<p class="MsoNormal">        avg. datapath passes per packet: 0.00<o:p></o:p></p>
<p class="MsoNormal">        emc hits: 0<o:p></o:p></p>
<p class="MsoNormal">        megaflow hits: 0<o:p></o:p></p>
<p class="MsoNormal">        avg. subtable lookups per megaflow hit: 0.00<o:p></o:p></p>
<p class="MsoNormal">        miss with success upcall: 0<o:p></o:p></p>
<p class="MsoNormal">        miss with failed upcall: 0<o:p></o:p></p>
<p class="MsoNormal">        avg. packets per output batch: 0.00<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you in advance for your time<o:p></o:p></p>
<p class="MsoNormal">Rami Neiman<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
</div>
</body>
</html>