From: Scott Feldman <scofeldm@cisco.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Stefan Berger <stefanb@us.ibm.com>, <netdev@vger.kernel.org>
Subject: Re: [PATCH] virtif: initial interface extensions
Date: Mon, 10 May 2010 17:25:00 -0700 [thread overview]
Message-ID: <C80DF1EC.2FFE0%scofeldm@cisco.com> (raw)
In-Reply-To: <201005102346.38229.arnd@arndb.de>
On 5/10/10 2:46 PM, "Arnd Bergmann" <arnd@arndb.de> wrote:
> On Monday 10 May 2010 20:56:39 Scott Feldman wrote:
>> With Arnd's latest additions, we have a single netlink msg, but the
>> parameter sets are disjoint between VDP/CDCP and what we need for the kernel
>> driver. So that means the sender (libvirt in this case) needs to know about
>> both setups to send a single netlink msg. An alternative is a have two
>> netlink msgs, one for each setup. That still requires the sender to know
>> about two setups.
>
> There are two separate issues here. The first one is whether we're doing
> the association in the device driver or in user space. The assumption here
> is that if it's in the device driver, there will be a VF number to identify
> the channel, while in user space that is not needed.
>
> The other question is which protocol we're using. There are as far as I
> can tell five options:
>
> 1. enic device driver
> 2. VDP
> 3. CDCP
> 4. CDCP + VDP
> 5. enic + VDP
>
> The first two ones are the most interesting for now, since Linux cannot do
> S-VLANs yet, and they are required for CDCP. However, each of these options
> could theoreticall be done in the kernel (plus firmware) or in user space.
>
> If it's done in user space, the VF number is meaningless, because the setup
> of the software device is also done from software, but instead you need to
> take care of creating the software device with the correct parameters, e.g.
> a macvtap device connected to a VLAN interface using the numbers you pass
> in the VDP protocol.
>
> Right now, we're not planning to do the protocol that enic uses in LLDPAD,
> because it's not publically released. Similarly, there are no adapters that
> do VDP in firmware, but both these cases should be covered by the protocol
> and it would be good if libvirt could handle them.
>
> Stefan, can you just define the XML in a way that matches the netlink
> definition? What you need is something like
>
> 1. VF number (optional, signifies that 2/3 are done in firmware)
> 2. Lower-level protocol
> 2.1. CDCP
> 2.1.1 SVID
> 2.1.2 SCID
> 2.2. enic
> 2.2.1 port profile name
> 2.2.2 ...
> 3. VDP
> 3.1 VSI type/version/provider
> 3.2 UUID
> 3.3 MAC/VLAN
>
> You need to have 2. or 3. or both, and 2.1/2.2 are mutually exclusive.
I'm don't think this is going in the right direction. We're talking a
pretty simple concept of a port-profile used to configure the virtual port
backing a VM i/f to something that's trying to munge disjoint protocols
based on pre-standard work into a single API. It's forcing all those
pre-standard protocol details into the API, into the XML, and into the mgmt
software (libvirt), and into the admin's lap.
I want the API to pass a port-profile name plus other information associated
with the VM i/f to some mgmt object which can setup the virtual port backing
the VM i/f. (And unset it). Using netlink for API let's that object be in
user- or kernel-space software, hardware or firmware. How the object sets
up the virtual port based on the passed port-profile is beyond the scope of
the API.
My last port-profile patch is this API. It gives us this:
1) single netlink msg for kernel- and user-space
2) single parameter set from sender's perspective (libvirt)
3) single XML representation of parameters
4) single code path in kernel and libvirt
5) (potential) cross-vendor-switch VM migration
6) admin-friendly port-profile names
7) allows pre-standard (802.1Qbg/bh) details to change
without bogging down the API
What I proposed on the libvirt list is to maintain a mapping database from
port-profile to vendor-specific or protocol-specific parameters. Using VDP
as an example, a port-profile would resolve the VDP tuple:
port-profile: "joes-garage" ---> VSI Manager ID: 15
VSI Type ID: 12345
VSI Type ID Ver: 1
other VSI settings (preassociate)
How the mapping database is maintained is beyond the scope of the API.
The port-profile string is the unifying concept. This is the common ground
and the only way to be protocol-independent in the API.
-scott
next prev parent reply other threads:[~2010-05-11 0:25 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-06 4:42 [net-next-2.6 V5 PATCH 0/3] Add port-profile netlink support Scott Feldman
2010-05-06 4:42 ` [net-next-2.6 V5 PATCH 1/3] Add netdev/netlink port-profile support (was iovnl) Scott Feldman
2010-05-06 4:42 ` [net-next-2.6 V5 PATCH 2/3] Add ndo_{set|get}_vf_port_profile op support for enic dynamic vnics Scott Feldman
2010-05-06 13:47 ` Arnd Bergmann
2010-05-06 16:25 ` Scott Feldman
2010-05-06 16:45 ` Arnd Bergmann
2010-05-06 4:42 ` [net-next-2.6 V5 PATCH 3/3] Add SR-IOV support to enic (please don't apply this patch) Scott Feldman
2010-05-06 13:51 ` [net-next-2.6 V5 PATCH 0/3] Add port-profile netlink support Arnd Bergmann
2010-05-06 16:19 ` Scott Feldman
2010-05-06 16:42 ` Arnd Bergmann
2010-05-08 23:20 ` [PATCH] virtif: initial interface extensions Arnd Bergmann
2010-05-10 15:37 ` Stefan Berger
2010-05-10 18:56 ` Scott Feldman
2010-05-10 21:46 ` Arnd Bergmann
2010-05-10 23:51 ` Stefan Berger
2010-05-11 0:25 ` Scott Feldman [this message]
2010-05-11 12:59 ` Arnd Bergmann
2010-05-11 17:15 ` Vivek Kashyap
[not found] ` <OFFE8F5F70.5C07C656-ON8525771F.00787A71-8525771F.007FCDFC@us.ibm.com>
2010-05-11 12:25 ` Arnd Bergmann
[not found] ` <OF2E2B37D4.51A81D74-ON85257720.0045FA96-85257720.004C5403@us.ibm.com>
2010-05-11 14:22 ` Arnd Bergmann
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=C80DF1EC.2FFE0%scofeldm@cisco.com \
--to=scofeldm@cisco.com \
--cc=arnd@arndb.de \
--cc=netdev@vger.kernel.org \
--cc=stefanb@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).