Jakub Kicinski
2019-Feb-28 19:56 UTC
[virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
On Thu, 28 Feb 2019 14:36:56 -0500, Michael S. Tsirkin wrote:> > It is a bit of a the chicken or the egg situation ;) But users can > > just blacklist, too. Anyway, I think this is far better than module > > parameters > > Sorry I'm a bit confused. What is better than what?I mean that blacklist net_failover or module param to disable net_failover and handle in user space are better than trying to solve the renaming at kernel level (either by adding module params that make the kernel rename devices or letting user space change names of running devices if they are slaves).> > for twiddling kernel-based interface naming policy.. :S > > I see your point. But my point is slave names don't really matter, only > master name matters. So I am not sure there's any policy worth talking > about here.Oh yes, I don't disagree with you, but others seems to want to rename the auto-bonded lower devices. Which can be done trivially if it was a daemon in user space instantiating the auto-bond. We are just providing a basic version of auto-bonding in the kernel. If there are extra requirements on policy, or naming - the whole thing is better solved in user space.
Michael S. Tsirkin
2019-Feb-28 20:14 UTC
[virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
On Thu, Feb 28, 2019 at 11:56:41AM -0800, Jakub Kicinski wrote:> On Thu, 28 Feb 2019 14:36:56 -0500, Michael S. Tsirkin wrote: > > > It is a bit of a the chicken or the egg situation ;) But users can > > > just blacklist, too. Anyway, I think this is far better than module > > > parameters > > > > Sorry I'm a bit confused. What is better than what? > > I mean that blacklist net_failover or module param to disable > net_failover and handle in user space are better than trying to solve > the renaming at kernel level (either by adding module params that make > the kernel rename devices or letting user space change names of running > devices if they are slaves). > > > > for twiddling kernel-based interface naming policy.. :S > > > > I see your point. But my point is slave names don't really matter, only > > master name matters. So I am not sure there's any policy worth talking > > about here. > > Oh yes, I don't disagree with you, but others seems to want to rename > the auto-bonded lower devices. Which can be done trivially if it was > a daemon in user space instantiating the auto-bond. We are just > providing a basic version of auto-bonding in the kernel. If there are > extra requirements on policy, or naming - the whole thing is better > solved in user space.OK so it seems that you would be happy with a combination of the module parameter disabling failover completely and renaming primary in kernel? Did I get it right? -- MST
Jakub Kicinski
2019-Feb-28 23:31 UTC
[virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
On Thu, 28 Feb 2019 15:14:55 -0500, Michael S. Tsirkin wrote:> On Thu, Feb 28, 2019 at 11:56:41AM -0800, Jakub Kicinski wrote: > > On Thu, 28 Feb 2019 14:36:56 -0500, Michael S. Tsirkin wrote: > > > > It is a bit of a the chicken or the egg situation ;) But users can > > > > just blacklist, too. Anyway, I think this is far better than module > > > > parameters > > > > > > Sorry I'm a bit confused. What is better than what? > > > > I mean that blacklist net_failover or module param to disable > > net_failover and handle in user space are better than trying to solve > > the renaming at kernel level (either by adding module params that make > > the kernel rename devices or letting user space change names of running > > devices if they are slaves). > > > > > > for twiddling kernel-based interface naming policy.. :S > > > > > > I see your point. But my point is slave names don't really matter, only > > > master name matters. So I am not sure there's any policy worth talking > > > about here. > > > > Oh yes, I don't disagree with you, but others seems to want to rename > > the auto-bonded lower devices. Which can be done trivially if it was > > a daemon in user space instantiating the auto-bond. We are just > > providing a basic version of auto-bonding in the kernel. If there are > > extra requirements on policy, or naming - the whole thing is better > > solved in user space. > > OK so it seems that you would be happy with a combination of the module > parameter disabling failover completely and renaming primary in kernel? > Did I get it right?Not 100%, I'm personally not convinced that renaming primary in the kernel is okay.
Siwei Liu
2019-Mar-01 00:20 UTC
[virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
On Thu, Feb 28, 2019 at 11:56 AM Jakub Kicinski <kubakici at wp.pl> wrote:> > On Thu, 28 Feb 2019 14:36:56 -0500, Michael S. Tsirkin wrote: > > > It is a bit of a the chicken or the egg situation ;) But users can > > > just blacklist, too. Anyway, I think this is far better than module > > > parameters > > > > Sorry I'm a bit confused. What is better than what? > > I mean that blacklist net_failover or module param to disable > net_failover and handle in user space are better than trying to solve > the renaming at kernel level (either by adding module params that make > the kernel rename devices or letting user space change names of running > devices if they are slaves).Before I was aksed to revive this old mail thread, I knew the discussion could end up with something like this. Yes, theoretically there's a point - basically you don't believe kernel should take risk in fixing the issue, so you push back the hope to something in hypothesis that actually wasn't done and hard to get done in reality. It's not too different than saying "hey, what you're asking for is simply wrong, don't do it! Go back to modify userspace to create a bond or team instead!" FWIW I want to emphasize that the debate for what should be the right place to implement this failover facility: userspace versus kernel, had been around for almost a decade, and no real work ever happened in userspace to "standardize" this in the Linux world. The truth is that it's quite amount of complex work to get it implemented right at userspace in reality: what Michael mentions about making dracut auto-bonding aware is just tip of the iceberg. Basically one would need to modify all the existing network config tools to treat them well with this new auto-bonding concept: handle duplicate MACs, differentiate it with regular bond/team, fix boot time dependency of network boot and etc. Moreover, it's not a single distro's effort from cloud provider's perspective, at least not as simple as to say just move it to a daemon systemd/NM then work is done. We (Oracle) had done extensive work in the past year to help align various userspace components and work with distro vendors to patch shipped packages to make them work with the failover 3-netdev model. The work that needs to be done with userspace auto-bonding would be more involved than just that, with quite trivial value (just naming?) in turn that I suspect any developer in userspace could be motivated. So, simply put, no, we have zero interest in this direction. If upstream believes this is the final conclusion, I think we can stop discussing. Thanks, -Siwei> > > > for twiddling kernel-based interface naming policy.. :S > > > > I see your point. But my point is slave names don't really matter, only > > master name matters. So I am not sure there's any policy worth talking > > about here. > > Oh yes, I don't disagree with you, but others seems to want to rename > the auto-bonded lower devices. Which can be done trivially if it was > a daemon in user space instantiating the auto-bond. We are just > providing a basic version of auto-bonding in the kernel. If there are > extra requirements on policy, or naming - the whole thing is better > solved in user space.
Jakub Kicinski
2019-Mar-01 01:05 UTC
[virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
On Thu, 28 Feb 2019 16:20:28 -0800, Siwei Liu wrote:> On Thu, Feb 28, 2019 at 11:56 AM Jakub Kicinski wrote: > > On Thu, 28 Feb 2019 14:36:56 -0500, Michael S. Tsirkin wrote: > > > > It is a bit of a the chicken or the egg situation ;) But users can > > > > just blacklist, too. Anyway, I think this is far better than module > > > > parameters > > > > > > Sorry I'm a bit confused. What is better than what? > > > > I mean that blacklist net_failover or module param to disable > > net_failover and handle in user space are better than trying to solve > > the renaming at kernel level (either by adding module params that make > > the kernel rename devices or letting user space change names of running > > devices if they are slaves). > > Before I was aksed to revive this old mail thread, I knew the > discussion could end up with something like this. Yes, theoretically > there's a point - basically you don't believe kernel should take risk > in fixing the issue, so you push back the hope to something in > hypothesis that actually wasn't done and hard to get done in reality. > It's not too different than saying "hey, what you're asking for is > simply wrong, don't do it! Go back to modify userspace to create a > bond or team instead!" FWIW I want to emphasize that the debate for > what should be the right place to implement this failover facility: > userspace versus kernel, had been around for almost a decade, and no > real work ever happened in userspace to "standardize" this in the > Linux world.Let me offer you my very subjective opinion of why "no real work ever happened in user space". The actors who have primary interest to get the auto-bonding working are HW vendors trying to either convince customers to use SR-IOV, or being pressured by customers to make SR-IOV easier to consume. HW vendors hire driver developers, not user space developers. So the solution we arrive at is in the kernel for a non technical reason (Conway's law, sort of). $ cd NetworkManager/ $ git log --pretty=format:"%ae" | \ grep '\(mellanox\|intel\|broadcom\|netronome\)' | sort | uniq -c 81 andrew.zaborowski at intel.com 2 David.Woodhouse at intel.com 2 ismo.puustinen at intel.com 1 michael.i.doherty at intel.com Andrew works on WiFi. I have asked the NetworkManager folks to implement this feature last year when net_failover got dangerously close to getting merged, and they said they were never approached with this request before, much less offered code that solve it. Unfortunately before they got around to it net_failover was merged already, and they didn't proceed. So to my knowledge nobody ever tried to solve this in user space. I don't think net_failover is particularly terrible, or that renaming of primary in the kernel is the end of the world, but I'd appreciate if you could point me to efforts to solve it upstream in user space components, or acknowledge that nobody actually tried that.
Reasonably Related Threads
- [virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
- [virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
- [virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
- [virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)
- [virtio-dev] Re: net_failover slave udev renaming (was Re: [RFC PATCH net-next v6 4/4] netvsc: refactor notifier/event handling code to use the bypass framework)