From patchwork Tue Sep 7 22:45:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 1525568 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H40jR1YWxz9t1Q for ; Wed, 8 Sep 2021 08:45:47 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 5E6016084D; Tue, 7 Sep 2021 22:45:38 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5WcpNvJrlgQN; Tue, 7 Sep 2021 22:45:37 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id 88E3B607A6; Tue, 7 Sep 2021 22:45:36 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id BDFDBC0020; Tue, 7 Sep 2021 22:45:34 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 64787C000D for ; Tue, 7 Sep 2021 22:45:33 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 0551B40104 for ; Tue, 7 Sep 2021 22:45:32 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nnDr-yHxSx25 for ; Tue, 7 Sep 2021 22:45:31 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by smtp2.osuosl.org (Postfix) with ESMTPS id CB3FC402B5 for ; Tue, 7 Sep 2021 22:45:30 +0000 (UTC) Received: (Authenticated sender: blp@ovn.org) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 714501BF205; Tue, 7 Sep 2021 22:45:28 +0000 (UTC) From: Ben Pfaff To: dev@openvswitch.org Date: Tue, 7 Sep 2021 15:45:08 -0700 Message-Id: <20210907224516.489604-3-blp@ovn.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210907224516.489604-1-blp@ovn.org> References: <20210907224516.489604-1-blp@ovn.org> MIME-Version: 1.0 Cc: Ben Pfaff Subject: [ovs-dev] [PATCH ovn v2 02/10] ovn-northd-ddlog: Make joins for ARP/ND flows slightly more efficient. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" DDlog can index equality joins within a expression like this, but not conditional expression that follow such an expression. This doesn't actually matter much in this case because ordinarily the expression will be true (most router ports are enabled). Signed-off-by: Ben Pfaff --- northd/lrouter.dl | 6 ++++-- northd/ovn_northd.dl | 16 +++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/northd/lrouter.dl b/northd/lrouter.dl index cc3dced5f..b6e752f7c 100644 --- a/northd/lrouter.dl +++ b/northd/lrouter.dl @@ -596,7 +596,8 @@ typedef RouterPort = RouterPort { peer: RouterPeer, mcast_cfg: Intern, sb_options: Map, - has_bfd: bool + has_bfd: bool, + enabled: bool } relation RouterPort[Intern] @@ -610,7 +611,8 @@ RouterPort[RouterPort{ .peer = peer, .mcast_cfg = mcast_cfg, .sb_options = sb_options, - .has_bfd = has_bfd + .has_bfd = has_bfd, + .enabled = lrp.is_enabled() }.intern()] :- lrp in &nb::Logical_Router_Port(), Some{var networks} = extract_lrp_networks(lrp.mac.ival(), lrp.networks.map(ival)), diff --git a/northd/ovn_northd.dl b/northd/ovn_northd.dl index 4402b17d2..c41a79b84 100644 --- a/northd/ovn_northd.dl +++ b/northd/ovn_northd.dl @@ -4609,8 +4609,7 @@ relation &SwitchPortARPForwards( .reachable_ips_v6 = reachable_ips_v6, .unreachable_ips_v4 = unreachable_ips_v4, .unreachable_ips_v6 = unreachable_ips_v6) :- - port in &SwitchPort(.peer = Some{rp}), - rp.is_enabled(), + port in &SwitchPort(.peer = Some{rp@&RouterPort{.enabled = true}}), (var reachable_ips_v4, var reachable_ips_v6, var unreachable_ips_v4, var unreachable_ips_v6) = get_arp_forward_ips(rp). /* Packets received from VXLAN tunnels have already been through the @@ -4632,8 +4631,7 @@ Flow(.logical_datapath = sw._uuid, .stage_hint = stage_hint(sp.lsp._uuid), .io_port = None, .controller_meter = None) :- - sp in &SwitchPort(.sw = sw, .peer = Some{rp}), - rp.is_enabled(), + sp in &SwitchPort(.sw = sw, .peer = Some{rp@&RouterPort{.enabled = true}}), &SwitchPortARPForwards(.port = sp, .reachable_ips_v4 = ips_v4), var ipv4 = FlatMap(ips_v4), var mc_flood_l2 = json_escape(mC_FLOOD_L2().0). @@ -4650,8 +4648,7 @@ Flow(.logical_datapath = sw._uuid, .stage_hint = stage_hint(sp.lsp._uuid), .io_port = None, .controller_meter = None) :- - sp in &SwitchPort(.sw = sw, .peer = Some{rp}), - rp.is_enabled(), + sp in &SwitchPort(.sw = sw, .peer = Some{rp@&RouterPort{.enabled = true}}), &SwitchPortARPForwards(.port = sp, .reachable_ips_v6 = ips_v6), var ipv6 = FlatMap(ips_v6), var mc_flood_l2 = json_escape(mC_FLOOD_L2().0). @@ -4664,12 +4661,10 @@ Flow(.logical_datapath = sw._uuid, .stage_hint = 0, .io_port = None, .controller_meter = None) :- - sp in &SwitchPort(.sw = sw, .peer = Some{rp}), - rp.is_enabled(), + sp in &SwitchPort(.sw = sw, .peer = Some{rp@&RouterPort{.enabled = true}}), &SwitchPortARPForwards(.port = sp, .unreachable_ips_v4 = ips_v4), var ipv4 = FlatMap(ips_v4), var flood = json_escape(mC_FLOOD().0). - Flow(.logical_datapath = sw._uuid, .stage = s_SWITCH_IN_L2_LKUP(), .priority = 90, @@ -4678,8 +4673,7 @@ Flow(.logical_datapath = sw._uuid, .stage_hint = stage_hint(sp.lsp._uuid), .io_port = None, .controller_meter = None) :- - sp in &SwitchPort(.sw = sw, .peer = Some{rp}), - rp.is_enabled(), + sp in &SwitchPort(.sw = sw, .peer = Some{rp@&RouterPort{.enabled = true}}), &SwitchPortARPForwards(.port = sp, .unreachable_ips_v6 = ips_v6), var ipv6 = FlatMap(ips_v6), var flood = json_escape(mC_FLOOD().0).