From: Jay Vosburgh <jv@jvosburgh.net>
To: David J Wilder <wilder@us.ibm.com>
Cc: netdev@vger.kernel.org, pradeeps@linux.vnet.ibm.com, pradeep@us.ibm.com
Subject: Re: [PATCH net-next v1 1/1] bonding: Adding limmited support for ARP monitoring with ovs.
Date: Fri, 11 Apr 2025 16:57:48 -0700 [thread overview]
Message-ID: <3885709.1744415868@famine> (raw)
In-Reply-To: <20250411174906.21022-2-wilder@us.ibm.com>
David J Wilder <wilder@us.ibm.com> wrote:
>Adding limited support for the ARP Monitoring feature when ovs is
>configured above the bond. When no vlan tags are used in the configuration
>or when the tag is added between the bond interface and the ovs bridge arp
>monitoring will function correctly. The use of tags between the ovs bridge
>and the routed interface are not supported.
Looking at the patch, it isn't really "adding support," but
rather is disabling the "is this IP address configured above the bond"
checks if the bond is a member of an OVS bridge. It also seems like it
would permit any ARP IP target, as long as the address is configured
somewhere on the system.
Stated another way, the route lookup in bond_arp_send_all() for
the target IP address must return a device, but the logic to match that
device to the interface stack above the bond will always succeed if the
bond is a member of any OVS bridge.
For example, given:
[ eth0, eth1 ] -> bond0 -> ovs-br -> ovs-port IP=10.0.0.1
eth2 IP=20.0.0.2
Configuring arp_ip_target=20.0.0.2 on bond0 would apparently
succeed after this patch is applied, and the bond would send ARPs for
20.0.0.2.
>For example:
>1) bond0 -> ovs-br -> ovs-port (x.x.x.x) is supported
>2) bond0 -> bond0.100 -> ovs-br -> ovs-port (x.x.x.x) is supported.
>3) bond0 -> ovs-br -> ovs-port -> ovs-port.100 (x.x.x.x) is not supported.
>
>Configurations #1 and #2 were tested and verified to function corectly.
>In the second configuration the correct vlan tags were seen in the arp.
Assuming that I'm understanding the behavior correctly, I'm not
sure that "if OVS then do whatever" is the right way to go, particularly
since this would still exhibit mysterious failures if a VLAN is
configured within OVS itself (case 3, above).
I understand that the architecture of OVS limits the ability to
do these sorts of checks, but I'm unconvinced that implementing this
support halfway is going to create more issues than it solves.
Lastly, thinking out loud here, I'm generally loathe to add more
options to bonding, but I'm debating whether this would be worth an
"ovs-is-a-black-box" option somewhere, so that users would have to
opt-in to the OVS alternate realm.
-J
>Signed-off-by: David J Wilder <wilder@us.ibm.com>
>Signed-off-by: Pradeep Satyanarayana <pradeeps@linux.vnet.ibm.com>
>---
> drivers/net/bonding/bond_main.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
>index 950d8e4d86f8..6f71a567ba37 100644
>--- a/drivers/net/bonding/bond_main.c
>+++ b/drivers/net/bonding/bond_main.c
>@@ -3105,7 +3105,13 @@ struct bond_vlan_tag *bond_verify_device_path(struct net_device *start_dev,
> struct net_device *upper;
> struct list_head *iter;
>
>- if (start_dev == end_dev) {
>+ /* If start_dev is an OVS port then we have encountered an openVswitch
>+ * bridge and can't go any further. The programming of the switch table
>+ * will determine what packets will be sent to the bond. We can make no
>+ * further assumptions about the network above the bond.
>+ */
>+
>+ if (start_dev == end_dev || netif_is_ovs_port(start_dev)) {
> tags = kcalloc(level + 1, sizeof(*tags), GFP_ATOMIC);
> if (!tags)
> return ERR_PTR(-ENOMEM);
---
-Jay Vosburgh, jv@jvosburgh.net
next prev parent reply other threads:[~2025-04-11 23:57 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-11 17:48 [PATCH net-next v1 0/1] bonding: Adding limited support for ARP monitoring with ovs David J Wilder
2025-04-11 17:48 ` [PATCH net-next v1 1/1] bonding: Adding limmited " David J Wilder
2025-04-11 23:57 ` Jay Vosburgh [this message]
2025-04-12 0:29 ` Ilya Maximets
2025-04-13 2:37 ` David Wilder
2025-04-15 20:09 ` Jay Vosburgh
2025-04-15 22:13 ` David Wilder
2025-04-16 0:35 ` Hangbin Liu
2025-04-16 1:11 ` Jay Vosburgh
2025-04-16 18:57 ` David Wilder
2025-04-18 3:59 ` Jay Vosburgh
2025-04-18 19:20 ` David Wilder
2025-04-15 13:58 ` Paolo Abeni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3885709.1744415868@famine \
--to=jv@jvosburgh.net \
--cc=netdev@vger.kernel.org \
--cc=pradeep@us.ibm.com \
--cc=pradeeps@linux.vnet.ibm.com \
--cc=wilder@us.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).