Re: [RFC PATCH 0/2] Allow full bridge configuration via sysfs
From: Patrick McHardy <hidden>
Date: 2008-07-07 20:50:52
7 messages, 4 authors, 2008-07-10 · open the first message on its own page
From: Patrick McHardy <hidden>
Date: 2008-07-07 20:50:52
Bill Nottingham wrote:
Right now, you can configure most bridge device parameters via sysfs. However, you cannot either: - add or remove bridge interfaces - add or remove physical interfaces from a bridge The attached patch set rectifies this. With this patch set, brctl (theoretically) becomes completely optional, much like ifenslave is now for bonding. (In fact, the idea for this patch, and the syntax used herein, is inspired by the sysfs bonding configuration.)
Both should use netlink instead of extending their sysfs interfaces. For bridging I have a patch for the bridge device itself, the API is so far missing support for adding ports though.
From: Bill Nottingham <hidden>
Date: 2008-07-07 20:55:36
Patrick McHardy (kaber@trash.net) said:
Bill Nottingham wrote:quoted
Right now, you can configure most bridge device parameters via sysfs. However, you cannot either: - add or remove bridge interfaces - add or remove physical interfaces from a bridge The attached patch set rectifies this. With this patch set, brctl (theoretically) becomes completely optional, much like ifenslave is now for bonding. (In fact, the idea for this patch, and the syntax used herein, is inspired by the sysfs bonding configuration.)Both should use netlink instead of extending their sysfs interfaces. For bridging I have a patch for the bridge device itself, the API is so far missing support for adding ports though.
How does that improve the situation for bridge devices? Are all bridging parameters (forward_delay, stp, etc.) going to be configurable via netlink, or would we still then have multiple tools/interfaces to configuration? Also, moving bonding configuration to netlink seems like a step backwards. Bill
From: Patrick McHardy <hidden>
Date: 2008-07-07 20:59:09
Bill Nottingham wrote:
Patrick McHardy (kaber@trash.net) said:quoted
Bill Nottingham wrote:quoted
Right now, you can configure most bridge device parameters via sysfs. However, you cannot either: - add or remove bridge interfaces - add or remove physical interfaces from a bridge The attached patch set rectifies this. With this patch set, brctl (theoretically) becomes completely optional, much like ifenslave is now for bonding. (In fact, the idea for this patch, and the syntax used herein, is inspired by the sysfs bonding configuration.)Both should use netlink instead of extending their sysfs interfaces. For bridging I have a patch for the bridge device itself, the API is so far missing support for adding ports though.How does that improve the situation for bridge devices? Are all bridging parameters (forward_delay, stp, etc.) going to be configurable via netlink, or would we still then have multiple tools/interfaces to configuration?
Of course its all going to be configurable via netlink, otherwise it really wouldn't make sense.
Also, moving bonding configuration to netlink seems like a step backwards.
Please read up on what the standard interface for network configuration is, I'm tired of reiterating this once a week.
From: Bill Nottingham <hidden>
Date: 2008-07-07 21:35:35
Patrick McHardy (kaber@trash.net) said:
quoted
Also, moving bonding configuration to netlink seems like a step backwards.Please read up on what the standard interface for network configuration is
OK, let's see. In the code: Hm, no TODO or FIXME. In the included documentation: Documentation/networking/bonding.txt: Module options, modprobe.conf, or 'distro-specific configuration file', ifenslave, or sysfs. Documentation/networking/ip-sysctl.txt: sysctl, obviously. Documentation/networking/generic_netlink.txt Hey, here's netlink! Doucmentation points only to a wiki. Referred to by zero other included in-kernel documentation. Well, that's helpful. Let's try the OSDL web! http://www.linuxfoundation.org/en/Net:Bridge brctl (which uses ioctl and sysfs). And /etc/net. http://www.linuxfoundation.org/en/Net:Bonding Module parameters only, including the lovely 'load driver multiple times' method. Doesn't even mention sysfs. http://www.linuxfoundation.org/en/Net:VLAN vconfig I could look at wireless network configuration, but I doubt that's going to help your argument.
I'm tired of reiterating this once a week.
Well, if the documentation that described this as the standard existed, or wasn't such crap, perhaps you wouldn't have to. That being said, how is moving from adding a bonding slave from: echo "+eth0" > /sys/class/net/bond0/bonding/slaves to: to: http://www.linuxfoundation.org/en/Net:Generic_Netlink_HOWTO a worthwhile improvement for the admin? Let's see, a kernel-userspace protocol with magic message formats. Hey, we reinvented ioctl! Why, if netlink is the standard (and it's been around for a long damn time), was sysfs configuration for bonding added in 2005? Why was bridge configuration added in 2005, and *extended* in 2006 and 2007? Why were the user-space tools such as brctl ported from ioctl to sysfs? Bill
From: David Miller <davem@davemloft.net>
Date: 2008-07-07 21:53:19
From: Bill Nottingham <redacted> Date: Mon, 7 Jul 2008 17:34:20 -0400
I could look at wireless network configuration, but I doubt that's going to help your argument.
Just like any system with age, we have a lot of legacy to convert over. But it will happen.
That being said, how is moving from adding a bonding slave from: echo "+eth0" > /sys/class/net/bond0/bonding/slaves to: to: http://www.linuxfoundation.org/en/Net:Generic_Netlink_HOWTO a worthwhile improvement for the admin? Let's see, a kernel-userspace protocol with magic message formats. Hey, we reinvented ioctl! Why, if netlink is the standard (and it's been around for a long damn time), was sysfs configuration for bonding added in 2005? Why was bridge configuration added in 2005, and *extended* in 2006 and 2007? Why were the user-space tools such as brctl ported from ioctl to sysfs?
Because often a lot of shit slips in when someone who understands the ramifications is too busy or on vacation. We do want everything to be netlink based. Why? Because it means that you can run one monitoring tool to listen for netlink events and report them to the user for diagnosis. It means that network configuration events can be sent over the wire and used remotely at some point. The latter can never happen as long as we keep adding ad-hoc config stuff.
From: Stephen Hemminger <hidden>
Date: 2008-07-07 22:05:30
On Mon, 07 Jul 2008 14:52:59 -0700 (PDT) David Miller [off-list ref] wrote:
From: Bill Nottingham <redacted> Date: Mon, 7 Jul 2008 17:34:20 -0400quoted
I could look at wireless network configuration, but I doubt that's going to help your argument.Just like any system with age, we have a lot of legacy to convert over. But it will happen.quoted
That being said, how is moving from adding a bonding slave from: echo "+eth0" > /sys/class/net/bond0/bonding/slaves to: to: http://www.linuxfoundation.org/en/Net:Generic_Netlink_HOWTO a worthwhile improvement for the admin? Let's see, a kernel-userspace protocol with magic message formats. Hey, we reinvented ioctl! Why, if netlink is the standard (and it's been around for a long damn time), was sysfs configuration for bonding added in 2005? Why was bridge configuration added in 2005, and *extended* in 2006 and 2007? Why were the user-space tools such as brctl ported from ioctl to sysfs?Because often a lot of shit slips in when someone who understands the ramifications is too busy or on vacation. We do want everything to be netlink based. Why? Because it means that you can run one monitoring tool to listen for netlink events and report them to the user for diagnosis. It means that network configuration events can be sent over the wire and used remotely at some point. The latter can never happen as long as we keep adding ad-hoc config stuff.
There are always historical reasons. In this case it was because I knew more about sysfs than netlink, and there was no netlink interface for managing interfaces back in 2005. Sysfs is okay for simple stuff (set forward-delay to 10seconds), but it falls down when anything interesting and transactional happens. Think of sysfs as more an extension of per-device sysctl's or module parameters, rather than a good configuration interface.
From: Bill Nottingham <hidden>
Date: 2008-07-10 02:35:43
David Miller (davem@davemloft.net) said:
quoted
Why, if netlink is the standard (and it's been around for a long damn time), was sysfs configuration for bonding added in 2005? Why was bridge configuration added in 2005, and *extended* in 2006 and 2007? Why were the user-space tools such as brctl ported from ioctl to sysfs?Because often a lot of shit slips in when someone who understands the ramifications is too busy or on vacation.
Duly noted, will time all patch submissions to land during your vacations in the future. More seriously, if there's not a mechanism to prevent ABIs the kernel doesn't want like this being added, that's a problem.
We do want everything to be netlink based. Why? Because it means that you can run one monitoring tool to listen for netlink events and report them to the user for diagnosis. It means that network configuration events can be sent over the wire and used remotely at some point. The latter can never happen as long as we keep adding ad-hoc config stuff.
Sure, but it does make them more opaque to the normal user, leaving them wrapped in the same old ip/brctl/ifenslave/vconfig tools - for better or worse, people like the discoverability and obviousness of sysfs. Bill