From patchwork Mon Nov 4 11:02:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felix Huettner X-Patchwork-Id: 2006159 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=stackit.cloud header.i=@stackit.cloud header.a=rsa-sha256 header.s=selector1 header.b=sgvzIobw; dkim=fail reason="signature verification failed" (2048-bit key) header.d=stackit.cloud header.i=@stackit.cloud header.a=rsa-sha256 header.s=selector1 header.b=sgvzIobw; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.137; helo=smtp4.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 4XhpTl3d2pz1xxN for ; Mon, 4 Nov 2024 22:02:51 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 8921F4054B; Mon, 4 Nov 2024 11:02:48 +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 BmtOI1WjlQl3; Mon, 4 Nov 2024 11:02:45 +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 smtp4.osuosl.org 56FFF40535 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=stackit.cloud header.i=@stackit.cloud header.a=rsa-sha256 header.s=selector1 header.b=sgvzIobw; dkim=fail reason="signature verification failed" (2048-bit key) header.d=stackit.cloud header.i=@stackit.cloud header.a=rsa-sha256 header.s=selector1 header.b=sgvzIobw Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id 56FFF40535; Mon, 4 Nov 2024 11:02:45 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 23C9FC08A6; Mon, 4 Nov 2024 11:02:45 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id DCBE4C08A3 for ; Mon, 4 Nov 2024 11:02:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id CAEE540522 for ; Mon, 4 Nov 2024 11:02:43 +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 r4Bs0GsFDHA6 for ; Mon, 4 Nov 2024 11:02:41 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2a01:111:f403:260d::604; helo=eur03-dba-obe.outbound.protection.outlook.com; envelope-from=felix.huettner@stackit.cloud; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp2.osuosl.org F103340516 Authentication-Results: smtp2.osuosl.org; dmarc=pass (p=reject dis=none) header.from=stackit.cloud DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org F103340516 Authentication-Results: smtp2.osuosl.org; dkim=pass (2048-bit key, unprotected) header.d=stackit.cloud header.i=@stackit.cloud header.a=rsa-sha256 header.s=selector1 header.b=sgvzIobw; dkim=pass (2048-bit key) header.d=stackit.cloud header.i=@stackit.cloud header.a=rsa-sha256 header.s=selector1 header.b=sgvzIobw Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on20604.outbound.protection.outlook.com [IPv6:2a01:111:f403:260d::604]) by smtp2.osuosl.org (Postfix) with ESMTPS id F103340516 for ; Mon, 4 Nov 2024 11:02:40 +0000 (UTC) ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=Lpx/resP2i072YEbs6u5keqOPJysnxPFLida0ii2yvjx21xQz6dyWqlUuE8tDKotRIAKlPAvlCfYsAjBeUfkxlxOerWT6XAxGk3QNyeo8jBiGl4l6k+Yin2+0N0WmuxL9w88rGkgWdzsAeOC+Q0qUwCIU+3SYsgfogXk+22qlipH3hV2HSEVhn2yLoX6gH8KvHW2NcqrR1CNirhC8/YNJmBcfBzcfMeQ3Ju/eg7bc/6HC81nmwpHztlf1xVXztvFJdmApQmS284WABYVZlg2nKBWQB2kQNrs5Hp+wDpiDHj73YsSZyuY8lbpL+nKckZZJXygatFDJtFfott3qBU6Vg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=gc7ejyciwomsLFMRXNFDbul4fXFLDwtdu8lXGGQpjLg=; b=HLDrzBYIoBdK76CyOa3BYZYRWDgmZDqVNqe9uZPqWxz4LnjNZNf1BNQ4iLEF1y4LcehcNmMwXweZV9ucDkVeysOerl9c62r1DCSeyXk/afL+R4GJNqFqYrg1pmTm2IJqh8mvzdHAN7Ad1iyVEAxjA8j5LUxauA9jNdJiR0c72yXITiy+iSbj0nfH8/IALQfrpfu3HlrkwOk2sEXz94HwZdkXMSNoTB36HZa6BifIhD3YduRwU1osTVM9Z/L6vsVlYYjY3g9Z54rnDpLzVSJOYNAUz+iQz/zMdFCvmB6XjzODM3HDfykL+fcX2PKaGMwyYjALYxD0dKD7yLDG46ACEg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=fail (sender ip is 52.169.0.179) smtp.rcpttodomain=openvswitch.org smtp.mailfrom=stackit.cloud; dmarc=pass (p=reject sp=none pct=100) action=none header.from=stackit.cloud; dkim=pass (signature was verified) header.d=stackit.cloud; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=stackit.cloud] dkim=[1,1,header.d=stackit.cloud] dmarc=[1,1,header.from=stackit.cloud]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stackit.cloud; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gc7ejyciwomsLFMRXNFDbul4fXFLDwtdu8lXGGQpjLg=; b=sgvzIobwKyIB+z5uE9NiXm4XR5x0CKSn2WjSQ+2PGskBalGbNORBocDjtj1UJvVf5wJbkogL6RStkIT7v3KHanpRMz/HocaH9xiSQHQMpvCrBu0Oksr5HrARue9g3P1tjLsmHPFhWlOCRDpVUI+6k482tZSEEwRYx61JA8KlV2bF8ZSQosoMM27LOxE9v5JyyY3pXB7Jdp9DMT21mKm3tX3w/+Xf31Yh+pIv4vAomq+Y4CYehc+DBX6zEcjQAjWP6JY92hpZfluB2SrWEi3yiU4HJMwfhPCVGIIsTzs3mCQWWGs+zCq76G6TYvUOlBztdPVIXSDi5Utf4Jb+p/vmgQ== Received: from AM0P190CA0004.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:190::14) by AS4PR10MB5546.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:4cc::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.17; Mon, 4 Nov 2024 11:02:32 +0000 Received: from AM2PEPF0001C711.eurprd05.prod.outlook.com (2603:10a6:208:190:cafe::dc) by AM0P190CA0004.outlook.office365.com (2603:10a6:208:190::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.29 via Frontend Transport; Mon, 4 Nov 2024 11:02:32 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 52.169.0.179) smtp.mailfrom=stackit.cloud; dkim=pass (signature was verified) header.d=stackit.cloud;dmarc=pass action=none header.from=stackit.cloud; Received-SPF: Fail (protection.outlook.com: domain of stackit.cloud does not designate 52.169.0.179 as permitted sender) receiver=protection.outlook.com; client-ip=52.169.0.179; helo=eu2.smtp.exclaimer.net; Received: from eu2.smtp.exclaimer.net (52.169.0.179) by AM2PEPF0001C711.mail.protection.outlook.com (10.167.16.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.17 via Frontend Transport; Mon, 4 Nov 2024 11:02:30 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (104.47.17.111) by eu2.smtp.exclaimer.net (52.169.0.179) with Exclaimer Signature Manager ESMTP Proxy eu2.smtp.exclaimer.net (tlsversion=TLS12, tlscipher=TLS_DIFFIEHELLMAN_WITH_AES256_NONE); Mon, 4 Nov 2024 11:02:31 +0000 X-ExclaimerHostedSignatures-MessageProcessed: true X-ExclaimerProxyLatency: 30571337 X-ExclaimerImprintLatency: 3673227 X-ExclaimerImprintAction: b0e41880c87043139537d5bb20355808 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lRPCBRx3tqo0SWL2Qqcadv24+uTGPqw09fwuwwLpvMJnUBUvNcGML1h8fO24R1PpbxxDUtu/9SoA+y6GCZ4hs8kUOJsjBm0YQeyVfACsGZQ0FYjO1A/5Mvse8j06M5T9h5sErU2h0+nM17LQHeIQ2oLtzYiOUm4T06vQNNhtD93xKiIilVyDtNVL/cBq3shokf1zuo85WGqjV0kiFNcaKUNiN6IWT/kFGbnVZMHXfyOqnemg/3zolpXgaNnqtYKZtHZqbJozjsvhzQ57+lawrHexUT78oFLjRVLOPDgh8fTHWsC8O0H1dhgNbuAvumz1n1GSDV4IVWTLRyfxSGGJ/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=gc7ejyciwomsLFMRXNFDbul4fXFLDwtdu8lXGGQpjLg=; b=QRCDlz/a0UESwpDyV8u4c6eRVKYvWR1zvEXHPrQ5gSFEZkYBBSRorBJW0j/jVnYGf/wk6dLP+MYmSf5hxcOuhr+c1SHiGcs+orDLZtSnd/XBGmtVM9Lb/pXwH5Abx8SjopKDtn+C9E2f0GM5y9DVsC53iNt2F++cmeuZZej7xx1/cOFZ63IRDm++H5txB43qJxgCS365H8XbeZso615kyO4SKGTKv0bDAQr7MJV9u5vEIQcXc2EPruPMcyjn3OLPz95E0RJDQd6NBtvn3ZufSc3+tTaTMUONeBPT8ojIl1nUu5kw5Fu+l/iHrW/Pb3ZryVqZK2RHEE/w6ilTB+1HlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=stackit.cloud; dmarc=pass action=none header.from=stackit.cloud; dkim=pass header.d=stackit.cloud; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stackit.cloud; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gc7ejyciwomsLFMRXNFDbul4fXFLDwtdu8lXGGQpjLg=; b=sgvzIobwKyIB+z5uE9NiXm4XR5x0CKSn2WjSQ+2PGskBalGbNORBocDjtj1UJvVf5wJbkogL6RStkIT7v3KHanpRMz/HocaH9xiSQHQMpvCrBu0Oksr5HrARue9g3P1tjLsmHPFhWlOCRDpVUI+6k482tZSEEwRYx61JA8KlV2bF8ZSQosoMM27LOxE9v5JyyY3pXB7Jdp9DMT21mKm3tX3w/+Xf31Yh+pIv4vAomq+Y4CYehc+DBX6zEcjQAjWP6JY92hpZfluB2SrWEi3yiU4HJMwfhPCVGIIsTzs3mCQWWGs+zCq76G6TYvUOlBztdPVIXSDi5Utf4Jb+p/vmgQ== Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=stackit.cloud; Received: from PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:30d::9) by PAVPR10MB6861.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:321::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.15; Mon, 4 Nov 2024 11:02:26 +0000 Received: from PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM ([fe80::f00d:feeb:e45e:54f8]) by PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM ([fe80::f00d:feeb:e45e:54f8%7]) with mapi id 15.20.8137.013; Mon, 4 Nov 2024 11:02:26 +0000 Date: Mon, 4 Nov 2024 12:02:24 +0100 To: dev@openvswitch.org Message-ID: Mail-Followup-To: dev@openvswitch.org Content-Disposition: inline X-please-dont-add-a-signature: thanks X-ClientProxiedBy: FR3P281CA0107.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::17) To PAVPR10MB6914.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:30d::9) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PAVPR10MB6914:EE_|PAVPR10MB6861:EE_|AM2PEPF0001C711:EE_|AS4PR10MB5546:EE_ X-MS-Office365-Filtering-Correlation-Id: a9889359-250c-488b-218a-08dcfcc02dfb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info-Original: PKvrAY6paRFySxNAbi+pcIR3ZwyrhSBEjwr4IpqE2TfARXSK0r3hivHLsZshQ+F2QCGn1NFOWdj5dsJROKrl0kFLMnQ/zBdYCYkWoCDhZbr2PwfadacG6485Rcd1JrKlbLJB7+epci5fv5WvmzK16zZH0QfGKWFN5cdrIfOU1JbGKFP0hgCu9QDAVW5O8lPP5Fbje9YR8HsLJzVgPmC0y3/QPiF4xN7JqVjk9scfqtY+YLzYaE7JXf0mKorC4P4mZCz0ESyjxRYdBePnTayG6zRaaaowcQ+O4oqMsiogx2psqRlIcyaZnYQQ/a9oJoKQ+IWB88OHtlmoBzrvJzzfqbifL+sUROwg36PavPD0bNwzr1SsAoozPXAgYNTwSjI5fTAKgWzHKLVOu/bV723L8ioxOErCYXlDEH9Osvj9fTgyuZeGWsthfMnxQ/Q2AajsWfL1F3mrnBJaaSc7oDdBsceyoqtr/Z4EUApFNefQ+cX9g4bWxaspvyIfxioABS+v0lnrFz08368KyCzu1wNRTach9z55YnfznOmmNQ4zf+DQWl7ug8p1QTBEjrI5AjHLkwLv8K9A1yEeoaytIq6AmnVvxNlH3bS9U/lcevObQOoKqfXotsZ5B6CoDtb9irJVIfuWmO6DTTG87P8yri3HKnrFwUKkdGhX+Td2AXrmoXbuMP0yoaC9HjCRm6XHgbV/oqJS0yrHlMlySMzFlQgkfMJntEfPZvQ9qMFNYd48sJhT/efoMGcKcjw9FbTI+aKjNHw6oM6QgJSBphXvLrzl7mahUvwduj500aXi35RH4RT3FnvPhu7IK65eFt7H76eeJk8P+htGJloKX0W61GRhdDvFRptJwBirF+HKtjcmz/T5DdOsdkhN9DX89rUfWjfnwiHuDm2ahvvAsa5l4bBjj/bN8YRpW/bVim3pnKkZygdsouXzRD/9GHPfji2Wqn1Xro4Zbi9oAhyd565uIqVar+6UKzFdXDR3mQ3ow7R8oU/msO5FD46FYKo+oDZm5bXcqR1GNMSUZPE0Z1jk/KHcwklo7jAintBNsZjD2UFhP3YSCjbYVFflEzU1byEO2LKLDeYGAzq+AgRYq1qWKKdrfh5TfaU32AWzccR5JSG5lVGD7n/v4jw7bj+cbb4xFBvmnMyjuwOYtWGT6iTuIpW2Ir/khYljWaV6DtHxgb+2uI+1pRAKVUxDUxHpUv9HQefFZwxqgPB7DEeqnQ/SKozSG6b8aQGzLl3PEInRT6iQjlNFnNskUGBlXedLIiuEUfYH 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:(13230040)(366016)(376014)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR10MB6861 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM2PEPF0001C711.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: fd45403e-1e0d-43ce-9303-08dcfcc02b08 X-Microsoft-Antispam: BCL:0; ARA:13230040|14060799003|82310400026|36860700013|376014|35042699022|1800799024; X-Microsoft-Antispam-Message-Info: 79dKF+XnMYRCpC4C6gKvDTwEM5N/9uAi8W3uP1CNNkL1Ds+V1TNr8u/Iqz2rDQ0FnN5ofww2jU0pe4y4LZxccwGWzL/Foo3CZr0h2FsELDPxfKVayBGB/tdKAiLf8O7lZg1MV2MQFukLhEZdcSyAPpegEQth60nEVLC+XBG5mu26i5EjDXUSAcYRptTHla7pL9PS2S5B7K0AH11yW7P2rVnBt14v5iebsSlA/l2vmmHEIGK1JoaQCQbvJNf3bGnifggh0ugoAC/KkD4MU42pDUmb07ccrY3l8Tm1IkYTcO5OAit1nN2t1Knb3wFDz06OlvIhE6moWeTsWlI9uhbCyZpA2W0QfbE1iFEIlGen7PPZvjW3Rjw6ClAZe3ax/WuXemILFjFH6CVVTYLGcEtv3l9eSycDoEKajCZD6ZLF4O2sICmdFiSvtlg+crVQ5CdsKs+2xRiG4CpChsuooFJJBbt2VNqQ2DjRNX1YlWnNldCfOK1LRrSjA6u40W9EO7vyBZRJwEthURveQrtAdjjVXwwlY9sVG/ef3DMfkofZJloQL7BHDe1y3mSkXPWifZaYLS0Lxckg42ASPxsZOc17AOx4NCSNdydLzcwmiymixgqQ9fkiu/1g2oJyeIMQzXAJK2Yvke2tFMYq3NUq9TKb4WEEdYa2pRVnMXCX1ipcxpLhPm21Nx/C5KJ0u5UdNRD3yFrPH0ZwxHgNRX6l3SqUK4LmTzzRSj+4urEiDbk98Ae5ZLnQ2X0UnNfLvwwiyCOhw8DfobF7ED1oAdXhHwg/KM01mAn6l+Rn0PpIQ5W1uy+AdK0YstTN/szO66fF3dKXlBGN8IzJG7ynjS60y65D0NAGpfGA1pRDmZJE/gZQQxpwvNVCKl/TObw4qjSfWMGtmQpZDYXTYxd/sSJupU5NwTMGtEGBR0Qw3Ms4OcVPPz0H1r759my3FPF5F7cmo81I6JFS855tM56NwQrjh612K4kQzT8+rJpYnPoLpYetfmX28EHhOOVJ/LYp+kgnXJpl4x8r9ulJKNh79TvKNng3uPyuIh6+eibkZV64gxJsmFUk6b2v4+6CcN63OlEF9Oe8ee3kREXSiaO4gegTaFwS/yLXpVgM7MvbSc2+caxKzMQdJnEbnwzssvFxjwGDA08GAbcQwS60AzJzUyldSMrYkP1GsrHkUk5R3ltiXO10ql/w8XITSPkJuGfJZoJYx+tm5drswyHqpXCM5k4V2hTAunOZMann7/AfqCBE2Rrf6RrD5TLZfP1WlTHzmQNL56nWd+/Eozk5i9CJB2KfW88wFiOcAVgDU+0zbRyjccXlEK9JJfZjcWRqf/xP+ulC5f+GcQZpDQRQo8K2ZuaHNSMhkl2hpXuoWw2cA16qDyuY6hc= 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:(13230040)(14060799003)(82310400026)(36860700013)(376014)(35042699022)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: stackit.cloud X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2024 11:02:30.7620 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a9889359-250c-488b-218a-08dcfcc02dfb 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: AM2PEPF0001C711.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR10MB5546 Subject: [ovs-dev] [PATCH ovn v2 00/32] OVN Fabric integration X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.30 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" Hi everyone, this is the initial implementation of the discussion of the OVN Fabric integration: https://mail.openvswitch.org/pipermail/ovs-dev/2024-June/415033.html This patchset is extremely large and split into multiple parts. They are partially cross-dependent on each other which is why this is one big patchset instead of multiple small ones. The code is working in my testsetup, but especially the later patches are most probably not yet acceptable for inclusion in OVN. They lack testcases and documentation of the new features. I will continue improving their quality, but i wanted to send this out soonish so everyone can have a look. Larger changes v1->v2: * fixed a bunch of issues the ci uncovered * included 3 commits for incremental processing in their original changes * as the CI does not run with the custom ovs submodule i changed the order of part 3 and 4 to allow for a larger CI coverage Part 1 contains general refactoring for later steps. None of these patches should have any effect on the output of northd and ovn-controller. This is also why they do not touch any tests. The patches of this part are: * northd: Set southbound mac from lrp_networks. * northd: Fix relying on naming coincidences. * northd: Find outports based on ovn_port. * northd: Store outport of parsed_route. * northd: Split out join_logical_ports. * northd: Reorder join_logical_ports. * northd: Rename en_static_routes to en_routes. * northd: Move connected routes to route engine. Part 2 modifies existing features to better fit to the changes here. It has small impacts on functionality by allowing previously forbidden configurations or removing not necessary options. The patches of this part are: * northd: Autodiscover centralize_routing. * northd: Routing-protocol-redirect on crps. Part 3 includes the northd side for learning and advertising routes. For this we add a new sb-db table to contain routes in either direction. After these patches an external system could already use the new table to learn and advertise routes from/to OVN. The patches of this part are: * northd: Add route table to southbound and sync. * northd: Add filtering which routes to advertise. * northd: Handle learned routes. * northd: Remove learned routes if lrp is removed. * northd: Allow announcing individual host routes. * northd: Sync routing data to pb. Part 4 prepares the CI and our dependencies for the later patches. In the patchset submitted here it actually changes the URL of the ovs submodule to my fork. This is just for making the CI run and alowing everyone easier testing. It should actually be replaced by a pointer to the OVS repo with the following patchset included: https://mail.openvswitch.org/pipermail/ovs-dev/2024-October/417872.html The patches of this part are: * DO NOT APPLY: Use my ovs repo and bump. * ci: Manage host/system level dependencies. * system-ovn: Remove route without nexthop. Part 5 includes the ovn-controller features for learning and advertising routes. With these changes ovn-controller can read and modify the routing tables in linux VRFs or network namespaces. External tools (like frr) can then use these routing tables to communicate these routes to external systems. The patches of this part are: * controller: Introduce route node. * controller: Introduce route-exchange-netlink. * controller: Announce routes via route-exchange. * controller: Support learning routes. * controller: Prioritize host routes. * controller: Allow network namespaces for routes. * controller: Watch for route changes. * controller: Cleanup routes on stop. Part 6 introduces active-active LRPs. These LRPs allow the northbound database to just contain a single LRP for external connections which are then translated to many Port_Bindings on the southbound db. This allows for an easy integration of this whole featureset with existing CMS by keeping potential chassis-local configuration values outside of the northbound database. The patches of this part are: * controller: Publish ovn-active-active-mappings. * northd: Support active-active lrps. * northd: Support active-active bgp redirects. * controller: Allow filtering routes on ifindex. Part 7 optimizes ECMP routes across different chassis. This allows keeping traffic on a local chassis instead of sending it to other chassis just based on the ecmp hash. With the setups the features here encourage this will be more common than it is right now. The patches of this part are: * northd: ECMP prefer local routes if possible. Below i will try to point out how to use this patchset. However i probably missed something, sorry for that. * This change was tested on a setup using 4 nodes * cmp: running the OVN control plane and ovn-controller * gtw1, gtw2: running ovn-controller and connect to the control plane of cmp * bgp: outside of OVN, simulating a spine-leaf fabric * cmp, gtw1, gtw2 are on a shared network which they use for control and overlay traffic * setup the local ovsdbs with "system-id", "ovn-encap-ip" and all the other stuff generally needed * gtw1 has 2 point-to-point links to bgp * gtw2 has 1 point-to-point link to bgp Create the following northbound setup: ``` switch 6403cdcc-9354-40c3-801c-9eec666ceebf (public) port public-project-router type: router router-port: project-router-public port public-magic-router type: router router-port: magic-router-public switch 473d1998-2ded-410c-b42e-286dd22cf758 (intern) port intern-project-router type: router router-port: project-router-intern port intern-port1 addresses: ["ca:b7:23:93:fd:3f 192.168.0.2"] switch e45213e9-3312-48ad-ba27-0568f11f6939 (public-for-real-1) port public-for-real-1-magic-router type: router router-port: magic-router-public-for-real-1 port physnet type: localnet addresses: ["unknown"] port bgp-port router 2db59849-45e3-40e7-9ace-b6179ace2cb5 (magic-router) port magic-router-public mac: "00:00:00:00:fe:01" ipv6-lla: "fe80::200:ff:fe00:fe01" networks: ["1.0.0.1/24"] port magic-router-public-for-real-1 mac: "active-active" ipv6-lla: "fe80::200:ff:fe00:0" networks: ["active-active"] router ffa39f2d-6def-413b-953a-4c2ee5f671fe (project-router) port project-router-public mac: "00:00:00:00:ff:02" ipv6-lla: "fe80::200:ff:fe00:ff02" networks: ["1.0.0.100/24"] port project-router-intern mac: "00:00:00:00:ff:01" ipv6-lla: "fe80::200:ff:fe00:ff01" networks: ["192.168.0.1/24"] nat d924de49-67c0-4b2d-b2cc-dc362f43984d external ip: "1.0.0.150" logical ip: "192.168.0.2" type: "dnat_and_snat" ``` * On "project-router-public" set a ha_chassis_group pointing to gtw1 and gtw2 with different prios * ensure that "intern-port1" is bound on "cmp" and that you have a interface somewhere responding to pings Ensure the following options are set on the LRPs "magic-router-public" and "magic-router-public-for-real-1": ``` root@ovn-cmp:~# ovn-nbctl list Logical_Router_Port magic-router-public-for-real-1 _uuid : de032fe6-5af5-4cbd-85ac-1d19ffc7c8b1 dhcp_relay : [] enabled : [] external_ids : {} gateway_chassis : [] ha_chassis_group : 7f808d4b-af12-4291-b249-2b83d248574c ipv6_prefix : [] ipv6_ra_configs : {} mac : active-active name : magic-router-public-for-real-1 networks : [active-active] options : {active-active-lrp="true", bgp-mirror=bgp-port, routing-protocol-redirect=bgp-port, routing-protocols="BGP,BFD", use-netns="true"} peer : [] status : {hosting-chassis=ovn-gtw1} root@ovn-cmp:~# ovn-nbctl list Logical_Router_Port magic-router-public _uuid : 7b3884aa-cde8-4994-ac8c-9f4ed154e4a9 dhcp_relay : [] enabled : [] external_ids : {} gateway_chassis : [] ha_chassis_group : [] ipv6_prefix : [] ipv6_ra_configs : {} mac : "00:00:00:00:fe:01" name : magic-router-public networks : ["1.0.0.1/24"] options : {dynamic-routing-connected="true", dynamic-routing-connected-as-host-routes="true", dynamic-routing-static="true"} peer : [] status : {} ``` * The ha-chassis-group of "magic-router-public-for-real-1" should also point to gtw1 and gtw2, priorities are irrelevant here * Set the option:dynamic-routing=true on the magic-router LR Run on gtw1 and gtw2: ``` ovs-vsctl set Open . external_ids:ovn-bridge-mappings="phys:physnet" ovs-vsctl add-br physnet ovs-vsctl add-port physnet ``` * Get the datapath id of the magic-router LR (i assume 4 below) * On gtw1 and gtw2 create a netns named "ovnns${datapathid}" * On gtw1 and gtw2 create ports on br-int for the bgp connections * On gtw1: "bgp-port-gtw1-0" and "bgp-port-gtw1-1" * On gtw2: "bgp-port-gtw2-0" * Create a veth pair on the linux side matching to these ports and move the other end to the ovnns netns * For the veth ends in the netns get the interface index (the number before the colon in "ip a") * For the settings below i expect that the corresponding veth ports are numbered as follows: * matching to "bgp-port-gtw1-0": 14 * matching to "bgp-port-gtw1-1": 29 * matching to "bgp-port-gtw2-0": 19 * Set the following via "ovs-vsctl set Open . external_ids:ovn-active-active-mappings=" * on gtw1: "phys;00:fe:fe:fe:fe:01,172.16.0.10/25,14;00:fe:fe:fe:fe:33,172.20.0.10/25,29" * on gtw2: "phys;00:fe:fe:fe:fe:11,172.16.0.139/25,19" * Set the mac and ip address of the bgp ports correctly: * matching to "bgp-port-gtw1-0": 00:fe:fe:fe:fe:01 172.16.0.10/25 * matching to "bgp-port-gtw1-1": 14;00:fe:fe:fe:fe:33 172.20.0.10/25 * matching to "bgp-port-gtw2-0": 00:fe:fe:fe:fe:11 172.16.0.139/25 * Spawn frr on gtw1 and gtw2 * zebra needs to be started with "-n" as option Configuration on gtw1: ``` frr version 8.4.4 frr defaults traditional hostname gtw1 log syslog informational no ip forwarding no ipv6 forwarding service integrated-vtysh-config ! vrf ovnns4 netns /run/netns/ovnns4 exit-vrf ! router bgp 65000 vrf ovnns4 bgp router-id 172.16.0.10 no bgp hard-administrative-reset no bgp graceful-restart notification neighbor 172.16.0.1 remote-as 64512 neighbor 172.16.0.1 bfd neighbor 172.20.0.1 remote-as 64512 neighbor 172.20.0.1 bfd ! address-family ipv4 unicast redistribute kernel redistribute connected redistribute static neighbor 172.16.0.1 soft-reconfiguration inbound neighbor 172.16.0.1 route-map ALLOW-ALL in neighbor 172.16.0.1 route-map ALLOW-ALL out neighbor 172.20.0.1 soft-reconfiguration inbound neighbor 172.20.0.1 route-map ALLOW-ALL in neighbor 172.20.0.1 route-map ALLOW-ALL out exit-address-family exit ! route-map ALLOW-ALL permit 100 exit ! ``` And for gtw2: ``` frr version 8.4.4 frr defaults traditional hostname gtw2 log syslog informational no ip forwarding no ipv6 forwarding service integrated-vtysh-config ! vrf ovnns4 netns /run/netns/ovnns4 exit-vrf ! router bgp 65000 vrf ovnns4 bgp router-id 172.16.0.139 no bgp hard-administrative-reset no bgp graceful-restart notification neighbor 172.16.0.129 remote-as 64512 neighbor 172.16.0.129 bfd ! address-family ipv4 unicast redistribute kernel redistribute connected redistribute static neighbor 172.16.0.129 soft-reconfiguration inbound neighbor 172.16.0.129 route-map ALLOW-ALL in neighbor 172.16.0.129 route-map ALLOW-ALL out exit-address-family exit ! route-map ALLOW-ALL permit 100 exit ! ``` * Now configure the bgp node * Setup some network local to the node that you want to announce to OVN and that is not overlapping with anything * setup the 3 point to point links with the matching ip addresses * 172.16.0.1/25 * 172.16.0.129/25 * 172.20.0.1/25 * Configure frr for peering with: * 172.16.0.10 * 172.16.0.139 * 172.20.0.10 If all goes well you should now learn routes to: * 1.0.0.1/32 * 1.0.0.100/32 * 1.0.0.150/32 pings to 1.0.0.150 should now work and end at cmp at "intern-port1". depending on how you prioritized the ha_chassis_group for "project-router-public" you will receive different router preferences from gtw1 and gtw2. If you change the priority order the route preferences should also change. If you shut down any of the bgp peerings you should see the ping replies no longer taking that path. To debug which routes should be advertised or have been learned look at "ovn-sbctl list Route" If you now add port ports/routers to the LS "public" they should get announced automatically. Thanks for sticking through and i hope this was helpful and this not generate more confusion. All of this will hopefully become part of the documentation as i further work on the patches. Felix Huettner (31): northd: Set southbound mac from lrp_networks. northd: Fix relying on naming coincidences. northd: Find outports based on ovn_port. northd: Store outport of parsed_route. northd: Split out join_logical_ports. northd: Reorder join_logical_ports. northd: Rename en_static_routes to en_routes. northd: Move connected routes to route engine. northd: Autodiscover centralize_routing. northd: Routing-protocol-redirect on crps. northd: Add route table to southbound and sync. northd: Add filtering which routes to advertise. northd: Handle learned routes. northd: Remove learned routes if lrp is removed. northd: Allow announcing individual host routes. northd: Sync routing data to pb. DO NOT APPLY: Use my ovs repo and bump. system-ovn: Remove route without nexthop. controller: Introduce route node. controller: Introduce route-exchange-netlink. controller: Announce routes via route-exchange. controller: Support learning routes. controller: Prioritize host routes. controller: Allow network namespaces for routes. controller: Watch for route changes. controller: Cleanup routes on stop. controller: Publish ovn-active-active-mappings. northd: Support active-active lrps. northd: Support active-active bgp redirects. controller: Allow filtering routes on ifindex. northd: ECMP prefer local routes if possible. Frode Nordahl (1): ci: Manage host/system level dependencies. .github/workflows/test.yml | 5 + .gitmodules | 3 +- configure.ac | 2 + controller/automake.mk | 18 +- controller/chassis.c | 22 + controller/ovn-controller.c | 274 ++++- controller/route-exchange-netlink.c | 360 +++++++ controller/route-exchange-netlink.h | 60 ++ controller/route-exchange-stub.c | 36 + controller/route-exchange.c | 323 ++++++ controller/route-exchange.h | 38 + controller/route-table-notify-stub.c | 37 + controller/route-table-notify.c | 154 +++ controller/route-table-notify.h | 43 + controller/route.c | 226 ++++ controller/route.h | 76 ++ ic/ovn-ic.c | 21 - lib/automake.mk | 2 + lib/lrp-index.c | 43 + lib/lrp-index.h | 25 + lib/ovn-util.c | 143 +++ lib/ovn-util.h | 29 + lib/stopwatch-names.h | 1 + m4/ovn.m4 | 25 + northd/automake.mk | 2 + northd/en-lflow.c | 11 +- northd/en-northd.c | 40 +- northd/en-northd.h | 8 +- northd/en-routes-sync.c | 516 ++++++++++ northd/en-routes-sync.h | 44 + northd/inc-proc-northd.c | 32 +- northd/northd.c | 1413 ++++++++++++++++++-------- northd/northd.h | 82 +- ovn-nb.xml | 5 + ovn-sb.ovsschema | 19 +- ovn-sb.xml | 74 ++ ovs | 2 +- tests/automake.mk | 6 + tests/ovn-northd.at | 96 +- tests/system-common-macros.at | 12 + tests/system-ovn.at | 1 + 41 files changed, 3782 insertions(+), 547 deletions(-) create mode 100644 controller/route-exchange-netlink.c create mode 100644 controller/route-exchange-netlink.h create mode 100644 controller/route-exchange-stub.c create mode 100644 controller/route-exchange.c create mode 100644 controller/route-exchange.h create mode 100644 controller/route-table-notify-stub.c create mode 100644 controller/route-table-notify.c create mode 100644 controller/route-table-notify.h create mode 100644 controller/route.c create mode 100644 controller/route.h create mode 100644 lib/lrp-index.c create mode 100644 lib/lrp-index.h create mode 100644 northd/en-routes-sync.c create mode 100644 northd/en-routes-sync.h base-commit: 12886fb5399c44d9ef40381cd4ac562dab0fdeba