From patchwork Tue Aug 20 13:40:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Lamprecht X-Patchwork-Id: 1974435 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=GLUid+Bh; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::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 4Wp9b03Bjmz1yYZ for ; Tue, 20 Aug 2024 23:40:44 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id E61BA40626; Tue, 20 Aug 2024 13:40:42 +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 Jmwsq7Tau6wt; Tue, 20 Aug 2024 13:40:41 +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 3D05E401A1 Authentication-Results: smtp4.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=GLUid+Bh Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id 3D05E401A1; Tue, 20 Aug 2024 13:40:41 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 04378C1029; Tue, 20 Aug 2024 13:40:41 +0000 (UTC) X-Original-To: ovs-dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) by lists.linuxfoundation.org (Postfix) with ESMTP id DC67CC087F for ; Tue, 20 Aug 2024 13:40:39 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id BD79980DC9 for ; Tue, 20 Aug 2024 13:40:39 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id JeZqEMpFWSjR for ; Tue, 20 Aug 2024 13:40:38 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2a01:111:f403:260c::611; helo=eur03-vi1-obe.outbound.protection.outlook.com; envelope-from=max.lamprecht@mail.schwarz; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp1.osuosl.org EC8E080DC7 Authentication-Results: smtp1.osuosl.org; dmarc=pass (p=reject dis=none) header.from=mail.schwarz DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org EC8E080DC7 Authentication-Results: smtp1.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=GLUid+Bh Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03on20611.outbound.protection.outlook.com [IPv6:2a01:111:f403:260c::611]) by smtp1.osuosl.org (Postfix) with ESMTPS id EC8E080DC7 for ; Tue, 20 Aug 2024 13:40:37 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ev2qVsgzXrUJ50lmwaUBGgDQeDMb81Dj2DGdZQiOFrOKjiQx21Cs1ROZWIm02wcfBsjz3A6dVOfMBUY2QTV+S0VDHLA9MiXmBTERFty+RCB0ehFhLWgNND/dYPg1fjXP9i+zZqBI1sPwp1XsHaoq131lXUxsW/SXG9U/JeSql+tEgZDD/x/Cs/pXwg6ttnctns19kg8dWPqENbLHUpyKh7RsxSMyAGbPUHrrT1kOA/CwpJx8mRKuSwq6QxK5gAIc3lwAYA+YBs9OXvR2vHciGDZmMKEn6nSLopYAlxqi2Gr1qAWI52+jrI4jy3WUd9OvA8cz+4ZsW67/Yw/8lLK+8w== 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=jraOVSUjrwd8+v38ASoMVcNlq/v8pLm/hcAfuq+YoiU=; b=h+bhp9D5/4zucRdu9qVSU41qKCUYGXnynGPOQAT94iNQ2Q86FRFnY/2S1aUM2G14rIEEqn5uU8/UZUQ/cPYRYKSUH/Lze9dtyelLGTcT32PQis2gUfFsQUg/bjCPni1u3nLjHmB34C1qOhIB79+fNMBJK74gM17Um6POV7iVs9sK09UrNS4Q4yXiYoba0hyRFa4KQKFBEuQiW8ZE5CToIjVUMigANdOX8PbZxRsC9PHv2ZTGs44GrGKCkhk8miM9KpzUxDdnN5MmhCmkwJ6ime94ARY/NhUCId4bMlteKY+V3jcWMDp4uYMxjFWCfmrOvQng9Aw8KonfdF2KAWt+LQ== ARC-Authentication-Results: i=1; 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=none (message not signed); arc=none (0) 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=jraOVSUjrwd8+v38ASoMVcNlq/v8pLm/hcAfuq+YoiU=; b=GLUid+BhY3kPL4mjRgjl3Uab/7h53j3eJMj3zzwgRQQNEfighqeGQmi0D2zFQc/ZsEgaralsNxlcAnrquJSkzloxBTNrqik3Rjy8VOKxQ+aHqQ6xjDhksLM92dxZe83Ypvkn0A9WBSvYxeBF8ceU8F8uow0ZtTiFlyuOfwgX+KhmpM5+yG/RRrShDMszpbqvemsk5pReQu4EoDbzqUKj4pJ7tRU3bNM6V7t+79uoaIMzz0SmYdHvJB/OHtjzVnpM2uocm4FaZET9z+Q0djtBf/jhLGsro3Mi+KQh9ph3mI9Dc+R8ssCH1vwfHdmPtEovNJz2d3FgL1z13ZrJQHyr7g== Received: from DU6P191CA0002.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:540::19) by DB9PR10MB5666.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:30e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.21; Tue, 20 Aug 2024 13:40:34 +0000 Received: from DB1PEPF000509FC.eurprd03.prod.outlook.com (2603:10a6:10:540:cafe::17) by DU6P191CA0002.outlook.office365.com (2603:10a6:10:540::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.25 via Frontend Transport; Tue, 20 Aug 2024 13:40:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 52.169.0.179) smtp.mailfrom=mail.schwarz; dkim=none (message not signed) header.d=none;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 DB1PEPF000509FC.mail.protection.outlook.com (10.167.242.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7897.11 via Frontend Transport; Tue, 20 Aug 2024 13:40:33 +0000 Received: from EUR02-AM0-obe.outbound.protection.outlook.com (104.47.11.236) 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); Tue, 20 Aug 2024 13:40:34 +0000 X-ExclaimerHostedSignatures-MessageProcessed: true X-ExclaimerProxyLatency: 9795302 X-ExclaimerImprintLatency: 6562143 X-ExclaimerImprintAction: 93d9988173e74e17a795c6177512bd11 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mail.schwarz; Received: from AS8PR10MB7449.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:5a9::15) by AM7PR10MB3811.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:175::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.21; Tue, 20 Aug 2024 13:40:32 +0000 Received: from AS8PR10MB7449.EURPRD10.PROD.OUTLOOK.COM ([fe80::b3a9:d349:6f3:7b27]) by AS8PR10MB7449.EURPRD10.PROD.OUTLOOK.COM ([fe80::b3a9:d349:6f3:7b27%6]) with mapi id 15.20.7875.023; Tue, 20 Aug 2024 13:40:31 +0000 Date: Tue, 20 Aug 2024 15:40:29 +0200 To: ovs-dev@openvswitch.org Message-ID: X-ClientProxiedBy: FR2P281CA0073.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9a::15) To AS8PR10MB7449.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:5a9::15) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR10MB7449:EE_|AM7PR10MB3811:EE_|DB1PEPF000509FC:EE_|DB9PR10MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: 36a3034b-6243-4a04-a376-08dcc11daab2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: GdOKGdrLl1K1f+45hNgdzR9EsxlEqlCSN21e8V9f81875fixE6CGcWMVUS4PtJEuUNBS2mH1hCdTLGYdZ1ho971vawEi5cxAJN9L6E385ePNo+icCNqwJ7jtt2HfAo3Kg4xg3G8354oaRhgi+iNSR3IQ9zB2+Wg7KeKJ/+gK2VFTI04eHNJDOoGV9drS0Ka5g07iXvlnxt+HHfqwaUzjXAJQ/ARbhEsBN7QZBU8t4UOQgDMnOjHMjgrRoMhKIhFce+gbQoDxtEOU1Nw2mOdAWgv0r2RkgdgNmJhfr6PuCnjGJdczoOXiOz2lAOjCG5sx+L2LRa10JYwhpau7gFumydIq2T7lPGe3z0EoPlQDY+wVLKx0ppwUdgNUfJwYzwI2jpYf2IA+NgV/bPGUd3Whvg+4a/6yilVcmkDlf8RngpbA95bj/Vkv28A7YUr476Cy1gLVoDdXw4YvCAsA3FaA8uI3KJVxWX1FnBEyjqGTrb+RhZgjQk/r26ejpyUnIjmZO/8U498dchUWEdvhE12+Bn8GUBIBFKLgqdCzHyKfHxTB8/t2hwN/RZUcCHiMx1LtGaLBDfpYeBdSfgmEopSdRgCQIx9mwL+o4VHIWoOscAcxmtO0TMiUWNSBvFCc5qlYmbAd77kGKFyUDmv4mJrOmlrjCgDPOMqkgVl/L8SK26EjMEGyGkpRYC3xi0P7Q212lGRdr+jsShlo7uvHswh2e4REGxFxrGoL9IErvFehm4PBeXDQqVUay0wrmKgNSg2wJr9iXuZRNi4VAo3iFtWvKy7DapRlynnOZX4NKxpYBzBXMFqcse+dNj3qx5/p92znKbUhwg7BNlwG63shvry7mWmNH/a7ubZ6Zvy8EKQXe3vV/Dpwg1NUOQkF/GQ7BKJ5hDU1zxfLwiOtWElAkrEu7IZwd69sTTwyfhptqNaYWcBRkDE8h+LQGBUHgr7x4ib5wVv9T6bW0TskUOy+z2Hdu5uvwVyQPyVcXVVpekfx19g857GH6NoH047gJEHkm6jGhF5Wf7e8cBxDaB3kn7Jp/0rW5bLjCUui3wDY8SPuNIZA3juY2uoK/jV083d6dWImHkpMdp7/ocxGiobW8hiHQDts+8qfW4D/jkPqjop7ujKBLUK5SN6FrxFNuMT/PgnLayF/0rKvfavh/h0NuZdxPytjT5bfB7d/7QgaJQbaqyq0Nie/AreNqnyOkW6YihzWiRGDFP4BZOD+4RRQM1vtjpfWJ7g24oYhTqcllrMkrIzEfWZjF827SGC4Ul7t/tZ8ThC46ZIiwDIXURa8lgyEl5Nf7QTdppjbThba1X/97NzUwG2PgGRHcYuD+p7yYLBrd2Gi4AH+Jtv2LwZEBexBHw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR10MB7449.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR10MB3811 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509FC.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4a5d4d39-4178-4a88-115d-08dcc11da94a X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|35042699022|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?IglXIRReiZHlJAzyY7ONuK69/Zr8wGb?= =?utf-8?q?Qq6+nFJYLjkr7w/p245rlI4qKm3PJ4ODBn5OGdfCyesIEDkmiA8FUobv+rXqypRWE?= =?utf-8?q?ZakhFR1p0X8kShqD+t8RcYUKyM3PguJYBo6rA6hJwtsf3Kbh31hNrH/pl/+YZMMXD?= =?utf-8?q?AF3H0OA+PSN8uodmTZ9IyMbu3JE/YYylFKlbUmhNdKOg5hFyGoqgD3GaCT7E13ot7?= =?utf-8?q?CnHqIFMKgv2rlYM8Ey2yO/NUQcYnVbD4DZ+QqWdCFTZUZQOJT/Y+FMRgJIc4HWgrm?= =?utf-8?q?6jM36utk5+YzXy4VLsfgHTVKQOzHwksLILcLc4vg0X7Q+auMko2XeNbUn44FKosIu?= =?utf-8?q?/pEOhEFYHNEK1vbBnELhjD7clISOq5yRTHNWxUy3z+8kriz5tMndpd9PjvA1TTr3D?= =?utf-8?q?19zvbQ8B16srsrxS25Xr863KV0JBHtM9LEjtd1NhIqWBQv4MiSxhOmdC2648oPQ3r?= =?utf-8?q?sAQDUOsZI053F3o4NwFjHlmWZQ+09IfdiCsANyDRpLUxPxd0GiJwdC6c0UWAmbFn2?= =?utf-8?q?PJoHF5CeKcsmkJBGX7IH4eA6wsTRa8NcR50OtI0CW1N8RjhV/7weibE3ASJDZouWE?= =?utf-8?q?IPgYa6H4sCqjevQyxdAm0UIZQMZT0UFxo+4wS7Yh1D3trz2l35VfZxkiiOOkXuaFD?= =?utf-8?q?tGtpGKFO7bYhtctQwyRqU33Lz0nZlAYZB/qtpjtc/Ef/APvMRPm+mr9yUzkDJ0rHr?= =?utf-8?q?c13XnuasTuTDJ5JBohutxLONrhOdN+Dc9SA2WoZTjb6PeWrg1gUBsmKPSHzrVQlRs?= =?utf-8?q?zzOvVx95GqrxUrNZBr+4GtTtVBpU9LRdyGBS8ZDnaS9P1utDXc3Y/joXOzAbzYKIo?= =?utf-8?q?19svI9ejQ4k0t+Cpiphtmmh0G77ik0UwJfJ2Y6VVJ+r5VAM20aclV/ndokXWZUeDh?= =?utf-8?q?iRKFNLbix2oE1Mr2UXzvqMdU+LixmZTovdPTC05n4w5p7x/9M/fVsLbsmeOhBw8b9?= =?utf-8?q?ycNMHl6lu+UXakcuZAlva3WFf4CkIqyGn+vzcLBDHRieOpGxJrFmxO2XN+bPQ+yT7?= =?utf-8?q?weJoGyAKZF/jHcvn3TtzLZAmYZx1egsq5sMY4ZlUEf69s1UfaHN+YRP51f8dSSthU?= =?utf-8?q?urZ4Fgc1Lc8CDxNWIKwBezJkkMKBh0JBrNBfCZLp2DlXrzYadWWHjzKf1uvdMLcH9?= =?utf-8?q?pqQSPqyhe05X8m1+1nPYbpOvKv9mFqo2+HmCmPQk5UYNpChh6qICXxmrsLhWRdLYw?= =?utf-8?q?CSZ70i9ENp7ENyHAKmlb7Gynnzg4/bk8hIswdh6t+PLH5XDLQme8mqTlwtUxCfH7L?= =?utf-8?q?IclRG+vwfm1jKZbe23OXfuRF3IClThHH3cJDG8vPcmkRPar/U+IhWW45hkqPwbDye?= =?utf-8?q?1vW9afng3GRU?= 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)(82310400026)(36860700013)(1800799024)(35042699022)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: mail.schwarz X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Aug 2024 13:40:33.5095 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 36a3034b-6243-4a04-a376-08dcc11daab2 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: DB1PEPF000509FC.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR10MB5666 Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.30 Subject: [ovs-dev] [PATCH ovn] controller: Add bfd_chassis engine 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: Max Lamprecht via dev From: Max Lamprecht Reply-To: Max Lamprecht Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" This adds a new engine node "bfd_chassis" which handles changes on the Sb_ha_chassis_group table. This improves heavily performance at scale. Without that patch we are permanently reconciling bfd_run and the ovn-controller is capped at 100% cpu usage. Especially on gateway chassis. 3000 HA_Chassis_Group (many ref_chassis) 1500 Chassis performance trace: - 98.86% main - 89.55% bfd_run - 89.23% bfd_calculate_chassis - 28.07% sset_add__ - 27.86% sset_add - 18.20% smap_get_bool - 13.58% sset_destroy Signed-off-by: Max Lamprecht Co-authored-by: Ihtisham ul Haq Signed-off-by: Ihtisham ul Haq Co-authored-by: Maxim Korezkij Signed-off-by: Maxim Korezkij --- controller/bfd.c | 4 ++- controller/ovn-controller.c | 66 +++++++++++++++++++++++++++++++++---- 2 files changed, 62 insertions(+), 8 deletions(-) diff --git a/controller/bfd.c b/controller/bfd.c index 22a8c6695..c91fa0b13 100644 --- a/controller/bfd.c +++ b/controller/bfd.c @@ -154,7 +154,9 @@ bfd_calculate_chassis( if (smap_get_bool(&ref_ch->other_config, "is-remote", false)) { continue; } - sset_add(&grp_chassis, ref_ch->name); + /* we have bfd_setup_required == true anyway, so we skip adding + * it to an sset that we later move to another sset again. */ + sset_add(bfd_chassis, ref_ch->name); } } else { /* This is not an HA chassis. Check if this chassis is present diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c index 854d80bdf..9fc5f4a0f 100644 --- a/controller/ovn-controller.c +++ b/controller/ovn-controller.c @@ -841,6 +841,7 @@ ctrl_register_ovs_idl(struct ovsdb_idl *ovs_idl) #define SB_NODES \ SB_NODE(sb_global, "sb_global") \ SB_NODE(chassis, "chassis") \ + SB_NODE(ha_chassis_group, "ha_chassis_group") \ SB_NODE(encap, "encap") \ SB_NODE(address_set, "address_set") \ SB_NODE(port_group, "port_group") \ @@ -3290,6 +3291,56 @@ en_mac_cache_cleanup(void *data) hmap_destroy(&cache_data->fdbs); } +static void * +en_bfd_chassis_init(struct engine_node *node OVS_UNUSED, + struct engine_arg *arg OVS_UNUSED) +{ + return NULL; +} + +static void +en_bfd_chassis_run(struct engine_node *node, void *data OVS_UNUSED) +{ + + + const struct ovsrec_open_vswitch_table *ovs_table = + EN_OVSDB_GET(engine_get_input("OVS_open_vswitch", node)); + + + const struct ovsrec_bridge_table *bridge_table = + EN_OVSDB_GET(engine_get_input("OVS_bridge", node)); + const struct ovsrec_bridge *br_int = get_br_int(bridge_table, ovs_table); + const char *chassis_id = get_ovs_chassis_id(ovs_table); + const struct sbrec_ha_chassis_group_table *ha_chassis_grp_table = + EN_OVSDB_GET(engine_get_input("SB_ha_chassis_group", node)); + + + + struct ovsdb_idl_index *sbrec_chassis_by_name = + engine_ovsdb_node_get_index( + engine_get_input("SB_chassis", node), + "name"); + const struct sbrec_chassis *chassis + = chassis_lookup_by_name(sbrec_chassis_by_name, chassis_id); + ovs_assert(chassis); + const struct sbrec_sb_global_table *sb_global_table = + EN_OVSDB_GET(engine_get_input("SB_sb_global", node)); + + const struct ovsrec_interface_table *iface_table = + EN_OVSDB_GET(engine_get_input("OVS_interface", node)); + stopwatch_start(BFD_RUN_STOPWATCH_NAME, time_msec()); + bfd_run(iface_table, + br_int, chassis, + ha_chassis_grp_table, + sb_global_table); + stopwatch_stop(BFD_RUN_STOPWATCH_NAME, time_msec()); + + engine_set_node_state(node, EN_UPDATED); +} + +static void +en_bfd_chassis_cleanup(void *data OVS_UNUSED){} + /* Engine node which is used to handle the Non VIF data like * - OVS patch ports * - Tunnel ports and the related chassis information. @@ -5025,6 +5076,7 @@ main(int argc, char *argv[]) ENGINE_NODE(if_status_mgr, "if_status_mgr"); ENGINE_NODE_WITH_CLEAR_TRACK_DATA(lb_data, "lb_data"); ENGINE_NODE(mac_cache, "mac_cache"); + ENGINE_NODE(bfd_chassis, "bfd_chassis"); #define SB_NODE(NAME, NAME_STR) ENGINE_NODE_SB(NAME, NAME_STR); SB_NODES @@ -5064,6 +5116,12 @@ main(int argc, char *argv[]) engine_add_input(&en_if_status_mgr, &en_ovs_interface, if_status_mgr_ovs_interface_handler); + engine_add_input(&en_bfd_chassis, &en_ovs_open_vswitch, NULL); + engine_add_input(&en_bfd_chassis, &en_ovs_bridge, NULL); + engine_add_input(&en_bfd_chassis, &en_ovs_interface, engine_noop_handler); + engine_add_input(&en_bfd_chassis, &en_sb_sb_global, NULL); + engine_add_input(&en_bfd_chassis, &en_sb_chassis, engine_noop_handler); + engine_add_input(&en_bfd_chassis, &en_sb_ha_chassis_group, NULL); /* Note: The order of inputs is important, all OVS interface changes must * be handled before any ct_zone changes. @@ -5221,6 +5279,7 @@ main(int argc, char *argv[]) controller_output_pflow_output_handler); engine_add_input(&en_controller_output, &en_mac_cache, controller_output_mac_cache_handler); + engine_add_input(&en_controller_output, &en_bfd_chassis, NULL); struct engine_arg engine_arg = { .sb_idl = ovnsb_idl_loop.idl, @@ -5580,13 +5639,6 @@ main(int argc, char *argv[]) stopwatch_stop(CT_ZONE_COMMIT_STOPWATCH_NAME, time_msec()); } - stopwatch_start(BFD_RUN_STOPWATCH_NAME, time_msec()); - bfd_run(ovsrec_interface_table_get(ovs_idl_loop.idl), - br_int, chassis, - sbrec_ha_chassis_group_table_get( - ovnsb_idl_loop.idl), - sbrec_sb_global_table_get(ovnsb_idl_loop.idl)); - stopwatch_stop(BFD_RUN_STOPWATCH_NAME, time_msec()); } runtime_data = engine_get_data(&en_runtime_data);