From patchwork Mon Jun 7 18:31:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Toms Atteka X-Patchwork-Id: 1488890 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=jX5bk6xC; dkim-atps=neutral Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FzMQw0lXbz9s5R for ; Tue, 8 Jun 2021 04:31:51 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id EE523833B7; Mon, 7 Jun 2021 18:31:48 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5qpA8CNIQ1yZ; Mon, 7 Jun 2021 18:31:48 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp1.osuosl.org (Postfix) with ESMTP id 42AEB83294; Mon, 7 Jun 2021 18:31:47 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1A48DC000D; Mon, 7 Jun 2021 18:31:47 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0F8ADC0001 for ; Mon, 7 Jun 2021 18:31:46 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id DD5E94021C for ; Mon, 7 Jun 2021 18:31:45 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp2.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0aNIhChm9RTM for ; Mon, 7 Jun 2021 18:31:44 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by smtp2.osuosl.org (Postfix) with ESMTPS id 61B20400BE for ; Mon, 7 Jun 2021 18:31:44 +0000 (UTC) Received: by mail-wr1-x433.google.com with SMTP id l2so18753504wrw.6 for ; Mon, 07 Jun 2021 11:31:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=OR/8taWuffpnRc/MdPCPMuF+ma/o2DAvCsAE/ckKMBY=; b=jX5bk6xC9CzPXJBTub538PgkCcmN7Dwx3/50Xb7cO6ID0OhSYf7IJvlWdFH9XKxi8g T4jtSL8ohDvk3CBjQSBUN4esZPrNqkAmnxggaBWJ8Z5IqLPZkT83hjsI6k6eUpm6Kyhe m32hQ6plE6xmdpVs9yEaAeGfm0ZR3MxPUSKuVg5gdMmJMNjUviCsuohlJm/KqFQsepr4 9w4gmZCW/LX+zvtWqCoI0Shr73OTB34LHG/d+lOF72KAQzxY3Kbux6O9YDesi/lN0Pb4 /t4i3Mn8PnaoasB+7TmuERwAZ9q33aYTuQVRUqrJpg11fh0sUoKB0O53FcXQxXFsACw7 qHJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=OR/8taWuffpnRc/MdPCPMuF+ma/o2DAvCsAE/ckKMBY=; b=XtHf5PCFRwiFdpCeH9GZdDpdm1wBJYkYGMn+PhSCeAKy8P5LUD79ylwpI7SQ5NqR9K fwC41sxr2oP8zVBMuFok0niuX3wXEZuWtDx0NK2lJqErIwTg3/7zYsX/idFP1jf8bZYr Tsb/nyBXqKAzzhXyXnsuLe8zm016WeGvXx73LS2Z+mPlgwNki5WwMl2xtRo4oaw1sZWZ +UVxxLwz/8S8GJlx5I0Hm118JKPAo67vCa62mx+ZU3F1UfOevZDnWVY+B9GdLLOlXf99 LFunDn7sf7Qn5k+ZdjQT81UJP0cZVkjjrBo4VJIvqNI9nlsYvejJQvYaelrcOnJtP1Ok L3Pw== X-Gm-Message-State: AOAM533t/0PoztFF1HEl2SAp/c13OMfQVmCTE3mY3fLgw4NnB1mQI8SU CDAkFi0JX77Uy1RP77SYhu774vjf8aM= X-Google-Smtp-Source: ABdhPJx228kAhgA8wtQGWIU+MLHFxdWWy/f+cMwOM1IvMUKUv9R1Q5FmTZTJyHVC1zT9aJ/GxLZP8w== X-Received: by 2002:adf:906a:: with SMTP id h97mr18800115wrh.311.1623090702447; Mon, 07 Jun 2021 11:31:42 -0700 (PDT) Received: from ubuntu.localdomain ([212.3.197.217]) by smtp.googlemail.com with ESMTPSA id u15sm708897wmq.1.2021.06.07.11.31.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 11:31:42 -0700 (PDT) From: Toms Atteka X-Google-Original-From: Toms Atteka To: dev@openvswitch.org Date: Mon, 7 Jun 2021 11:31:39 -0700 Message-Id: <20210607183139.216562-1-tatteka@vmware.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Cc: Toms Atteka , Toms Atteka , Jesse Gross Subject: [ovs-dev] [PATCH v4] netlink: removed incorrect optimization X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" This optimization caused FLOW_TNL_F_UDPIF flag not to be used in hash calculation for geneve tunnel when revalidating flows which resulted in different cache hash values and incorrect behaviour. Added test to prevent regression. CC: Jesse Gross Fixes: 6728d578f64e ("dpif-netdev: Translate Geneve options per-flow, not per-packet.") Reported-at: https://github.com/vmware-tanzu/antrea/issues/897 Signed-off-by: Toms Atteka --- lib/tun-metadata.c | 2 +- tests/system-traffic.at | 54 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/lib/tun-metadata.c b/lib/tun-metadata.c index c0b0ae044..af0bcbde8 100644 --- a/lib/tun-metadata.c +++ b/lib/tun-metadata.c @@ -828,7 +828,7 @@ tun_metadata_to_geneve_nlattr(const struct flow_tnl *tun, } else { tun_metadata_to_geneve_nlattr_mask(key, tun, flow, b); } - } else if (flow->metadata.present.len || is_mask) { + } else { nl_msg_put_unspec(b, OVS_TUNNEL_KEY_ATTR_GENEVE_OPTS, tun->metadata.opts.gnv, flow->metadata.present.len); diff --git a/tests/system-traffic.at b/tests/system-traffic.at index fb5b9a36d..483cc7e83 100644 --- a/tests/system-traffic.at +++ b/tests/system-traffic.at @@ -574,6 +574,60 @@ NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PI OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([datapath - ping over geneve tunnel, delete flow regression]) +OVS_CHECK_GENEVE() + +OVS_TRAFFIC_VSWITCHD_START() +ADD_BR([br-underlay]) + +AT_DATA([flows.txt], [dnl +priority=100,icmp actions=resubmit(,10) +priority=0 actions=NORMAL +table=10, priority=100, ip, actions=ct(table=20,zone=65520) +table=20, priority=200, ip, ct_state=-new+trk, actions=resubmit(,30) +table=20, priority=100, ip, ct_state=+new, actions=resubmit(,30) +table=20, priority=50, ip, actions=DROP +table=30, priority=100, ip, actions=ct(commit,table=40,zone=65520) +table=40, actions=normal +]) + +AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) +AT_CHECK([ovs-ofctl add-flow br-underlay "actions=normal"]) + +ADD_NAMESPACES(at_ns0) + +dnl Set up underlay link from host into the namespace using veth pair. +ADD_VETH(p0, at_ns0, br-underlay, "172.31.1.1/24") +AT_CHECK([ip addr add dev br-underlay "172.31.1.100/24"]) +AT_CHECK([ip link set dev br-underlay up]) + +dnl Set up tunnel endpoints on OVS outside the namespace and with a native +dnl linux device inside the namespace. +ADD_OVS_TUNNEL([geneve], [br0], [at_gnv0], [172.31.1.1], [10.1.1.100/24]) +ADD_NATIVE_TUNNEL([geneve], [ns_gnv0], [at_ns0], [172.31.1.100], [10.1.1.1/24], + [vni 0]) + +dnl First, check the underlay +NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl +3 packets transmitted, 3 received, 0% packet loss, time 0ms +]) + +dnl ping over tunnel should work +NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl +3 packets transmitted, 3 received, 0% packet loss, time 0ms +]) + +AT_CHECK([ovs-ofctl del-flows br0 "ct_state=+new"]) + +dnl ping should not go through after removal of the flow +NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl +7 packets transmitted, 0 received, 100% packet loss, time 0ms +]) + +OVS_TRAFFIC_VSWITCHD_STOP(["/|ERR|/d +/|WARN|/d"]) +AT_CLEANUP + AT_SETUP([datapath - flow resume with geneve tun_metadata]) OVS_CHECK_GENEVE()