From: Ben Greear <greearb@candelatech.com>
To: Shmulik Hen <shmulik.hen@intel.com>
Cc: bond-devel <bonding-devel@lists.sourceforge.net>,
linux-net <linux-net@vger.kernel.org>,
linux-netdev <netdev@oss.sgi.com>,
"David S. Miller" <davem@redhat.com>,
Jeff Garzik <jgarzik@pobox.com>, Jay Vosburgh <fubar@us.ibm.com>,
Amir Noam <amir.noam@intel.com>,
Noam Marom <noam.marom@intel.com>,
Tsippy Mendelson <tsippy.mendelson@intel.com>
Subject: Re: [RFC][bonding] Improve VLAN support on top of bonding
Date: Tue, 15 Jul 2003 10:24:49 -0700 [thread overview]
Message-ID: <3F1438E1.5000600@candelatech.com> (raw)
In-Reply-To: <Pine.LNX.4.33.0307151503450.13870-100000@jrslxjul1.npdj.intel.com>
Shmulik Hen wrote:
> Hi All,
>
> Currently, when using 8021q VLAN module to work on top of bonding,
> everything seems to work OK, but there are some issues that will not work
> according to our analysis. For example, any self-generated packets sent by
> bonding itself (e.g. arp-mon, TLB learning packets, ALB arp replies, etc.)
> do not have the VLAN id tag in them, and thus will not go through the
> switch. Also, in order to configure a VLAN interface, the underlying
> interface must be configured first to IP address 0.0.0.0. Since arp-mon
> uses bond's IP address, this might cause further problems. Other issue
> we've still not investigated, like what happens if bonding needs to parse
> a tagged packet for layer2/layer3 data, might still create more problems.
>
> We have come up with some possible solution we would like to get
> comments on. First of all, our main guide line was not to duplicate code
> segments that are in the VLAN module and put them in bonding. Further, we
> figured bonding should not need to know about how the VLAN module handles
> hardware acceleration. On the other hand, bonding does need to know what
> VLAN tags are being used so it may send packets successfully through all
> the switch ports, so some kind of policy needs to be defined.
>
> So here is what we've come up with until now.
>
> 1. Configuration
> Need to decide between:
> a. Block VLAN add/del operations when bond has no slaves.
> b. Block enslave/release of slaves when bond has no VLAN tags (needs a
> module parameter).
> c. Remove limitation of IP 0.0.0.0.
>
> 2. Indication
> Need to decide between:
> a. Add notification mechanism in VLAN module that bonding may register
> to listen to, and thus keep track of VLAN tags added/removed.
> b. Register to listen to net device register/unregister notifications
> to monitor creation/destruction of VLAN devices. Requires support
> for figuring out if a net device is a VLAN device, and also two vlan
> calls like get_realdev() and get_vlan_id() exported.
b) sounds good to me. There are flags that can let you know if it's a vlan
device or not.
if.h:#define IFF_802_1Q_VLAN 0x1 /* 802.1Q VLAN device. */
> c. Parse every packet going through bonding to collect VLAN tags.
>
> 3. Monitoring
> In order for bonding to be able to generate tagged packets on its own,
> two major changes need to be done. One is split the vlan_start_xmit
> function into insert_tag() and vlan_xmit(), so bonding may choose the
> required tag on its own, and let 8021q to the transmit. A second change
> is to split arp_send() into arp_create() and arp_send(), so bonding may
> pass all the usual parameters for arp creation, get a complete arp
> packet and then pass it to 8021q for tag insertion on transmission.
>
>
> Hardware acceleration
> =====================
> When coming to analyze what is required for adding support for
> VLAN hardware acceleration on top of bonding, other issues come to mind.
> Since add/del operations are defined and handshakes are performed between
> the VLAN module and the device driver, tracking VLAN tags is simpler and
> commands should just be propagated to the slaves. Enslaving/releasing
> slaves should also be simple and just require adding/removing existing
> VLAN tags from them. The problem is how to handle configuration issues.
I'd consider ignoring the HW accel unless you can prove it actually helps
performance to a noticeable degree. I have never seen results of any benchmarking
related to this...
>
> 1. Since adding the first VLAN tag requires some additional handshake,
> can bonding support that operation on a bond that already has slaves
> and is running?
> 2. What about removing the last tag from a bond?
> 3. Should the bond device declare itself as "VLAN challenged" before
> registering and remove that limitation only once it has slaves?
> 4. Should the bond declare itself as fully hardware acceleration capable
> to benefit from "strong" slaves while performing regular VLAN
> inserting/stripping for "weak" slaves?
> 5. How can bonding generate untagged packets and send them via
> hardware acceleration capable slaves (e.g. 802.3ad LACPDU) ?
>
>
--
Ben Greear <greearb@candelatech.com> <Ben_Greear AT excite.com>
President of Candela Technologies Inc http://www.candelatech.com
ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear
next prev parent reply other threads:[~2003-07-15 17:24 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-15 13:55 [RFC][bonding] Improve VLAN support on top of bonding Shmulik Hen
2003-07-15 17:24 ` Ben Greear [this message]
2003-07-15 17:55 ` [Bonding-devel] " Dan Hollis
2003-07-15 18:13 ` Ben Greear
2003-07-15 18:16 ` Dan Hollis
2003-07-15 18:36 ` Ralph Doncaster
2003-07-15 19:20 ` Dan Hollis
2003-07-15 22:30 ` Jeff Garzik
2003-07-16 12:33 ` Ralph Doncaster
-- strict thread matches above, loose matches on Subject: below --
2003-07-15 17:49 Eble, Dan
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=3F1438E1.5000600@candelatech.com \
--to=greearb@candelatech.com \
--cc=amir.noam@intel.com \
--cc=bonding-devel@lists.sourceforge.net \
--cc=davem@redhat.com \
--cc=fubar@us.ibm.com \
--cc=jgarzik@pobox.com \
--cc=linux-net@vger.kernel.org \
--cc=netdev@oss.sgi.com \
--cc=noam.marom@intel.com \
--cc=shmulik.hen@intel.com \
--cc=tsippy.mendelson@intel.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).