From patchwork Thu Jun 2 06:44:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilson Peng X-Patchwork-Id: 1638222 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=vmware.com header.i=@vmware.com header.a=rsa-sha256 header.s=selector2 header.b=NncOzyjh; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.138; helo=smtp1.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4LDGhL1s2Lz9s0w for ; Thu, 2 Jun 2022 16:44:16 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 3F6EA83145; Thu, 2 Jun 2022 06:44:14 +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 FQ2AOGyOZTXv; Thu, 2 Jun 2022 06:44:13 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 2248982F06; Thu, 2 Jun 2022 06:44:12 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id F1239C0032; Thu, 2 Jun 2022 06:44:11 +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 974CEC002D for ; Thu, 2 Jun 2022 06:44:10 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 7F9A6404F7 for ; Thu, 2 Jun 2022 06:44:10 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp2.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=vmware.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 M0L0HaGLlM_V for ; Thu, 2 Jun 2022 06:44:09 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2061b.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e89::61b]) by smtp2.osuosl.org (Postfix) with ESMTPS id 468CD40025 for ; Thu, 2 Jun 2022 06:44:09 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fb2eiGmGO0B2Kz+pDlcBGaXzPQNYWDQ0HqMhD+4z/L+HGSKzxzLsg3JGLEtzB8KQ2kFk1+HrPBhni1ed8XzXrSR+aInZEQQEWyLbvah2AgxC9HXk2fuikDKlTcOJYbKh/u++MhFu85nc6L7dMfgRiY2x35/txB+cnbeuX3eQenqHH8ykBdG7oPY8I8iEOZD6f+ejtz99Bf+FtSfPeXSmkJa3vxvQ7qgOBmNHOFxFpz/VTFWMkoLTrQj3WXu/rKY7DbuwxHxM2v2qCoLUSZdKms/gz8m8eyZDaFqY8oqx1xWnC53ON5Mucyf8v5mNeTq/gTIKf2qGfFx1PHxyqyVmIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=V9hO7Hy32eUsrArzYUv25fMGHTEgSGVKKyVdgAzLpWg=; b=WG8jSGKeQ1+KTboRi36v9beo/RMWQU6w1GpRsBrUuVGilD+gJm71UHY7RcwCvuhIitmuydHPXuohk3mL97Ko6La9Ho3gwVUMz5tqCZwP6XooUPvMUnkD3SRmqcSvXJtwhEpkiwTICLYO7vLv3hxJDR3q8vCFz5e5BHNnBL+JPrPhBbs4GDjSzCKu/r1VeacxD1tfG0m2A1/Xjy/IoooEeS1GBLqKt/mDEXPPII6pnywws0ENwDEMuG0sDqLwI4FdWD9jSHtQQLcou62KhasTwKGZ4y/KkeOEbzsVe9QiSpTmvOsb8vmwAA74SHGXXbYrjVIBDWfmGVhttsm1ggy2CQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V9hO7Hy32eUsrArzYUv25fMGHTEgSGVKKyVdgAzLpWg=; b=NncOzyjhozpAYYci1rzfBS7lM9jbVarA4ZMm95mOkicTo/53lVBsZtihl0FMMvpJ5g9fR3HqnHRdfNjOPZUlXXXACb7ZZFEUYpLxykAEXm6qxTXEg+3za1ATG7NNA+eIJtqfqT37jNS6d7efAYlcjqLGEetvZUlyhKfVmqWNE8E= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; Received: from SN6PR05MB5935.namprd05.prod.outlook.com (2603:10b6:805:100::18) by CY4PR05MB2821.namprd05.prod.outlook.com (2603:10b6:903:16::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Thu, 2 Jun 2022 06:44:06 +0000 Received: from SN6PR05MB5935.namprd05.prod.outlook.com ([fe80::5899:85e4:d7bb:303d]) by SN6PR05MB5935.namprd05.prod.outlook.com ([fe80::5899:85e4:d7bb:303d%5]) with mapi id 15.20.5332.004; Thu, 2 Jun 2022 06:44:00 +0000 To: dev@openvswitch.org Date: Thu, 2 Jun 2022 14:44:04 +0800 Message-Id: <20220602064404.73085-1-svc.ovs-community@vmware.com> X-Mailer: git-send-email 2.24.3 (Apple Git-128) X-ClientProxiedBy: SGXP274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::15) To SN6PR05MB5935.namprd05.prod.outlook.com (2603:10b6:805:100::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eb53be71-5961-4ce9-590e-08da4463464d X-MS-TrafficTypeDiagnostic: CY4PR05MB2821:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8/Uyu/nAA8ch8B/lB+RY/eS0XSl2mHM+DuyrPvTvBxA/bZ165ESeaEgOKW/po3oJ83XVEN3kwqHf6Tw/DBN0gW4iR+WhxVVpsv/Jt5w4CqQlsbq1wwPWWOAzixleIP1kDViBq2UTvztfGRDZXB3QKlIEVF0acbkhFyBBWrp0i5QcoqcrvWHeqt6xfupeP5BPLRSPYiKYewoSWbVZWFNiKP2qmyXc8SCScvdXNbuQobyvlQXXBq5nDFv30xcoA/e0ruGNEoI9B1uCec8tm+KmHXt+AkLhw8fsFv3092/iTbkmQxuMakgtwU6/zoxR3jYKwxJqWX97zjBIpPo5wKU+Y2T4S8zzLPWFZbQLqQaXpjvgA51g1dio2Vq8LTDGTTBPt8W1o7lNvlIkpf1Y2grvZkkqKdhtGU7yn8yW1oh1+crAq2reWBPNmPZbFbA3oVefEqpXAXH+ALReR7Qg0jk83wvgRL56vb2pYt+mj5N3Pz5m46h/aIghsJoz2d9iL/Z0re/bYd7zECH1QUx3lbVPLcSIN9qtFYGNxV8CtRR2goIBDd4iGp0FA+SmmmgAk0HcD/GuxsR/PSkassLuyiMilppx6sZ7psHFuVHt2RRn0q0wq5GTiOAtK/eM5awjfnurr6svVjvp+NkVP1Sw9jEXyEHBSWBSeBlRH2uzgXNfziYEGlmH59AhasfuLjNp+eFBtSrbaHH+VGWgn0CIpYVjEKPPgaTF+uqM/oTE5JFjXxnUBBqeOFsL41g12lQap3zJ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR05MB5935.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(83380400001)(6506007)(2906002)(86362001)(6486002)(508600001)(15650500001)(1076003)(38100700002)(38350700002)(66556008)(66946007)(66476007)(186003)(26005)(107886003)(4326008)(8676002)(2616005)(6512007)(52116002)(36756003)(8936002)(6916009)(5660300002)(316002)(8496004)(46800400005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3YHQvbsCgifi2CFtj5T0OITjIQvgVKkewOWThddYfTHCcwSBNcCui980RcjUWKkenl/LdgaSY8WrvEbMEfuKyVG/+/0NwcpsBx0oQYAhiOPx4eglAdloEFITt37doan6IVcas0PfZzIN/buNr/JBIq77Ae8lwS5/Disqj1cUEMoL610nb0AL8QOkuNb92/eSbW9389Aa3sVpP8Xl0XdT9bcuXd69m6eHQ33jnrTr818pn4+oB3sdkl5UgA187b1Q/Jz7SKDLNpCYkEr1A9Q+TeI31fisbyzQxjEtke9jbPIRHKdnXis3n3ddrgdsH4PKyrCD7jc4J+6ImAXeilXpwwTGd77O2pdJTSM2yoLTK57K/tZoWupc69rFFGWE4fgnTHgg/GQ64e9b6ISvMUixEG5QWrplZiMqNT7yzbLi6lKQ/jV5wTnOg9KN1SwV2zSJDJ/etjR078swj8Y2Z1clToeSwghmh5MqAwTI0I8AI+UArY0XvZGxuSlFSYAJSr1MHjuk/XkuLACVTLjsBEjz2gjMNVa7wI1GZO3lQmgtBHCeFJAsNiNaOXoYIVP8acyh5atQ8modUOOY+MD5Kl1G1F4VrRsGqffRgS2II8ng8Izy7pq3Fnbja9H6JRLbrElK124QHeEZ1mSvk655kJauvXbXylYS1Gx9VPXQUCg+Pj0YcoF8TmLUOVFWyaGXmDldjnYOB6v8Qq/2DV8ZKJ9z+vDxgwflRksqPCWNu3vNpllzA4RUAK3Sdl02Rl7wfbahd7/7jnPms/y5hho5K1usZlgjj0YaZgVMNLVsPCZdC2c4o789I7Ytlk0vAf90KJ+XpCCT6n3wJuzIt/uMikvbsDSZT8fAFYqpmn73W04YxP1+TE3+VL10+V3bilpzxrL8EernICO4g5O/btVM9XAA1hkftf2SKGAJRWs3riKQgcweSm4Ki50vhHgzV7GSYBPnB5vH6lvdJ2d2b2rUrH4tVNwDyfk/aNIJyKUnVPqTOuQwlwK7kMdZlfqQGskZR9J52jMsJLp1kowu6jVslwIk2oEvcB+kQP6KxWy6uR66XoAwxSBCzn0tVxCX0zf4HNowxtsCz6v/TcLR/1aNURDE4cXcM/zRriwjg2E/DlYgVDnCfso7WFJcElaFaiJaZz7Ki5CIldC/tJHm+qhibnH7Ao5QD8uOGCs2zQTrPT2kimJcrhK6BEzPhfIBbpogcVdCAxe8SK6h9x+t+2+y3cyRmA4kybQrdas0wxImictijxtl2cecdRC2bgFK91nvSupQrizp2eRudVOUN/kcDl2qyROdEAnW/d5MJoJpRWaBB6CzOOdWVjexMPRSBhxEuNp7U+MVTr1UdQuwwQ29TG2m1D0Vh5NHMS5Ue637SycS6fGPxt1iBQsfqvyuVqHrwanC2FpRxsnbetKAQoDuzQMxpMEWvCIBSOMkI866+LUhbGBLQgLy1Lv1LdVjYcsxjCNtWvhlryU0iqX68jymEkhqxDp7QZ5LvHgxHABGTSMzMnJa4Xpn+SbSSlmDiurg83ZSC0nIgbDCK5ZJTXSD7sJMqMOhmMSX55Ps88SKFH40+GhEK1YLsexcaZO2oxkeaYab1C23LcuA8RPq/+vECu99hBjiklPlNmvu98wxEOASihMD/dGoW0vlydW9ySxEMWes5emy8agFKQIoKp9/1PV30B75DfOq7btZMwaapRElEAfUvvYDAOb4jWWzEPQmizCIJb3zCvtjgNU5UzDIqmPpfGTsZCQydnhJPmt9hRrNEnI= X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb53be71-5961-4ce9-590e-08da4463464d X-MS-Exchange-CrossTenant-AuthSource: SN6PR05MB5935.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2022 06:44:00.2021 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: olpAaachWQ5x//xTdKrJ2hYhgtImQtn8cwQXfm1lLbWsCG9Dxr5pRig8mVCzuIcl06Y2AnAw1X+NTqkDwgo+bFIhehMYze+y1m1/TvhmGo0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR05MB2821 Subject: [ovs-dev] [PATCH v1 1/1] datapath-windows: Update layers for multiple tunnels processing 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: , X-Patchwork-Original-From: Wilson Peng via dev From: Wilson Peng Reply-To: Wilson Peng Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" From: Wilson Peng While testing OVS-windows for multiple IPV6 Geneve tunnels on Windows2019VM, for the broadcast/mutlicast packets, it needs to flood out via configured multiple Geneve tunnels. Then in some flow pipeline processing, it may have at least two tunnel processing in OVS_ACTION_ATTR_SET action. When processing the second tunnel setting it may need flush out the packet out via tunnel before setting new tunnel parameter in tunKey. We found in this case, after flushing out the packet out via tunnel, the related layers pointer does not update. In our test setup on Windows2019VM, it will cause BSOD which is triggered in other Windows processes. We suspect it may be related to memory overwriting. When we apply the fix in the patch, no BSOD is observed on the same VM and same packet/tunnel settting. Another thing needs to be mentioned is for multiple Geneve IPv4 tunnels, the same kind broadcase/multicast packet will not cause BSOD. Signed-off-by: Wilson Peng Signed-off-by: Wilson Peng --- datapath-windows/ovsext/Actions.c | 21 ++++++++++++++++++++- datapath-windows/ovsext/Flow.c | 2 +- datapath-windows/ovsext/Flow.h | 2 ++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/datapath-windows/ovsext/Actions.c b/datapath-windows/ovsext/Actions.c index 0f7f78932..20de4db4c 100644 --- a/datapath-windows/ovsext/Actions.c +++ b/datapath-windows/ovsext/Actions.c @@ -2465,6 +2465,7 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext, } case OVS_ACTION_ATTR_SET: { + OvsIPTunnelKey pre_tunKey = { 0 }; if (ovsFwdCtx.destPortsSizeOut > 0 || ovsFwdCtx.tunnelTxNic != NULL || ovsFwdCtx.tunnelRxNic != NULL) { status = OvsOutputBeforeSetAction(&ovsFwdCtx); @@ -2473,7 +2474,7 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext, goto dropit; } } - + RtlCopyMemory(&pre_tunKey, &key->tunKey, sizeof key->tunKey); status = OvsExecuteSetAction(&ovsFwdCtx, key, hash, (const PNL_ATTR)NlAttrGet ((const PNL_ATTR)a)); @@ -2481,6 +2482,24 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext, dropReason = L"OVS-set action failed"; goto dropit; } + + if (!OvsIphIsZero(&(key->tunKey.dst)) && + key->l2.offset != OvsGetFlowIPL2Offset(&key->tunKey)) { + key->l2.offset = OvsGetFlowIPL2Offset(&ovsFwdCtx.tunKey); + } + if (!OvsIphIsZero(&(pre_tunKey.dst))) { + /*if pre_tunkey dst is not null in multiple IPV6 Geneve tunnels case, + * for broadcast and multicast packet the flow pipeline will set different + * tunnel setting on one flow. In such case, it needs to do layers update. + * Elsewise it will meet BSOD issue but in IPV4 tunnel the BSOD will not + * have construct case to make it happen. + */ + status = OvsExtractLayers(ovsFwdCtx.curNbl, &ovsFwdCtx.layers); + if (status != NDIS_STATUS_SUCCESS) { + dropReason = L"OVS-set action ExtractLayers failed"; + goto dropit; + } + } break; } case OVS_ACTION_ATTR_SAMPLE: diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index 08fba4c4d..86e809fc1 100644 --- a/datapath-windows/ovsext/Flow.c +++ b/datapath-windows/ovsext/Flow.c @@ -88,7 +88,7 @@ static NTSTATUS OvsDoDumpFlows(OvsFlowDumpInput *dumpInput, UINT32 *replyLen); static NTSTATUS OvsProbeSupportedFeature(POVS_MESSAGE msgIn, PNL_ATTR keyAttr); -static UINT16 OvsGetFlowIPL2Offset(const OvsIPTunnelKey *tunKey); +UINT16 OvsGetFlowIPL2Offset(const OvsIPTunnelKey *tunKey); #define OVS_FLOW_TABLE_SIZE 2048 #define OVS_FLOW_TABLE_MASK (OVS_FLOW_TABLE_SIZE -1) diff --git a/datapath-windows/ovsext/Flow.h b/datapath-windows/ovsext/Flow.h index 8f7214124..ea3396f08 100644 --- a/datapath-windows/ovsext/Flow.h +++ b/datapath-windows/ovsext/Flow.h @@ -89,6 +89,8 @@ UINT32 OvsTunKeyAttrSize(void); NTSTATUS OvsTunnelAttrToIPTunnelKey(PNL_ATTR attr, OvsIPTunnelKey *tunKey); +UINT16 OvsGetFlowIPL2Offset(const OvsIPTunnelKey *tunKey); + /* Flags for tunneling */ #define OVS_TNL_F_DONT_FRAGMENT (1 << 0) #define OVS_TNL_F_CSUM (1 << 1)