From patchwork Tue Jul 16 11:52:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ales Musil X-Patchwork-Id: 1961056 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" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=dZeHvq0W; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.133; helo=smtp2.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.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 4WNcrP2hYDz1xrQ for ; Tue, 16 Jul 2024 21:52:37 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 795F340B24; Tue, 16 Jul 2024 11:52:35 +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 27irQpiZt7oJ; Tue, 16 Jul 2024 11:52:34 +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 2057940B80 Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=dZeHvq0W Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 2057940B80; Tue, 16 Jul 2024 11:52:34 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id EEE81C0A97; Tue, 16 Jul 2024 11:52:33 +0000 (UTC) X-Original-To: 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 26072C0A96 for ; Tue, 16 Jul 2024 11:52:32 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 13BBB810F4 for ; Tue, 16 Jul 2024 11:52:32 +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 kR0RD9c9PEBV for ; Tue, 16 Jul 2024 11:52:31 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=170.10.133.124; helo=us-smtp-delivery-124.mimecast.com; envelope-from=amusil@redhat.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp1.osuosl.org 139FB81067 Authentication-Results: smtp1.osuosl.org; dmarc=pass (p=none dis=none) header.from=redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 139FB81067 Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=dZeHvq0W Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp1.osuosl.org (Postfix) with ESMTPS id 139FB81067 for ; Tue, 16 Jul 2024 11:52:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1721130749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Qmxd0KdQtGFsy6MRvTOd+Jl7SZNsdpR5Dy0lS14dKdg=; b=dZeHvq0WF625eSy8aNCr09nF8Q/AaY/iIBq+WIkSOWe/kZnTOht9r4mG3hH7PvT4y20mHd +NGygqaKJq5mIQwlVhWAiJCcYH7RMxwhrs2OE6oF0dKXRGSz86JJAn2rzm+32slArHUjrN xwKtOUR/jclVva5rvdXwUIlADYrHYr8= Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-616-gtIW9-fDPzGY05E2nYU0dg-1; Tue, 16 Jul 2024 07:52:27 -0400 X-MC-Unique: gtIW9-fDPzGY05E2nYU0dg-1 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EBE571955D52 for ; Tue, 16 Jul 2024 11:52:26 +0000 (UTC) Received: from amusil.brq.redhat.com (unknown [10.43.17.32]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D57BC195605F; Tue, 16 Jul 2024 11:52:25 +0000 (UTC) From: Ales Musil To: dev@openvswitch.org Date: Tue, 16 Jul 2024 13:52:24 +0200 Message-ID: <20240716115224.606737-1-amusil@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [ovs-dev] [PATCH ovn] controller: Remove OvS iface type check in I-P processing. 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: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" The handler for OvS interface in runtime data was checking interface type before proceeding with the I-P processing. The type is not necessary because the main thing that is interesting for OVN is the iface-id, if the interface doesn't have any it won't be processed regardless of the type. The processing would happen anyway, however it would be more costly because it would lead to full recompute of the whole runtime data node. Reported-at: https://github.com/ovn-org/ovn/issues/174 Reported-at: https://issues.redhat.com/browse/FDP-255 Signed-off-by: Ales Musil --- controller/binding.c | 25 ++++++--------------- tests/ovn-controller.at | 48 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 18 deletions(-) diff --git a/controller/binding.c b/controller/binding.c index b7e7f4874..da1f8afcf 100644 --- a/controller/binding.c +++ b/controller/binding.c @@ -2505,17 +2505,6 @@ consider_iface_release(const struct ovsrec_interface *iface_rec, return true; } -static bool -is_iface_vif(const struct ovsrec_interface *iface_rec) -{ - if (iface_rec->type && iface_rec->type[0] && - strcmp(iface_rec->type, "internal")) { - return false; - } - - return true; -} - static bool is_iface_in_int_bridge(const struct ovsrec_interface *iface, const struct ovsrec_bridge *br_int) @@ -2630,17 +2619,17 @@ binding_handle_ovs_interface_changes(struct binding_ctx_in *b_ctx_in, const struct ovsrec_interface *iface_rec; OVSREC_INTERFACE_TABLE_FOR_EACH_TRACKED (iface_rec, b_ctx_in->iface_table) { - if (!is_iface_vif(iface_rec)) { - /* Right now we are not handling ovs_interface changes of - * other types. This can be enhanced to handle of - * types - patch and tunnel. */ + const char *iface_id = smap_get(&iface_rec->external_ids, "iface-id"); + const char *old_iface_id = smap_get(b_ctx_out->local_iface_ids, + iface_rec->name); + if (!iface_id && !old_iface_id) { + /* Right now we are not handling ovs_interface changes if the + * interface doesn't have iface-id or didn't have it + * previously. */ handled = false; break; } - const char *iface_id = smap_get(&iface_rec->external_ids, "iface-id"); - const char *old_iface_id = smap_get(b_ctx_out->local_iface_ids, - iface_rec->name); const char *cleared_iface_id = NULL; if (!ovsrec_interface_is_deleted(iface_rec)) { int64_t ofport = iface_rec->n_ofport ? *iface_rec->ofport : 0; diff --git a/tests/ovn-controller.at b/tests/ovn-controller.at index 2cb86dc98..be913676b 100644 --- a/tests/ovn-controller.at +++ b/tests/ovn-controller.at @@ -3127,3 +3127,51 @@ OVS_WAIT_UNTIL([grep -q 'tcp:127.0.0.1:1235: connected' hv1/ovn-controller.log]) OVN_CLEANUP([hv1]) AT_CLEANUP + +AT_SETUP([ovn-controller - I-P different port types]) +AT_KEYWORDS([ovn]) +ovn_start + +net_add n1 +sim_add hv1 +ovs-vsctl add-br br-phys +ovn_attach n1 br-phys 192.168.0.20 + +check ovn-nbctl ls-add ls0 +check ovn-nbctl lsp-add ls0 vif + +ovn-appctl inc-engine/clear-stats + +ovs-vsctl -- add-port br-int vif -- \ + set Interface vif external-ids:iface-id=vif +wait_row_count Port_Binding 1 logical_port="vif" up=true + +ovs-vsctl del-port br-int vif +wait_row_count Port_Binding 1 logical_port="vif" up=false + +ovs-vsctl add-port br-int vif -- \ + set Interface vif type=dummy -- \ + set Interface vif external-ids:iface-id=vif +wait_row_count Port_Binding 1 logical_port="vif" up=true + +ovs-vsctl del-port br-int vif +wait_row_count Port_Binding 1 logical_port="vif" up=false + +ovs-vsctl add-port br-int vif -- \ + set Interface vif type=geneve -- \ + set Interface vif options:remote_ip=1.1.1.1 external-ids:iface-id=vif +wait_row_count Port_Binding 1 logical_port="vif" up=true + +ovs-vsctl del-port br-int vif +wait_row_count Port_Binding 1 logical_port="vif" up=false + +AT_CHECK([ovn-appctl inc-engine/show-stats runtime_data |\ + sed "s/- compute:\s\+[[0-9]]\+/- compute: ??/"], [0], [dnl +Node: runtime_data +- recompute: 0 +- compute: ?? +- cancel: 0 +]) + +OVN_CLEANUP([hv1]) +AT_CLEANUP