<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
  <style>#repo-username-link:visited{color:#333333}
#repo-username-link:hover{color:#333333}
#repo-username-link:active{color:#333333}
#branch-name-link:visited{color:#333333}
#branch-name-link:hover{color:#333333}
#branch-name-link:active{color:#333333}
.success:visited{color:#32D282}
.success:hover{color:#32D282}
.success:active{color:#32D282}
.failure:visited{color:#DB4545}
.failure:hover{color:#DB4545}
.failure:active{color:#DB4545}
.error:visited{color:#666766}
.error:hover{color:#666766}
.error:active{color:#666766}
#changeset-link:visited{color:#0068FF}
#changeset-link:hover{color:#0068FF}
#changeset-link:active{color:#0068FF}
#documentation-link:visited{color:#0068FF}
#documentation-link:hover{color:#0068FF}
#documentation-link:active{color:#0068FF}
#configuration-link:visited{color:#9EA3A8}
#configuration-link:hover{color:#9EA3A8}
#configuration-link:active{color:#9EA3A8}
#email-footer-section a:active{color:#9EA3A8}
#email-footer-section a:hover{color:#9EA3A8}
#email-footer-section a:visited{color:#9EA3A8}</style></head>
  <body style="min-width: 100%;height: 100%;margin: 0;padding: 0;">
    <table id="travis-ci-email-container" align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" style="height:100%;width:100%;padding:10px;font-family:'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:150%;text-align:center;color:#333333;background-color:#F4F5F9;background-image:url('https://s3.amazonaws.com/travis-email-assets/build_background.png');height: 100%;width: 100%;padding: 10px;font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;line-height: 150%;text-align: center;color: #333333;background-color: #F4F5F9;background-image: url(https://s3.amazonaws.com/travis-email-assets/build_background.png);">
      <tr>
        <td align="center" valign="top" style="padding-bottom: 20px;">
          <table id="email-content-container" border="0" cellpadding="0" cellspacing="0" style="width:500px;padding:32px;background-color:#FFFFFF;width: 500px; padding: 32px; background-color: #FFFFFF;">
            <!-- Repository Username Section -->
            <tr>
              <td id="repo-username-section" align="center" valign="top" style="padding-bottom:20px;padding-bottom: 20px;">
                <a id="repo-username-link" style="color:#333333;text-decoration:none;border-bottom:1px solid #333333;padding-bottom:4px;color: #333333; border-bottom: 1px solid #333333; text-decoration: none; padding-bottom: 4px;" href="https://travis-ci.org/ovsrobot/ovs?utm_medium=notification&amp;utm_source=email">
                  <p class="repo-slug" style="margin:0px;font-size:30px;font-weight:600;line-height:36px;padding-left:5px;display: inline; font-size: 30px; font-weight: 600; line-height: 36px; padding-right: 5px; padding-left: 0px;">ovsrobot</p>
                  <p id="repo-slug-divider" style="margin:0px;font-size:30px;font-weight:100;color:#9EA3A8;display: inline; font-size: 30px; font-weight: 100; color: #9EA3A8;">/</p>
                  <p class="repo-slug" style="margin:0px;font-size:30px;font-weight:600;line-height:36px;padding-left:5px;display: inline; font-size: 30px; font-weight: 600; line-height: 36px; padding-left: 5px;">ovs</p>
</a>              </td>
            </tr>
            <!-- Branch Name Section -->
            <tr>
              <td id="branch-name-section" align="center" valign="top" style="padding-bottom: 35px;">
                <p id="branch-name" style="margin:0px;font-size:28px;font-weight:300;margin: 0px; font-size: 28px; font-weight: 300;">
                  <img alt="branch icon" style="width:16px;height:auto;padding-right:8px;vertical-align:bottom;width: 16px; height: auto; padding-right: 8px; vertical-align: bottom;" src="https://s3.amazonaws.com/travis-email-assets/branch.png"><a id="branch-name-link" style="color:#333333;line-height:36px;text-decoration:none;border-bottom:1px solid #333333;text-decoration: none; border-bottom: 1px solid #333333; padding-bottom: 2px; line-height: 36px;" href="https://github.com/ovsrobot/ovs/tree/series_119475">series_119475</a>
                </p>
              </td>
            </tr>
            <!-- Build Status Section -->
            <tr>
              <td align="center" valign="top" style="padding-bottom: 20px;">
                <table cellpadding="0" cellspacing="0" class="build-status-border build-status-border-failure" style="border-radius:3px;border:1px solid #DB4545;width: 100%;">
                  <tr class="build-status-background-failure" style="background:rgba(219, 69, 69, 0.1)">
                    <td id="status-icon-section" align="center" valign="top" class="build-status-border-bottom-failure" style="border-bottom:1px solid #DB4545;padding: 15px 15px;">
                    <div style="float: left;">
                      <div style="display: inline;"><img alt="build has failed" style="display: inline; vertical-align: sub; width: 17px; height: 17px; padding-right: 8px;" src="https://s3.amazonaws.com/travis-email-assets/status-failed.png"></div><div style="display: inline;"><a id="status-section-message" class="failure" style="color:#DB4545;font-size: 16px; font-weight: 600;" href="https://travis-ci.org/ovsrobot/ovs/builds/558866739?utm_medium=notification&amp;utm_source=email">Build #1254 failed</a></div>
                    </div>
                      <div style="display: inline; float: left;"><img id="arrow" alt="arrow to build time" style="width: 7px; height: auto; vertical-align: text-bottom; padding: 0px 8px;" src="https://s3.amazonaws.com/travis-email-assets/failure-arrow.png"></div>
                    <div style="float: right;">
                      <span><img id="build-time-clock-icon" alt="clock icon" style="width: 15px; height: 17px; padding-right: 8px; vertical-align: sub" src="https://s3.amazonaws.com/travis-email-assets/time.png"></span><span style="font-size: 14px;">54 mins and 12 secs</span>
                    </div>
                    </td>
                  </tr>
                  <tr>
                    <td id="user-avatar-changeset-section" align="center" valign="top" style="padding-bottom:32px;padding: 20px 15px 35px 15px;">
                      <div id="user-avatar-changeset-left" style="float:left;float: left;">
                        <p style="margin:0px;display: inline; font-size: 14px; font-weight: 700; color: #333333;">
                          <img alt="Vishal Deep Ajmera avatar" style="width: 22px; height: auto; border-radius: 10px; vertical-align: middle; margin-right: 8px;" src="https://secure.gravatar.com/avatar/f7f2048bc02080694af188f1ac459e84">Vishal Deep Ajmera
                        </p>
                      </div>
                      <div id="user-avatar-changeset-right" style="float:right;float: right;">
                        <a id="changeset-link" style="font-size:14px;font-weight:600;color:#0068FF;font-size: 14px; color: #0068FF; font-weight: 600;" href="https://github.com/ovsrobot/ovs/commit/ce27d3270e60">ce27d32 CHANGESET →</a>
                      </div>
                    </td>
                  </tr>
                  <tr>
                    <td id="commit-message-section" align="center" valign="top" style="min-height:104px;padding:0px 20px 20px 20px;min-height: 104px; padding: 0px 15px 20px 15px;">
                      <p id="commit-message" style="margin:0px;font-family:cousine, monospace;font-size:14px;line-height:22px;font-family: cousine, monospace; font-size: 14px; text-align: left; line-height: 22px;">Avoid dp_hash recirculation for balance-tcp bond selection mode<br><br>Problem:<br>--------<br>In OVS-DPDK, flows with output over a bond interface of type “balance-tcp”<br>(using a hash on TCP/UDP 5-tuple) get translated by the ofproto layer into<br>"HASH" and "RECIRC" datapath actions. After recirculation, the packet is<br>forwarded to the bond member port based on 8-bits of the datapath hash<br>value computed through dp_hash. This causes performance degradation in the<br>following ways:<br><br>1. The recirculation of the packet implies another lookup of the packet’s<br>flow key in the exact match cache (EMC) and potentially Megaflow classifier<br>(DPCLS). This is the biggest cost factor.<br><br>2. The recirculated packets have a new “RSS” hash and compete with the<br>original packets for the scarce number of EMC slots. This implies more<br>EMC misses and potentially EMC thrashing causing costly DPCLS lookups.<br><br>3. The 256 extra megaflow entries per bond for dp_hash bond selection put<br>additional load on the revalidation threads.<br><br>Owing to this performance degradation, deployments stick to “balance-slb”<br>bond mode even though it does not do active-active load balancing for<br>VXLAN- and GRE-tunnelled traffic because all tunnel packet have the same<br>source MAC address.<br><br>Proposed optimization:<br>----------------------<br>This proposal introduces a new load-balancing output action instead of<br>recirculation.<br><br>Maintain one table per-bond (could just be an array of uint16's) and<br>program it the same way internal flows are created today for each possible<br>hash value(256 entries) from ofproto layer. Use this table to load-balance<br>flows as part of output action processing.<br><br>Currently xlate_normal() -&gt; output_normal() -&gt; bond_update_post_recirc_rules()<br>-&gt; bond_may_recirc() and compose_output_action__() generate<br>“dp_hash(hash_l4(0))” and “recirc(&lt;RecircID&gt;)” actions. In this case the<br>RecircID identifies the bond. For the recirculated packets the ofproto layer<br>installs megaflow entries that match on RecircID and masked dp_hash and send<br>them to the corresponding output port.<br><br>Instead, we will now generate actions as<br>    "hash(l4(0)),lb_output(bond,&lt;bond id&gt;)"<br><br>This combines hash computation (only if needed, else re-use RSS hash) and<br>inline load-balancing over the bond. This action is used *only* for balance-tcp<br>bonds in OVS-DPDK datapath (the OVS kernel datapath remains unchanged).<br><br>Example:<br>--------<br>Current scheme:<br>---------------<br>With 1 IP-UDP flow:<br><br>flow-dump from pmd on cpu core: 2<br>recirc_id(0),in_port(7),packet_type(ns=0,id=0),eth(src=02:00:00:02:14:01,dst=0c:c4:7a:58:f0:2b),eth_type(0x0800),ipv4(frag=no), packets:2828969, bytes:181054016, used:0.000s, actions:hash(hash_l4(0)),recirc(0x1)<br><br>recirc_id(0x1),dp_hash(0x113683bd/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:2828937, bytes:181051968, used:0.000s, actions:2<br><br>With 8 IP-UDP flows (with random UDP src port): (all hitting same DPCL):<br><br>flow-dump from pmd on cpu core: 2<br>recirc_id(0),in_port(7),packet_type(ns=0,id=0),eth(src=02:00:00:02:14:01,dst=0c:c4:7a:58:f0:2b),eth_type(0x0800),ipv4(frag=no), packets:2674009, bytes:171136576, used:0.000s, actions:hash(hash_l4(0)),recirc(0x1)<br><br>recirc_id(0x1),dp_hash(0xf8e02b7e/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:377395, bytes:24153280, used:0.000s, actions:2<br>recirc_id(0x1),dp_hash(0xb236c260/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:333486, bytes:21343104, used:0.000s, actions:1<br>recirc_id(0x1),dp_hash(0x7d89eb18/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:348461, bytes:22301504, used:0.000s, actions:1<br>recirc_id(0x1),dp_hash(0xa78d75df/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:633353, bytes:40534592, used:0.000s, actions:2<br>recirc_id(0x1),dp_hash(0xb58d846f/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:319901, bytes:20473664, used:0.001s, actions:2<br>recirc_id(0x1),dp_hash(0x24534406/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:334985, bytes:21439040, used:0.001s, actions:1<br>recirc_id(0x1),dp_hash(0x3cf32550/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:326404, bytes:20889856, used:0.001s, actions:1<br><br>New scheme:<br>-----------<br>We can do with a single flow entry (for any number of new flows):<br><br>in_port(7),packet_type(ns=0,id=0),eth(src=02:00:00:02:14:01,dst=0c:c4:7a:58:f0:2b),eth_type(0x0800),ipv4(frag=no), packets:2674009, bytes:171136576, used:0.000s, actions:hash(l4(0)),lb_output(bond,1)<br><br>A new CLI has been added to dump the per-PMD bond cache as given below.<br><br>“sudo ovs-appctl dpif-netdev/pmd-bond-show”<br><br>root@ubuntu-190:performance_scripts # sudo ovs-appctl dpif-netdev/pmd-bond-show<br>pmd thread numa_id 0 core_id 4:<br>Bond cache:<br>        bond-id 1 :<br>                bucket 0 - slave 2<br>                bucket 1 - slave 1<br>                bucket 2 - slave 2<br>                bucket 3 - slave 1<br><br>Performance improvement:<br>------------------------<br>With a prototype of the proposed idea, the following perf improvement is seen<br>with Phy-VM-Phy UDP traffic, single flow. With multiple flows, the improvement<br>is even more enhanced (due to reduced number of flows).<br><br>1 VM:<br>*****<br>+--------------------------------------+<br>|                 mpps                 |<br>+--------------------------------------+<br>| Flows  master  with-opt.   %delta    |<br>+--------------------------------------+<br>| 1      4.53    5.89        29.96<br>| 10     4.16    5.89        41.51<br>| 400    3.55    5.55        56.22<br>| 1k     3.44    5.45        58.30<br>| 10k    2.50    4.63        85.34<br>| 100k   2.29    4.27        86.15<br>| 500k   2.25    4.27        89.23<br>+--------------------------------------+<br>mpps: million packets per second.<br><br>Signed-off-by: Manohar Krishnappa Chidambaraswamy &lt;manukc@gmail.com&gt;<br>Co-authored-by: Manohar Krishnappa Chidambaraswamy &lt;manukc@gmail.com&gt;<br>Signed-off-by: Vishal Deep Ajmera &lt;vishal.deep.ajmera@ericsson.com&gt;<br><br>CC: Jan Scheurich &lt;jan.scheurich@ericsson.com&gt;<br>CC: Venkatesan Pradeep &lt;venkatesan.pradeep@ericsson.com&gt;<br>CC: Nitin Katiyar &lt;nitin.katiyar@ericsson.com&gt;<br>Signed-off-by: 0-day Robot &lt;robot@bytheb.org&gt;</p>
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </td>
      </tr>
      <!-- Broadcast Section -->
      <!-- Build Environment Updates Section -->
      <tr>
        <td id="update-section" align="center" valign="top" style="padding-bottom:20px;padding-bottom: 20px;">
          <table id="update-container" border="0" cellpadding="0" cellspacing="0" style="width:500px;padding:32px 32px 42px 32px;background-color:#FFFFFF;width: 500px; padding: 32px 32px 42px 32px; background-color: #FFFFFF">
            <tr>
              <td align="center" valign="top">
                <p id="update-header" style="margin:0px;font-size:24px;line-height:31px;margin-bottom:20px;padding-bottom:10px;border-bottom:2px solid #0068FF;border-bottom: 2px solid #0068FF; padding-bottom: 10px; font-size: 24px; line-height: 31px; margin-bottom: 20px;">Want to know about upcoming build environment updates?</p>
                <p id="update-message" style="margin:0px;font-size:16px;font-weight:300;line-height:26px;margin-bottom:32px;font-size: 16px; line-height: 26px; font-weight: 300; margin-bottom: 32px;">Would you like to stay up-to-date with the upcoming Travis CI build environment updates? We set up a mailing list for you!</p>
                <a id="sign-up-button" style="font-size:14px;font-weight:600;color:#FFFFFF;text-decoration:none;background-color:#0068FF;padding:12px 20px;border-radius:3px;font-size: 14px; font-weight: 600; color: #FFFFFF; background-color: #0068FF; text-decoration: none; padding: 12px 20px; border-radius: 3px;" href="http://eepurl.com/9OCsP">SIGN UP HERE</a>
              </td>
            </tr>
          </table>
        </td>
      </tr>
      <!-- Documentation Section -->
      <tr>
        <td align="center" valign="top" style="padding-bottom: 20px;">
          <table id="documentation-container" border="0" cellpadding="0" cellspacing="0" style="width:500px;padding:25px;background-color:rgba(222,239,255,0.3);border:1px solid #66A4FF;border-radius:3px;width: 500px; padding: 25px; background-color: rgba(222,239,255,0.3); border: 1px solid #66A4FF; border-radius: 3px;">
            <tr>
              <td id="documentation-section" align="center" valign="top">
                <div>
                  <img alt="book icon" id="documentation-icon" style="display:inline;vertical-align:bottom;padding-right:5px;display: inline; vertical-align: bottom; padding-right: 5px;" src="https://s3.amazonaws.com/travis-email-assets/documentation.png">
                  <p id="documentation-text" style="margin:0px;display:inline;font-size:26px;font-weight:300;color:#0068FF;font-size: 26px; font-weight: 300; color: #0068FF; display: inline;">
                    <a id="documentation-link" href="https://docs.travis-ci.com/" style="color:#0068FF">Documentation</a> about Travis CI
                  </p>
                </div>
              </td>
            </tr>
          </table>
        </td>
      </tr>
      <!-- Email Footer Section -->
      <tr>
        <td align="center" valign="top">
          <table id="travis-ci-email-footer-container" border="0" cellpadding="20" cellspacing="0" style="width:500px;width: 500px;">
            <tr>
              <td id="questions-section" align="center" valign="top" style="font-weight:300;color:#0068FF;color:#0068FF; font-weight: 300;">
                <span>Have any questions?</span>
                <span>
                  <a href="mailto:support@travis-ci.com" style="color: #0068FF">We're here to help.</a>
                </span>
              </td>
            </tr>
            <tr>
              <td id="email-footer-section" align="center" valign="top" style="font-size:10px;line-height:200%;text-align:center;color:#9EA3A8;padding-top:0px">
                <span>
                    <a href="https://travis-ci.org/account/preferences/unsubscribe?repository=22285853&amp;utm_medium=notification&amp;utm_source=email" style="color:#9EA3A8">Unsubscribe</a> from build emails from the ovsrobot/ovs repository.
                </span>
              </td>
            </tr>
            <tr>
              <td id="email-footer-section" align="center" valign="top" style="font-size:10px;line-height:200%;text-align:center;color:#9EA3A8;padding-top:0px">
                <span>
                  To unsubscribe from <strong>all</strong> build emails, please update your <a href="https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&amp;utm_source=email" style="color:#9EA3A8">settings</a>.
                </span>
              </td>
            </tr>
            <tr>
              <td id="travis-ci-footer-logo-section" style="text-align:center;text-align: center;">
                <a href="https://travis-ci.com"><img alt="black and white travis ci logo" src="https://s3.amazonaws.com/travis-email-assets/TravisCI-Logo-BW.png"></a>
              </td>
            </tr>
            <tr>
              <td id="email-footer-section" style="font-size:10px;line-height:200%;text-align:center;color:#9EA3A8;padding-top:0px;color: #9EA3A8; font-size: 10px; line-height: 200%; text-align: center; color: #9EA3A8; padding-top: 0px;">
                <p style="margin:0px;margin: 0px;">Travis CI GmbH, Rigaer Str. 8, 10427 Berlin, Germany | GF/CEO: Randy Jacops |
                  <span>Contact: <a style="color:#9EA3A8;color: #9EA3A8;" href="mailto:contact@travis-ci.com">contact@travis-ci.com</a> | Amtsgericht Charlottenburg, Berlin, HRB 140133 B | Umsatzsteuer-ID gemäß §27 a Umsatzsteuergesetz: DE282002648</span>
                </p>
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
    <script type="application/ld+json">
    {
      "@context": "http://schema.org",
      "@type": "EmailMessage",
      "action": {
        "@type": "ViewAction",
        "url": "https://travis-ci.org/ovsrobot/ovs/builds/558866739?utm_medium=notification&amp;utm_source=email",
        "name": "View Build"
      },
      "description": "View Build #1254 on Travis CI"
    }
    </script>
  </body>
</html>