From patchwork Wed Apr 24 12:44:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felix Huettner X-Patchwork-Id: 1927145 X-Patchwork-Delegate: horms@verge.net.au Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=pdwhYQB1; dkim=fail reason="signature verification failed" (2048-bit key) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=pdwhYQB1; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::133; helo=smtp2.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VPdxS5D9pz1yP2 for ; Wed, 24 Apr 2024 22:45:16 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 82070415B5; Wed, 24 Apr 2024 12:45:13 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id jl0RJnPuTILA; Wed, 24 Apr 2024 12:45:10 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=140.211.9.56; helo=lists.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 59A7040195 Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=pdwhYQB1; dkim=fail reason="signature verification failed" (2048-bit key) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=pdwhYQB1 Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 59A7040195; Wed, 24 Apr 2024 12:45:10 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 131C1C0DD0; Wed, 24 Apr 2024 12:45:10 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id EF389C0DD8 for ; Wed, 24 Apr 2024 12:45:08 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id D804C401C2 for ; Wed, 24 Apr 2024 12:45:08 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id VYJds10A1HOl for ; Wed, 24 Apr 2024 12:45:06 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2a01:111:f403:2607::600; helo=eur02-vi1-obe.outbound.protection.outlook.com; envelope-from=felix.huettner@mail.schwarz; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp4.osuosl.org 2118840194 Authentication-Results: smtp4.osuosl.org; dmarc=pass (p=reject dis=none) header.from=mail.schwarz DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 2118840194 Authentication-Results: smtp4.osuosl.org; dkim=pass (2048-bit key, unprotected) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=pdwhYQB1; dkim=pass (2048-bit key) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=pdwhYQB1 Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on20600.outbound.protection.outlook.com [IPv6:2a01:111:f403:2607::600]) by smtp4.osuosl.org (Postfix) with ESMTPS id 2118840194 for ; Wed, 24 Apr 2024 12:45:05 +0000 (UTC) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=FI8dnAKoij7ZmSZgctOPriVLGtLDBnKe+8Yg7m+k6DjYb68Tp1zpsEZTMrhH1QVnh4rjg9MDGtPVSRDsNG4tBqki38rWg+vydKJuvtEhwsC/lPoa+a3/SkL2NNpE9nGtPELDpFEj76a00vcbWPLq+Tv2o4VJqNulrrH8eC2JQfcuue1NuFlO6wtj7ExHJXuS4odP1eE452qTwv/aJVRYTwVvX0Cb1e0cyvfRwg+3W0MQbZYJWnIK/xAnI+bP0dzBHZQY1wKmyxOyhjJmXN2iVP0oLG9a4jR3WadO8QcCPuO1zEwqsHuflogejgIKzfwtkTfvRereFcEkzqyuZTJUMg== ARC-Message-Signature: i=2; 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=x2GHyYamnTSrw9EX0MDeUtR1s7+Z0J7HeoPFef2xlOE=; b=X4qmqqWJGNAyHHvTfMarmZCpNeiY1LKApebdRpQ6zGh7tJoJ+m4VjisB+7DTsaEvGJi2w/F+geDYGA+/XtvwSF/EPNvCzDUS/tbhUB2TNsZzrMH2zuV40UXevfy+R1Vw8+4NYtOLaNXPGZsecbjLLps6U81UKtWGAb5XzRLMvHH6UtKBEcEmqp0oS0PBV9U0TSOCi3I1ZH1H8ZkztKaitR1p4gE0hR2nqGfTUQRXSkt2PVMb6kOsj2420PxZzbk+kNIVKt0USKZhKaPQP8Ad2iwUIbgmqOpTKwoOJwTDKILaKqE4zwKR+/jISInDyeXyg7s39rDsucPnYnOW/6aODQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 52.169.0.179) smtp.rcpttodomain=openvswitch.org smtp.mailfrom=mail.schwarz; dmarc=pass (p=reject sp=none pct=100) action=none header.from=mail.schwarz; dkim=pass (signature was verified) header.d=mail.schwarz; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=mail.schwarz] dkim=[1,1,header.d=mail.schwarz] dmarc=[1,1,header.from=mail.schwarz]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.schwarz; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x2GHyYamnTSrw9EX0MDeUtR1s7+Z0J7HeoPFef2xlOE=; b=pdwhYQB1avV0m50VXZps/ZuSF1c1X/TuSK5NvrI9UAQ0UVrTt3v/Tg5TsqFeV7Q9VyJSJAF+ehTZGRgLPg/5hvFoT8aHPhzyA/t84rj05K7XMdYv1D1h5VGZrB5o2UPWsA3MJs5sXl8G8h8KUGPBDRk1Ep0zKvxvj0o8+c7lDNGitUC3OQ8SqWCz8syhVTGUsaONHv2s/kFefRq4cO+L+Hk4YtZWko9amZUVGqJ4Knjg5SD/QKMQpslF+BMsSKPdE6L+VTMPEVtZkMfYvGglSKtIC0BF8CBTdZga69NeMQ+nDsOFQnv47uG1uyhZeAHX0QV/Kc7VqnzKzsiEgI6KjQ== Received: from DUZP191CA0009.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:4f9::17) by PAWPR10MB7848.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:365::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Wed, 24 Apr 2024 12:44:55 +0000 Received: from DB3PEPF00008859.eurprd02.prod.outlook.com (2603:10a6:10:4f9:cafe::e2) by DUZP191CA0009.outlook.office365.com (2603:10a6:10:4f9::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7495.34 via Frontend Transport; Wed, 24 Apr 2024 12:44:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 52.169.0.179) smtp.mailfrom=mail.schwarz; dkim=pass (signature was verified) header.d=mail.schwarz;dmarc=pass action=none header.from=mail.schwarz; Received-SPF: Pass (protection.outlook.com: domain of mail.schwarz designates 52.169.0.179 as permitted sender) receiver=protection.outlook.com; client-ip=52.169.0.179; helo=eu2.smtp.exclaimer.net; pr=C Received: from eu2.smtp.exclaimer.net (52.169.0.179) by DB3PEPF00008859.mail.protection.outlook.com (10.167.242.4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.7519.19 via Frontend Transport; Wed, 24 Apr 2024 12:44:53 +0000 Received: from EUR02-VI1-obe.outbound.protection.outlook.com (104.47.11.41) by eu2.smtp.exclaimer.net (52.169.0.179) with Exclaimer Signature Manager ESMTP Proxy eu2.smtp.exclaimer.net (tlsversion=TLS12, tlscipher=TLS_ECDHE_WITH_AES256_SHA384); Wed, 24 Apr 2024 12:44:53 +0000 X-ExclaimerHostedSignatures-MessageProcessed: true X-ExclaimerProxyLatency: 13072427 X-ExclaimerImprintLatency: 1027850 X-ExclaimerImprintAction: e1544b00f4204310be6030c469dd4489 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CNO15o9qGWp2Bj5YG9NkvQS5ztBL3E0CtNiXCuEeyNSKbhjyHwKsvTLhhKYmhBw7YIvlf2QVfq2vc3plez4aVF5pdAq9xqryJCGcRUldrgByzppylGtIJ8xbl8ZRyqJlQnqDcvm0q3F3zrkWaC7XFA3AsP7zs2v8sxWs0b6ISVLiCo8sEyRq5X9QMu0PwAks7u1qYTv4WcEqrCS+PHAdT1D5Dj0qNVU5dIeg+aia9XwmOJHyYNd2Pl0mqHtpewlvCXDdXjItlYirCuq6uPtYmP6J73oSoZkoJizcD5UAH4LKooT+J9bzQBl2qQy5Gfa4CQan/FfeFdF9BnuYYyQYWw== 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=x2GHyYamnTSrw9EX0MDeUtR1s7+Z0J7HeoPFef2xlOE=; b=lUYNMRjjjr01LdLew4WdC3+43qDOg6/i7WiyCilJbvvY3xZzQkk/nbeT42QTnkVjQ9p+mPP297r0Ehm0S+ggOKGxgjDaV4V9iJ8COjNaFFVW5UcB9hkcKAMeIrMKaPJQDM+dq8X6R96lV1NtVCGcKTtw4ktfPIVcF+JBCXu+NgbwnwUKEzAuXHQRVVrObeqHHfNH4uQIRuz2j2HEVAQOlf1b6HaUGe4DvnoeEyx3NMNst6Cv9u7cYj4DinWxeybuARTTd5YIrw7EIMgQeSAxT7f5mmmaJLaqtCEwA9SjBJc/PrjsL6Mncplgkk0nbFYBTGeUeA2DwU4lb2fiuu4x6Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mail.schwarz; dmarc=pass action=none header.from=mail.schwarz; dkim=pass header.d=mail.schwarz; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.schwarz; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x2GHyYamnTSrw9EX0MDeUtR1s7+Z0J7HeoPFef2xlOE=; b=pdwhYQB1avV0m50VXZps/ZuSF1c1X/TuSK5NvrI9UAQ0UVrTt3v/Tg5TsqFeV7Q9VyJSJAF+ehTZGRgLPg/5hvFoT8aHPhzyA/t84rj05K7XMdYv1D1h5VGZrB5o2UPWsA3MJs5sXl8G8h8KUGPBDRk1Ep0zKvxvj0o8+c7lDNGitUC3OQ8SqWCz8syhVTGUsaONHv2s/kFefRq4cO+L+Hk4YtZWko9amZUVGqJ4Knjg5SD/QKMQpslF+BMsSKPdE6L+VTMPEVtZkMfYvGglSKtIC0BF8CBTdZga69NeMQ+nDsOFQnv47uG1uyhZeAHX0QV/Kc7VqnzKzsiEgI6KjQ== Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mail.schwarz; Received: from PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:30d::9) by DU0PR10MB6297.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:3ec::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Wed, 24 Apr 2024 12:44:50 +0000 Received: from PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM ([fe80::6c69:4f96:2e5d:8aae]) by PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM ([fe80::6c69:4f96:2e5d:8aae%4]) with mapi id 15.20.7472.044; Wed, 24 Apr 2024 12:44:49 +0000 Date: Wed, 24 Apr 2024 14:44:47 +0200 To: dev@openvswitch.org Message-ID: <14e79dab894384b1d4e9455dacb123cc86e8ef6d.1713962636.git.felix.huettner@mail.schwarz> Mail-Followup-To: dev@openvswitch.org Content-Disposition: inline X-ClientProxiedBy: FR3P281CA0109.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::9) To PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:30d::9) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PAVPR10MB6914:EE_|DU0PR10MB6297:EE_|DB3PEPF00008859:EE_|PAWPR10MB7848:EE_ X-MS-Office365-Filtering-Correlation-Id: 774ba96a-cfc8-4afe-cb84-08dc645c56ec X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: mrpSGROZxulsnYCIJzbFcoqaAc77RLQFSCfqql0K/6a8+96i7UAGvyQUvJ60uFfRInga44gHFMfL1OXuHHdCKPJC0UM6gx2OI0ZOR5dEDM2turpYUh38nLsSgkbWfMsw2Xli21NymfmgP8uMYemM45fr3Th52Q61sfkSCP20riA9ii4yThWO82JY4T8X0fDun2C/YIlLL6Z7folcu1vXIFbkMUUkFgaWcbWyLQKrp+EUu17JxKeUImB1ZdIGPilQL6mkcSqoDzoNtWruItw5zlXnNDVcbTQFeFQcefxoyLtJPlBg22H2UdMR/rQ9CnaQlx4sumMKBthjEMzHlBxHFUqTmp06ackN9qxAcxMXlBa9QsZsx08w010j95z2fdBe0BSVw4ottoEADr8H/44XoPW64JYMO8+W645dPRXrHrNN7f/xWPaq9AKXgLTphxcX0YFmnGTiO2dlwJkjmUcnshMNn7+WJwPtZlU1OXFZrC/zYBoHGec8e5XLFZ2cjAKQyaezy49Rdfz9xlMLh+FRq69QCNzWyICKql0qBiRD0zNRfS64wggEvD5+RBTDKOBHTgFou6+aRYSP/Wboesybjulq9Yr02ThfWcJm7swUUWAo5hUni8APkP0IS2rVV62CkojnkRUyXGI2OZ82ZZYf+b/t8U1i9WsENfM+NlA1wobct84y9p1LV7yD/53DUdp8dvlmld1qtA8KChdipzi+THdN7t7AVxs/F7H23L3m7jOzjtbkEwqmqJk+BAKKmV6019gT/4kWb6smWTIohFdPtZcQpkf+GtDNV/hjFTcqb+yG6bCZ9CS5nJsL7eG8WINJK+4iKtYAQDFmLt0n+E+zE+y7nU0dvDtaS3bAG909GsRa4fux/a4HdzK97fTLxBeQW8Z3SX8ltqDu02BoAOS0njzeEKZEnwTM+opefCS3G7rGT2YbktpW248GZYOnCcYESwy/poTFfuKVCuLQdNAweKFekocIFu5ovdJM3FGdXw2tK7P8eRORqe4GiFQyvbS1IAruwpHJbcCv/ZzP7pofMW22j0qIaoFaIawKTLiaCK/8EYNucduwAC+7vkSIhjqJUbM9m2/tpkHqC17/pD3DT2eNqsXiaQAzZthMD2enisD87MGPmeLgVle+WFMb1d+VGSM/zzcQXEHFCcmNQ8BTDFI/LRhUbPjopx0HYe5MuMIyuTWt25nZuiH2CsijRNOx7+HPDSFZCspgZKxs//QQvFN+xzuD3FUu+3TbIz8cZiPSd+LJO7RiJhLiSrrsnMfXjbQ1jxvVk1pY6htMO/ObEA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(366007); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR10MB6297 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB3PEPF00008859.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1ae51458-bb21-4431-1834-08dc645c5409 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BV3QsgqwT38CAxzIm6ksNYhZDAwjsZNZlgViQhA4jx9u8zaGO66S8KBmFKUWxCzjRwzKZwLJtPmCL5C0TxKdiOmNY8jM0ZpcU1EPj2kzaurDsOvilPDhW2PJ7opk1/fG1ikmwOgfLrsOK9bRmFM1Qck9Rx2F9FI38pwyi4Htj5X1+qcGgNoApuY++mCBSxjfFjHHO46Eo0GMTmnIpOqPWvy3ptBbErmtRFD0W/TxXwdLp0IjRVwIId37KLQYGEYz5SBnXluUsDf5Ar9pdITnYLXbcmxKU7zI/Z1rL/hi6TdlMQOse/2P2FT8N5voGQ9FAlRSRGp/jKPgSZ7/Z83TtueOXsiVey2+lDNre/iWvPZyolMJ/2TcSUNZnFqZrDePzdARXyIJtVoEVi0a5OrL8ZWnBLgj1SOL4b/qHEJn7zoUK6NagCPG8lR0pKnUpU+luaFpwX6Rwd6ExcUAJxeQ4lhuv3EKK1KdPoNJgTzGakhusKwozL/5TV6q/4eaNB9uaGc3JMSuMUX5XQSbH4nuAH+v+6duy0RwOsARVpuej7vGUecRBjVDHZJV9E1+gYeKqlJu6qVmHupktOvjZXtcQV7uUK5zPC+S2LVv0sjlZBMnfMwu88Fs8v6+QU0eNUlXxx4GO3HuEiVMnSiQFY7pOAJX/8hScq6SmbscPC4G5g/0oMBqSLujmQgHSDhwmhyjVl9Xq2QG3lNvgdfkxDZ7fS/aCIbVLCSl995WmwLVfsTNZNdV7/uPr2woIgOnupj8rtbthC0e6if68zUqyjMo5Z5u/dW440i8ooMmJf1nwyUz6sl/L9xJljmfLl9+1B+SByO3GrVvYZhWDtqdyrCcv1qc5ID7AdzEB7p+InroSEHTiA5v2arzrnZ6zrKZqGlV61CS0mgklY+v/78RgYvNutWOOJL6XYZvJ2Y4aZUAhymCAqQoFdoETfSOQny88A4v+E3V3yPGh52MJ/BbBGK0WvEpJkg3N3R8ELiRPaamlhU24wNiNN1nxUXOKVAY11FFjI2k2M4qYM+5fX+WBw4cAoxnv0mJsLby6kJmw0otPZaMwaoS++UkiA/N+w9nduc8pNsoPtbA8zmOA+Vl6+DD8GAMb5eQabfabmGVqLQ3l+DCaobopQj/sFLho8LZE/7AfRLUvR3ETeFGTob0gqpxxZBA74AbKs9HwxweAxmQfpQ1ZHSz5KLpR3gCWCWO8F8oGvjLbf4BZX/h9y7rZIg0gXYWg1Jduosz63Qfl+TSJ1hVOE/HJyJNKal64JA+7CmDOzuoClMBN18S8NhldgBxs5axi98doi/yAYXxHgdACEae21NFuS311NnN8MapVmcsI7L+/H74FxQk0TiZBR5DTz8QjXt4e+Gg2VFK2YVIkl7tuvr5cSkEsfsz9SAOcors X-Forefront-Antispam-Report: CIP:52.169.0.179; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:eu2.smtp.exclaimer.net; PTR:eu2.smtp.exclaimer.net; CAT:NONE; SFS:(13230031)(82310400014)(1800799015)(36860700004); DIR:OUT; SFP:1101; X-OriginatorOrg: mail.schwarz X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2024 12:44:53.6020 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 774ba96a-cfc8-4afe-cb84-08dc645c56ec X-MS-Exchange-CrossTenant-Id: d04f4717-5a6e-4b98-b3f9-6918e0385f4c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=d04f4717-5a6e-4b98-b3f9-6918e0385f4c; Ip=[52.169.0.179]; Helo=[eu2.smtp.exclaimer.net] X-MS-Exchange-CrossTenant-AuthSource: DB3PEPF00008859.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR10MB7848 Subject: [ovs-dev] [PATCH v2 1/2] test-conntrack: Add per zone benchmark tool. 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: Felix Huettner via dev From: Felix Huettner Reply-To: Felix Huettner Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" The current test-conntrack benchmark command runs with multiple threads against a single conntrack zone. We now add a new benchmark-zones command that allows us to check the performance between multiple zones. We in there test the following scenarios for one zone while other zones also contain entries: 1. Flushing a single full zone 2. Flushing a single empty zone 3. Commiting new conntrack entries against a single zone 4. Running conntrack_execute without commit against the entries of a single zone Signed-off-by: Felix Huettner Acked-by: Simon Horman --- v1->v2: fix formatting tests/test-conntrack.c | 181 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 166 insertions(+), 15 deletions(-) base-commit: 16b7475414fa1eaf0ab1d723fdb6978060511c44 diff --git a/tests/test-conntrack.c b/tests/test-conntrack.c index 292b6c048..dc8d6cff9 100644 --- a/tests/test-conntrack.c +++ b/tests/test-conntrack.c @@ -25,36 +25,48 @@ #include "ovstest.h" #include "pcap-file.h" #include "timeval.h" +#include "stopwatch.h" + +#define STOPWATCH_CT_EXECUTE_COMMIT "ct-execute-commit" +#define STOPWATCH_CT_EXECUTE_NO_COMMIT "ct-execute-no-commit" +#define STOPWATCH_FLUSH_FULL_ZONE "full-zone" +#define STOPWATCH_FLUSH_EMPTY_ZONE "empty-zone" static const char payload[] = "50540000000a50540000000908004500001c0000000000" "11a4cd0a0101010a0101020001000200080000"; +static struct dp_packet * +build_packet(uint16_t udp_src, uint16_t udp_dst, ovs_be16 *dl_type) +{ + struct udp_header *udp; + struct flow flow; + struct dp_packet *pkt = dp_packet_new(sizeof payload / 2); + + dp_packet_put_hex(pkt, payload, NULL); + flow_extract(pkt, &flow); + + udp = dp_packet_l4(pkt); + udp->udp_src = htons(udp_src); + udp->udp_dst = htons(udp_dst); + + *dl_type = flow.dl_type; + + return pkt; +} + static struct dp_packet_batch * prepare_packets(size_t n, bool change, unsigned tid, ovs_be16 *dl_type) { struct dp_packet_batch *pkt_batch = xzalloc(sizeof *pkt_batch); - struct flow flow; size_t i; ovs_assert(n <= ARRAY_SIZE(pkt_batch->packets)); dp_packet_batch_init(pkt_batch); for (i = 0; i < n; i++) { - struct udp_header *udp; - struct dp_packet *pkt = dp_packet_new(sizeof payload/2); - - dp_packet_put_hex(pkt, payload, NULL); - flow_extract(pkt, &flow); - - udp = dp_packet_l4(pkt); - udp->udp_src = htons(ntohs(udp->udp_src) + tid); - - if (change) { - udp->udp_dst = htons(ntohs(udp->udp_dst) + i); - } - + uint16_t udp_dst = change ? 2+1 : 2; + struct dp_packet *pkt = build_packet(1 + tid, udp_dst, dl_type); dp_packet_batch_add(pkt_batch, pkt); - *dl_type = flow.dl_type; } return pkt_batch; @@ -153,6 +165,140 @@ test_benchmark(struct ovs_cmdl_context *ctx) free(threads); } +static void +test_benchmark_zones(struct ovs_cmdl_context *ctx) +{ + unsigned long n_conns, n_zones, iterations; + long long start; + unsigned i, j; + ovs_be16 dl_type; + long long now = time_msec(); + + fatal_signal_init(); + + /* Parse arguments */ + n_conns = strtoul(ctx->argv[1], NULL, 0); + if (n_conns == 0 || n_conns >= UINT32_MAX) { + ovs_fatal(0, "n_conns must be between 1 and 2^32"); + } + n_zones = strtoul(ctx->argv[2], NULL, 0); + if (n_zones == 0 || n_zones >= UINT16_MAX) { + ovs_fatal(0, "n_zones must be between 1 and 2^16"); + } + iterations = strtoul(ctx->argv[3], NULL, 0); + if (iterations == 0) { + ovs_fatal(0, "iterations must be greater than 0"); + } + + ct = conntrack_init(); + + /* Create initial connection entries */ + start = time_msec(); + struct dp_packet_batch **pkt_batch = xzalloc(n_conns * sizeof *pkt_batch); + for (i = 0; i < n_conns; i++) { + pkt_batch[i] = xzalloc(sizeof(struct dp_packet_batch)); + dp_packet_batch_init(pkt_batch[i]); + uint16_t udp_src = (i & 0xFFFF0000) >> 16; + if (udp_src == 0) { + udp_src = UINT16_MAX; + } + uint16_t udp_dst = i & 0xFFFF; + if (udp_dst == 0) { + udp_dst = UINT16_MAX; + } + struct dp_packet *pkt = build_packet(udp_src, udp_dst, &dl_type); + dp_packet_batch_add(pkt_batch[i], pkt); + } + printf("initial packet generation time: %lld ms\n", time_msec() - start); + + /* Put initial entries to each zone */ + start = time_msec(); + for (i = 0; i < n_zones; i++) { + for (j = 0; j < n_conns; j++) { + conntrack_execute(ct, pkt_batch[j], dl_type, false, true, i, + NULL, NULL, NULL, NULL, now, 0); + pkt_metadata_init_conn(&pkt_batch[j]->packets[0]->md); + } + } + printf("initial insert time: %lld ms\n", time_msec() - start); + + /* Actually run the tests */ + stopwatch_create(STOPWATCH_CT_EXECUTE_COMMIT, SW_US); + stopwatch_create(STOPWATCH_CT_EXECUTE_NO_COMMIT, SW_US); + stopwatch_create(STOPWATCH_FLUSH_FULL_ZONE, SW_US); + stopwatch_create(STOPWATCH_FLUSH_EMPTY_ZONE, SW_US); + start = time_msec(); + for (i = 0; i < iterations; i++) { + /* Testing flushing a full zone */ + stopwatch_start(STOPWATCH_FLUSH_FULL_ZONE, time_usec()); + uint16_t zone = 1; + conntrack_flush(ct, &zone); + stopwatch_stop(STOPWATCH_FLUSH_FULL_ZONE, time_usec()); + + /* Now fill the zone again */ + stopwatch_start(STOPWATCH_CT_EXECUTE_COMMIT, time_usec()); + for (j = 0; j < n_conns; j++) { + conntrack_execute(ct, pkt_batch[j], dl_type, false, true, zone, + NULL, NULL, NULL, NULL, now, 0); + pkt_metadata_init_conn(&pkt_batch[j]->packets[0]->md); + } + stopwatch_stop(STOPWATCH_CT_EXECUTE_COMMIT, time_usec()); + + /* Running conntrack_execute on the now existing connections */ + stopwatch_start(STOPWATCH_CT_EXECUTE_NO_COMMIT, time_usec()); + for (j = 0; j < n_conns; j++) { + conntrack_execute(ct, pkt_batch[j], dl_type, false, false, zone, + NULL, NULL, NULL, NULL, now, 0); + pkt_metadata_init_conn(&pkt_batch[j]->packets[0]->md); + } + stopwatch_stop(STOPWATCH_CT_EXECUTE_NO_COMMIT, time_usec()); + + /* Testing flushing an empty zone */ + stopwatch_start(STOPWATCH_FLUSH_EMPTY_ZONE, time_usec()); + zone = UINT16_MAX; + conntrack_flush(ct, &zone); + stopwatch_stop(STOPWATCH_FLUSH_EMPTY_ZONE, time_usec()); + } + + printf("flush run time: %lld ms\n", time_msec() - start); + + stopwatch_sync(); + struct stopwatch_stats stats_ct_execute_commit = { .unit = SW_US }; + stopwatch_get_stats(STOPWATCH_CT_EXECUTE_COMMIT, &stats_ct_execute_commit); + struct stopwatch_stats stats_ct_execute_nocommit = { .unit = SW_US }; + stopwatch_get_stats(STOPWATCH_CT_EXECUTE_NO_COMMIT, + &stats_ct_execute_nocommit); + struct stopwatch_stats stats_flush_full = { .unit = SW_US }; + stopwatch_get_stats(STOPWATCH_FLUSH_FULL_ZONE, &stats_flush_full); + struct stopwatch_stats stats_flush_empty = { .unit = SW_US }; + stopwatch_get_stats(STOPWATCH_FLUSH_EMPTY_ZONE, &stats_flush_empty); + + printf("results:\n"); + printf(" | ct execute (commit) | ct execute (no commit) |" + " flush full zone | flush empty zone |\n"); + printf("+--------+---------------------+------------------------+" + "-----------------+------------------+\n"); + printf("| Min | %16llu us | %19llu us | %12llu us | %13llu us |\n", + stats_ct_execute_commit.min, stats_ct_execute_nocommit.min, + stats_flush_full.min, stats_flush_empty.min); + printf("| Max | %16llu us | %19llu us | %12llu us | %13llu us |\n", + stats_ct_execute_commit.max, stats_ct_execute_nocommit.max, + stats_flush_full.max, stats_flush_empty.max); + printf("| 95%%ile | %16.2f us | %19.2f us | %12.2f us | %13.2f us |\n", + stats_ct_execute_commit.pctl_95, stats_ct_execute_nocommit.pctl_95, + stats_flush_full.pctl_95, stats_flush_empty.pctl_95); + printf("| Avg | %16.2f us | %19.2f us | %12.2f us | %13.2f us |\n", + stats_ct_execute_commit.ewma_1, stats_ct_execute_nocommit.ewma_1, + stats_flush_full.ewma_1, stats_flush_empty.ewma_1); + + conntrack_destroy(ct); + for (i = 0; i < n_conns; i++) { + dp_packet_delete_batch(pkt_batch[i], true); + free(pkt_batch[i]); + } + free(pkt_batch); +} + static void pcap_batch_execute_conntrack(struct conntrack *ct_, struct dp_packet_batch *pkt_batch) @@ -264,6 +410,11 @@ static const struct ovs_cmdl_command commands[] = { * 'batch_size' (1 by default) per call, with the commit flag set. * Prints the ct_state of each packet. */ {"pcap", "file [batch_size]", 1, 2, test_pcap, OVS_RO}, + /* Creates 'n_conns' connections in 'n_zones' zones each. + * Afterwards triggers flush requests repeadeatly for the last filled zone + * and an empty zone. */ + {"benchmark-zones", "n_conns n_zones iterations", 3, 3, + test_benchmark_zones, OVS_RO}, {NULL, NULL, 0, 0, NULL, OVS_RO}, }; From patchwork Wed Apr 24 12:44:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felix Huettner X-Patchwork-Id: 1927143 X-Patchwork-Delegate: horms@verge.net.au Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=1x9oLRgf; dkim=fail reason="signature verification failed" (2048-bit key) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=1x9oLRgf; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.136; helo=smtp3.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VPdxM5x6Kz1yP2 for ; Wed, 24 Apr 2024 22:45:11 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 8E5C56063E; Wed, 24 Apr 2024 12:45:09 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id 4zG2-vGVsnwB; Wed, 24 Apr 2024 12:45:08 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 250FB608DA Authentication-Results: smtp3.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=1x9oLRgf; dkim=fail reason="signature verification failed" (2048-bit key) header.d=mail.schwarz header.i=@mail.schwarz header.a=rsa-sha256 header.s=selector1 header.b=1x9oLRgf Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id 250FB608DA; Wed, 24 Apr 2024 12:45:08 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id C3D92C007C; Wed, 24 Apr 2024 12:45:07 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id AA97EC0037 for ; Wed, 24 Apr 2024 12:45:06 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 98D04608DA for ; Wed, 24 Apr 2024 12:45:06 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id fzewJQ29Mhly for ; Wed, 24 Apr 2024 12:45:05 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2a01:111:f400:7e1a::60c; helo=eur05-db8-obe.outbound.protection.outlook.com; envelope-from=felix.huettner@mail.schwarz; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp3.osuosl.org 01A996063E Authentication-Results: smtp3.osuosl.org; dmarc=pass (p=reject dis=none) header.from=mail.schwarz DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 01A996063E Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2060c.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e1a::60c]) by smtp3.osuosl.org (Postfix) with ESMTPS id 01A996063E for ; Wed, 24 Apr 2024 12:45:04 +0000 (UTC) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=JJB/BMYyPQMYs+p9y2ycs/b6YQtqRPxoO/WCLkLQaOEhK1VaKw8h4VAIcc2F+DB2lR4eZXl3f9lIIltBOVMAcdIrmFAoXrkL+6LjjebudsYbeS3U2ifkzNRpERenzjxkIQ5FsKzcEvgzc5/EB3Z7o5S22Fwo0Km5YeC5+lYjTPGbgH6GJONRPzTI9AivkoAG14BV/GPOGTIUklykgjeiUZzt8dDE/tnNUu/3I+sXqNc26CwZCln7KPGT36Ip0tFYF1/TjlocOUX7+TaCxm0bnJaJXP2exoQf4m14vVlBUH+p3xQDl6PV0w4y9jUz1oDGvDA51MnVWJu6HXRvOVRyuQ== ARC-Message-Signature: i=2; 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=DoR08wTfOrPfWs+2d/pMKEoEtdI3Z7yl/GAQTEcwHzs=; b=hMEfVr+kmIF2egeq2KBS2hY20qj/G3AOiGSI6m8nPwVF1PZk2DC8CkBymjl8R5bYVXSyWZMMG725GlLHp6Lk6Bvt3ztdsut0W0Az5OVa1RzXICobDDQy4+omfthoHffjhivXPchth8Ou3kJns3wrlZPtINFdKZ0zwm38Eyhgk3vsARyu8IA8IutWRFpjIyH84N2tOj1G9Bq1PkwUlpZttTitdljuIRMyrk3mz5YsRMYuLGM35niWGWXU9iiSHlS913oKJhkfxomW28Rlsn4H7OP9b7PZuXfzckC6+cb2+QNdt2l6et3FaPsJ67TllTGYMIP8jT9dRZR2HsU291A5Uw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 52.169.0.179) smtp.rcpttodomain=openvswitch.org smtp.mailfrom=mail.schwarz; dmarc=pass (p=reject sp=none pct=100) action=none header.from=mail.schwarz; dkim=pass (signature was verified) header.d=mail.schwarz; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=mail.schwarz] dkim=[1,1,header.d=mail.schwarz] dmarc=[1,1,header.from=mail.schwarz]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.schwarz; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DoR08wTfOrPfWs+2d/pMKEoEtdI3Z7yl/GAQTEcwHzs=; b=1x9oLRgfcVb+LG9X161dNiKyDAa5WeuMG/DioL0EjvNswiDqOrmbRkjHNZSPH4KActmucdch9ptjVV/tdoCof2TetjGCJus+tG3dntQBl8SZjdnBH3vAEFF4iU+q1QFkqD6lJfsqtcMvpowHG1ejU66BxlGCSnraDtaZSEgYQyoUQkmCGDqVWlN0qqo8CipxDqP0326ScpBgU6sf2dHQ1+y6mXlLpbIMZ9WOrptPVBXRw+zfgBFuNFl7+QHdVQww+p2lblxQmwZ6TeWrMabx3cC0IyHQnL+A8Y8E/PzPiswbK5cJUodV06/OHwMGwXiYtTTRL97x9FI5aNUrsXnXGw== Received: from DU2PR04CA0086.eurprd04.prod.outlook.com (2603:10a6:10:232::31) by AM0PR10MB3346.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:18c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Wed, 24 Apr 2024 12:45:01 +0000 Received: from DB5PEPF00014B9C.eurprd02.prod.outlook.com (2603:10a6:10:232:cafe::d2) by DU2PR04CA0086.outlook.office365.com (2603:10a6:10:232::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7495.33 via Frontend Transport; Wed, 24 Apr 2024 12:45:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 52.169.0.179) smtp.mailfrom=mail.schwarz; dkim=pass (signature was verified) header.d=mail.schwarz;dmarc=pass action=none header.from=mail.schwarz; Received-SPF: Pass (protection.outlook.com: domain of mail.schwarz designates 52.169.0.179 as permitted sender) receiver=protection.outlook.com; client-ip=52.169.0.179; helo=eu2.smtp.exclaimer.net; pr=C Received: from eu2.smtp.exclaimer.net (52.169.0.179) by DB5PEPF00014B9C.mail.protection.outlook.com (10.167.8.170) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.7519.19 via Frontend Transport; Wed, 24 Apr 2024 12:45:00 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (104.47.1.51) by eu2.smtp.exclaimer.net (52.169.0.179) with Exclaimer Signature Manager ESMTP Proxy eu2.smtp.exclaimer.net (tlsversion=TLS12, tlscipher=TLS_ECDHE_WITH_AES256_SHA384); Wed, 24 Apr 2024 12:45:00 +0000 X-ExclaimerHostedSignatures-MessageProcessed: true X-ExclaimerProxyLatency: 6723169 X-ExclaimerImprintLatency: 2632853 X-ExclaimerImprintAction: 482b79000da54367a70eeab44a4c8a55 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S/v1Nil1jaOMFDpwAX9vWYlwESUMSShF6WKghrIL4dO4vwn1mouzacE8GSz3wtrkio18P1+mlsfjXDRKSPBhn8LJDYHsslno32J0jAEucXeuPPPZF107rbxBZvZnPUh89C7i8mr900m5hw8sCXBMB2KvyMr2y8pZyJiJtHEFOg8YsfV0ZU6rXEb60PSnDgg47UMC8IrXVNDEyHVCBf2aAl/MMKhKAk4r2k2x8t9b43s4dSE5wC3hSFLUd8ks3Kc3C05jbuRtpdeITUeN1qLltdVZBcsaIGYc71Md9sVrmcVjlhu+DR2Oy3k/ApSKABJdKY2ZtqmY78Z9tV1fS/htWQ== 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=DoR08wTfOrPfWs+2d/pMKEoEtdI3Z7yl/GAQTEcwHzs=; b=MQS1aoMFZNiz9YvX7AqpLG8JwHbhSHZ6fdy3m2/p9FsSRJZstOMv2r1kixgPT3ULjbj7PwuMprW1p2tq/rcW2Bk/cij4+84TQ3I/EqlS+j9mIh8M7XaVX0ahAD5TFJXmWdqLJRLprGv1rcygbC4xGxk4iOJQ/Udkl6JF2qkIjeRcRiA+otSJ3Klu49xHV68Lb0sdbc/rFmsfSz7JzHR0UUWQTjwXqOSHeSenANSRJDtdcKc+WTDpR4HuCqz/yd4rXs5bCLce6IRZCONRrLfPh7kLfcDhaRleTr0kSQx1nGBdJQXTBuvb3ppn0zHzkWlsbUBYxAUITRU48TxerLTn3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mail.schwarz; dmarc=pass action=none header.from=mail.schwarz; dkim=pass header.d=mail.schwarz; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.schwarz; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DoR08wTfOrPfWs+2d/pMKEoEtdI3Z7yl/GAQTEcwHzs=; b=1x9oLRgfcVb+LG9X161dNiKyDAa5WeuMG/DioL0EjvNswiDqOrmbRkjHNZSPH4KActmucdch9ptjVV/tdoCof2TetjGCJus+tG3dntQBl8SZjdnBH3vAEFF4iU+q1QFkqD6lJfsqtcMvpowHG1ejU66BxlGCSnraDtaZSEgYQyoUQkmCGDqVWlN0qqo8CipxDqP0326ScpBgU6sf2dHQ1+y6mXlLpbIMZ9WOrptPVBXRw+zfgBFuNFl7+QHdVQww+p2lblxQmwZ6TeWrMabx3cC0IyHQnL+A8Y8E/PzPiswbK5cJUodV06/OHwMGwXiYtTTRL97x9FI5aNUrsXnXGw== Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mail.schwarz; Received: from PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:30d::9) by DU0PR10MB7382.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:446::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.22; Wed, 24 Apr 2024 12:44:58 +0000 Received: from PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM ([fe80::6c69:4f96:2e5d:8aae]) by PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM ([fe80::6c69:4f96:2e5d:8aae%4]) with mapi id 15.20.7472.044; Wed, 24 Apr 2024 12:44:58 +0000 Date: Wed, 24 Apr 2024 14:44:54 +0200 To: dev@openvswitch.org Message-ID: <8e4dbb943dcda12b2b8c9d9a5caf21329053b048.1713962636.git.felix.huettner@mail.schwarz> Mail-Followup-To: dev@openvswitch.org References: <14e79dab894384b1d4e9455dacb123cc86e8ef6d.1713962636.git.felix.huettner@mail.schwarz> Content-Disposition: inline In-Reply-To: <14e79dab894384b1d4e9455dacb123cc86e8ef6d.1713962636.git.felix.huettner@mail.schwarz> X-ClientProxiedBy: FR3P281CA0118.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::13) To PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:30d::9) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PAVPR10MB6914:EE_|DU0PR10MB7382:EE_|DB5PEPF00014B9C:EE_|AM0PR10MB3346:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b24e5c4-8f31-43e7-48ef-08dc645c5b45 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230031|366007|1800799015|376005; X-Microsoft-Antispam-Message-Info-Original: iu0Uu6V7YlXtWqG66tVIDz6xzxt+b9uMD5E0GE13ykhuU5AemJidj3Pb1YZP0F9VMVmnM0OUMVSu+3n7yYEZ70idSI5/wQKtgSlyjsBlRefkeoL5wEMD/lc5AdRcUjdskiUSX/yrnVDKnur4z0KPmbf4HK1iC6Ts+xYLOTwxOxmBOMDdO6DCR7MDHNSI2JxpEirSCYxtdDbdMKe9MPMJ/DYwSK5fabOgguELTjoW7UFE4ae8+m3sOMJhMmDlz41YsFA2qqiwjZZzSG2yz4okkiMOf2lds2b1pD+E2p9y9HESuM/MlNLBp+KiFLub0y0Cflnruj7PU0rpZjRmQ1GwCDa+oRNHZF19eNhNu6fJn6W8SqIHyVd5GG/7E0kqBBwVh9KGDNcIvgHjpILb0ln0/sKrACesLsKmkyt3wZSHYlxz6NZJ8wLickUQ2PI6jOyH/I+OUHrAlP5OvtNySUR6oz79DsZr++e3HW/YgSCuDPzuoUrKpG0HROBl+B0PYTO5D2ty1Dx1DmvusYB25o26TebrFxvQCpJ9aF8X6FVl0tMY+6cl/+ExOnOLoT7bvpDHlSY/DSJLYV8LLxVs6d61S76zVWx4j0I4WgpcLK5NRBQHxSrKgUH8VmKLW90WrsV9BWukSCGPE4jupojQPLO0A3B3R6ysIozor/AtOQAX7tUTppCzQCu/+xsCkeYWpwS2mGkL/eifVsmkWp/51zwoAWTeJEDEpLXB9JWSulfVLDIx3fGwmBPYU+8gG9JMJ1K6izV9sfSQF3radMbloiGZSD98g47Pd3HDGe2B4VChv+JSOZuwnlLz7o7Zv8LwolftV/kdweUyjGB09399I56wKTt9sn7cppewFQmO5rrIQcowpwDaUBMZ1siKg5rNRFAVZhyWeisZLtaxg6G6fAmrDk0aHyqJ/H/Y72bXOsQ/UjbJYbraLD2g6VpLXveHdAQ+TtfTbWKw8eAElNxUyIu99IyPUIHRWU4vsMriBgXNbR4tBMx8NlIcv1SjXpxZshPk6f2WTNfKtkSvhEMk+YgTzWql8k9CTmM2/AW8AIDaF1STD1AlR6YdoSPXypilNq0jZXS39Nsf3BIL00/ObQggfQHoi1cBj+hw9a0V40gRsJC7i8bWsZCcjqciiuP+fH+aCtbvNBgu10U/OW4fDw6TLWeeSNT7edR0+xTh0l2AqFg5CSxnRJCRUwnN16ctAcSNEmqOCJoc9ccW95C+FyMNZBt2sWASizhm8Z2GTiEZ0ZhFMqTImHm30o0e/z0HEBNOFtCuX3mploOUmlIKL7uOPA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR10MB7382 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B9C.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8bda5439-90d2-441b-ff1c-08dc645c59c8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V4kvAdyEtbT2qRkH482xDftk9WOUGreUwsrxeFC0kqgNTPW8udiGKnaHXRY63JKF3fkBLJSEA22yqnxSlT63f/w4qli+R96u23K4hQQHgJuxBsz0U8VkaSBAusIVWyLbPvcIBYpLCKKqEwETSdcHYbwm+EzhVeF3B1IkuTSTnVRABnl67aNy+7QOz3A6i/+MfQr/8ePWCBMaEvm0CV9DbB4si5QAGWkteTlY1GzEKl69u3FwmNkV1UNvtAeYfGbluPRcuHgfYvAftelSPhjO/fI+XcEdFU6KMSUhIKWULKrGtGDm4S2OSWZB0aOrRgWlX0s9WqWHm9lwMJFJ1pGmocpey/ubIOWci5qt6Bi3GiiE/2FIhOsUjTzqeeFLcqQU0Fcq++ly1U2JDUGi38ERksD/gMvwshhnaWODxL7bLHfhC+EE9IveMQSWgYRqN4awG72DoOFoJnq6WHsiP5IeotQey83VCpl5Pb3xQ+jnBIzpkH+NTFBRaeuc5bhXg7rC8cAhJmwGi5+nBuRuwFqI0yb0P/IgGcMHSK9ltsfEm3axwjW1LiduEXjUxBt7l/EUBKbkdhRlPYPbdES66Fahwy3jOKd6pD+aEB2ARI0q9t75kNFyIwRj1nfUhnsVS3BNAqe1n/QFYDFooyvDYZ1wbTKj18RRt2eXfoKzsHV6XSVqTOQsdxN9992LReEd6ZD8K6yPCk86Q8e7QIXQLuOe2OfPq3bs9MavvViY5mTzoXFbU4QXY3rqdqUhfgIxm5gRIqbcql94pTk6+U8SeLOa1F2iOJhJmrBOai6YhRWoAj1Id/yX9KdnLIZg4ulRIK6Hx/bgTukbrl95+t4+vRUaOx/4P5ZsG92/C45L/4LQ4WgbmE6qtVAUD7QqeN6QNQ+jN/u9FI5yFyu8Gk4Zp95r6W9uAZrlcdiIjjta8HqH0QZ2QFBhROsyj9kusfARPqc/AjTDVoZyi3NIwPDkohAsIgKKjoyeSnc2cDBA2Xbkk5pnuJGthIVNsqKknF1ZsZJpLSv3Ic/udxBvUtXJUQHvFsqsQoHBLDsq18uZ/kIegxTQch5SHxMI6mIqmlGLz2AqlcFmKR7bQt5za6G4QP2KKA8iyef9Cg/kk+lgF0iITfwQgLxReQZq8GUw/hHmOCgnSuF/IHc8syEyx1tCYze5IpIRhOxdDjusdM5gPpirqpcN6DJJawiqKqWtZRk8Xguvsjrvy7QATUcthmqMLLyw6gVrCg6tt36iVfbPvANcuzEjDGjd9RXEfVPbXpV0yCX9wZcAIRIqjS3CEuc2gxEvBLZbeyocc6sFoxzCgqgQbGXXw6ToSOUIIozIAV8WQ/zZ8bNcAMh5YczVpY3XdX9gBAyn+O4Eqp0neeYP/kyuD9a7nH/3Xk9L6aq0M+bu3ZiY X-Forefront-Antispam-Report: CIP:52.169.0.179; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:eu2.smtp.exclaimer.net; PTR:eu2.smtp.exclaimer.net; CAT:NONE; SFS:(13230031)(1800799015)(376005)(36860700004)(82310400014); DIR:OUT; SFP:1101; X-OriginatorOrg: mail.schwarz X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2024 12:45:00.7053 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b24e5c4-8f31-43e7-48ef-08dc645c5b45 X-MS-Exchange-CrossTenant-Id: d04f4717-5a6e-4b98-b3f9-6918e0385f4c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=d04f4717-5a6e-4b98-b3f9-6918e0385f4c; Ip=[52.169.0.179]; Helo=[eu2.smtp.exclaimer.net] X-MS-Exchange-CrossTenant-AuthSource: DB5PEPF00014B9C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR10MB3346 Subject: [ovs-dev] [PATCH v2 2/2] conntrack: Key connections by zone. 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: Felix Huettner via dev From: Felix Huettner Reply-To: Felix Huettner Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Currently conntrack uses a single large cmap for all connections stored. This cmap contains all connections for all conntrack zones which are completely separate from each other. By separating each zone to its own cmap we can significantly optimize the performance when using multiple zones. The change fixes a similar issue as [1] where slow conntrack zone flush operations significantly slow down OVN router failover. The difference is just that this fix is used whith dpdk, while [1] was when using the ovs kernel module. As we now need to store more cmap's the memory usage of struct conntrack increases by 524280 bytes. Additionally we need 65535 cmaps with 128 bytes each. This leads to a total memory increase of around 10MB. Running "./ovstest test-conntrack benchmark 4 33554432 32 1" shows no real difference in the multithreading behaviour against a single zone. Running the new "./ovstest test-conntrack benchmark-zones" show significant speedups as shown below. The values for "ct execute" are for acting on the complete zone with all its entries in total (so in the first case adding 10,000 new conntrack entries). All tests are run 1000 times. When running with 1,000 zones with 10,000 entries each we see the following results (all in microseconds): "./ovstest test-conntrack benchmark-zones 10000 1000 1000" +------+--------+---------+---------+ | Min | Max | 95%ile | Avg | +------------------------+------+--------+---------+---------+ | ct execute (commit) | | | | | | with commit | 2266 | 3505 | 2707.06 | 2592.06 | | without commit | 2411 | 12730 | 4432.50 | 2736.78 | +------------------------+------+--------+---------+---------+ | ct execute (no commit) | | | | | | with commit | 699 | 1238 | 886.15 | 722.67 | | without commit | 700 | 3377 | 1934.42 | 803.53 | +------------------------+------+--------+---------+---------+ | flush full zone | | | | | | with commit | 619 | 1122 | 901.36 | 679.15 | | without commit | 618 | 105078 | 64591 | 2886.46 | +------------------------+------+--------+---------+---------+ | flush empty zone | | | | | | with commit | 0 | 5 | 1.00 | 0.64 | | without commit | 54 | 87469 | 64520 | 2172.25 | +------------------------+------+--------+---------+---------+ When running with 10,000 zones with 1,000 entries each we see the following results (all in microseconds): "./ovstest test-conntrack benchmark-zones 1000 10000 1000" +------+--------+---------+---------+ | Min | Max | 95%ile | Avg | +------------------------+------+--------+---------+---------+ | ct execute (commit) | | | | | | with commit | 215 | 287 | 231.88 | 222.30 | | without commit | 214 | 1692 | 569.18 | 285.83 | +------------------------+------+--------+---------+---------+ | ct execute (no commit) | | | | | | with commit | 68 | 97 | 74.69 | 70.09 | | without commit | 68 | 300 | 158.40 | 82.06 | +------------------------+------+--------+---------+---------+ | flush full zone | | | | | | with commit | 47 | 211 | 56.34 | 50.34 | | without commit | 48 | 96330 | 63392 | 63923 | +------------------------+------+--------+---------+---------+ | flush empty zone | | | | | | with commit | 0 | 1 | 1.00 | 0.44 | | without commit | 3 | 109728 | 63923 | 3629.44 | +------------------------+------+--------+---------+---------+ Comparing the averages we see: * a moderate performance improvement for conntrack_execute with or without commiting of around 6% to 23% * a significant performance improvement for flushing a full zone of around 75% to 99% * an even more significant improvement for flushing empty zones since we no longer need to check any unrelated connections [1] 9ec849e8aa869b646c372fac552ae2609a4b5f66 Signed-off-by: Felix Huettner Acked-by: Simon Horman --- v1->v2: fix formatting lib/conntrack-private.h | 2 +- lib/conntrack.c | 81 +++++++++++++++++++++++++++-------------- lib/conntrack.h | 1 + 3 files changed, 56 insertions(+), 28 deletions(-) diff --git a/lib/conntrack-private.h b/lib/conntrack-private.h index 3fd5fccd3..71367f211 100644 --- a/lib/conntrack-private.h +++ b/lib/conntrack-private.h @@ -200,7 +200,7 @@ enum ct_ephemeral_range { struct conntrack { struct ovs_mutex ct_lock; /* Protects 2 following fields. */ - struct cmap conns OVS_GUARDED; + struct cmap conns[UINT16_MAX + 1] OVS_GUARDED; struct rculist exp_lists[N_EXP_LISTS]; struct cmap zone_limits OVS_GUARDED; struct cmap timeout_policies OVS_GUARDED; diff --git a/lib/conntrack.c b/lib/conntrack.c index 7e3ed0ee0..16e1c8bb5 100644 --- a/lib/conntrack.c +++ b/lib/conntrack.c @@ -254,7 +254,9 @@ conntrack_init(void) ovs_mutex_init_adaptive(&ct->ct_lock); ovs_mutex_lock(&ct->ct_lock); - cmap_init(&ct->conns); + for (unsigned i = 0; i < ARRAY_SIZE(ct->conns); i++) { + cmap_init(&ct->conns[i]); + } for (unsigned i = 0; i < ARRAY_SIZE(ct->exp_lists); i++) { rculist_init(&ct->exp_lists[i]); } @@ -427,12 +429,14 @@ conn_clean__(struct conntrack *ct, struct conn *conn) } hash = conn_key_hash(&conn->key_node[CT_DIR_FWD].key, ct->hash_basis); - cmap_remove(&ct->conns, &conn->key_node[CT_DIR_FWD].cm_node, hash); + cmap_remove(&ct->conns[conn->key_node[CT_DIR_FWD].key.zone], + &conn->key_node[CT_DIR_FWD].cm_node, hash); if (conn->nat_action) { hash = conn_key_hash(&conn->key_node[CT_DIR_REV].key, ct->hash_basis); - cmap_remove(&ct->conns, &conn->key_node[CT_DIR_REV].cm_node, hash); + cmap_remove(&ct->conns[conn->key_node[CT_DIR_REV].key.zone], + &conn->key_node[CT_DIR_REV].cm_node, hash); } rculist_remove(&conn->node); @@ -503,7 +507,9 @@ conntrack_destroy(struct conntrack *ct) ovs_mutex_lock(&ct->ct_lock); - cmap_destroy(&ct->conns); + for (unsigned i = 0; i < ARRAY_SIZE(ct->conns); i++) { + cmap_destroy(&ct->conns[i]); + } cmap_destroy(&ct->zone_limits); cmap_destroy(&ct->timeout_policies); @@ -534,7 +540,7 @@ conn_key_lookup(struct conntrack *ct, const struct conn_key *key, struct conn *conn = NULL; bool found = false; - CMAP_FOR_EACH_WITH_HASH (keyn, cm_node, hash, &ct->conns) { + CMAP_FOR_EACH_WITH_HASH (keyn, cm_node, hash, &ct->conns[key->zone]) { if (keyn->dir == CT_DIR_FWD) { conn = CONTAINER_OF(keyn, struct conn, key_node[CT_DIR_FWD]); } else { @@ -962,14 +968,16 @@ conn_not_found(struct conntrack *ct, struct dp_packet *pkt, nat_packet(pkt, nc, false, ctx->icmp_related); uint32_t rev_hash = conn_key_hash(&rev_key_node->key, ct->hash_basis); - cmap_insert(&ct->conns, &rev_key_node->cm_node, rev_hash); + cmap_insert(&ct->conns[ctx->key.zone], + &rev_key_node->cm_node, rev_hash); } ovs_mutex_init_adaptive(&nc->lock); atomic_flag_clear(&nc->reclaimed); fwd_key_node->dir = CT_DIR_FWD; rev_key_node->dir = CT_DIR_REV; - cmap_insert(&ct->conns, &fwd_key_node->cm_node, ctx->hash); + cmap_insert(&ct->conns[ctx->key.zone], + &fwd_key_node->cm_node, ctx->hash); conn_expire_push_front(ct, nc); atomic_count_inc(&ct->n_conn); ctx->conn = nc; /* For completeness. */ @@ -2649,11 +2657,12 @@ conntrack_dump_start(struct conntrack *ct, struct conntrack_dump *dump, if (pzone) { dump->zone = *pzone; dump->filter_zone = true; + dump->current_zone = dump->zone; } dump->ct = ct; *ptot_bkts = 1; /* Need to clean up the callers. */ - dump->cursor = cmap_cursor_start(&ct->conns); + dump->cursor = cmap_cursor_start(&dump->ct->conns[dump->current_zone]); return 0; } @@ -2665,20 +2674,26 @@ conntrack_dump_next(struct conntrack_dump *dump, struct ct_dpif_entry *entry) struct conn_key_node *keyn; struct conn *conn; - CMAP_CURSOR_FOR_EACH_CONTINUE (keyn, cm_node, &dump->cursor) { - if (keyn->dir != CT_DIR_FWD) { - continue; - } + while (true) { + CMAP_CURSOR_FOR_EACH_CONTINUE (keyn, cm_node, &dump->cursor) { + if (keyn->dir != CT_DIR_FWD) { + continue; + } - conn = CONTAINER_OF(keyn, struct conn, key_node[CT_DIR_FWD]); - if (conn_expired(conn, now)) { - continue; - } + conn = CONTAINER_OF(keyn, struct conn, key_node[CT_DIR_FWD]); + if (conn_expired(conn, now)) { + continue; + } - if (!dump->filter_zone || keyn->key.zone == dump->zone) { conn_to_ct_dpif_entry(conn, entry, now); return 0; } + + if (dump->filter_zone || dump->current_zone == UINT16_MAX) { + break; + } + dump->current_zone++; + dump->cursor = cmap_cursor_start(&dump->ct->conns[dump->current_zone]); } return EOF; @@ -2756,20 +2771,32 @@ conntrack_exp_dump_done(struct conntrack_dump *dump OVS_UNUSED) return 0; } +static int +conntrack_flush_zone(struct conntrack *ct, const uint16_t zone) +{ + struct conn_key_node *keyn; + struct conn *conn; + + CMAP_FOR_EACH (keyn, cm_node, &ct->conns[zone]) { + if (keyn->dir != CT_DIR_FWD) { + continue; + } + conn = CONTAINER_OF(keyn, struct conn, key_node[CT_DIR_FWD]); + conn_clean(ct, conn); + } + + return 0; +} + int conntrack_flush(struct conntrack *ct, const uint16_t *zone) { - struct conn_key_node *keyn; - struct conn *conn; + if (zone) { + return conntrack_flush_zone(ct, *zone); + } - CMAP_FOR_EACH (keyn, cm_node, &ct->conns) { - if (keyn->dir != CT_DIR_FWD) { - continue; - } - conn = CONTAINER_OF(keyn, struct conn, key_node[CT_DIR_FWD]); - if (!zone || *zone == keyn->key.zone) { - conn_clean(ct, conn); - } + for (unsigned i = 0; i < ARRAY_SIZE(ct->conns); i++) { + conntrack_flush_zone(ct, i); } return 0; diff --git a/lib/conntrack.h b/lib/conntrack.h index 8ab8b0017..13bb02ea9 100644 --- a/lib/conntrack.h +++ b/lib/conntrack.h @@ -112,6 +112,7 @@ struct conntrack_dump { }; bool filter_zone; uint16_t zone; + uint16_t current_zone; }; struct conntrack_zone_limit {