[openstack-dev] [nova][neutron] PCI pass-through SRIOV binding of ports

Irena Berezovsky irenab at mellanox.com
Wed Mar 5 16:22:23 UTC 2014


Hi Robert,
I think what you mentioned can be achieved by calling into specific MD method from
SriovAgentMechanismDriverBase .try_to_bind_segment_for_agent mehod, maybe something like 'get_vif_details' before it calls to context.set_binding.
Would you mind to continue discussion over patch gerrit review https://review.openstack.org/#/c/74464/ ?
I think it will be easier to follow up the comments and decisions.
Thanks,
Irena
-----Original Message-----
From: Robert Li (baoli) [mailto:baoli at cisco.com] 
Sent: Wednesday, March 05, 2014 6:10 PM
To: Irena Berezovsky; OpenStack Development Mailing List (not for usage questions); Sandhya Dasu (sadasu); Robert Kukura; Brian Bowen (brbowen)
Subject: Re: [openstack-dev] [nova][neutron] PCI pass-through SRIOV binding of ports
Hi Irena,
The main reason for me to do it that way is how vif_details should be setup in our case. Do you need vlan in vif_details? The behavior in the existing base classes is that the vif_details is set during the driver init time. In our case, it needs to be setup during bind_port().
thanks,
Robert
On 3/5/14 7:37 AM, "Irena Berezovsky" <irenab at mellanox.com> wrote:
>Hi Robert, Sandhya,
>I have pushed the reference implementation 
>SriovAgentMechanismDriverBase as part the following WIP:
>https://review.openstack.org/#/c/74464/
>>The code is in mech_agent.py, and very simple code for 
>mech_sriov_nic_switch.py.
>>Please take a look and review.
>>BR,
>Irena
>>-----Original Message-----
>From: Irena Berezovsky [mailto:irenab at mellanox.com]
>Sent: Wednesday, March 05, 2014 9:04 AM
>To: Robert Li (baoli); Sandhya Dasu (sadasu); OpenStack Development 
>Mailing List (not for usage questions); Robert Kukura; Brian Bowen
>(brbowen)
>Subject: Re: [openstack-dev] [nova][neutron] PCI pass-through SRIOV 
>binding of ports
>>Hi Robert,
>Seems to me that many code lines are duplicated following your proposal.
>For agent based MDs, I would prefer to inherit from 
>SimpleAgentMechanismDriverBase and add there verify method for 
>supported_pci_vendor_info. Specific MD will pass the list of supported 
>pci_vendor_info list. The 'try_to_bind_segment_for_agent' method will 
>call 'supported_pci_vendor_info', and if supported continue with 
>binding flow.
>Maybe instead of a decorator method, it should be just an utility method?
>I think that the check for supported vnic_type and pci_vendor info 
>support, should be done in order to see if MD should bind the port. If 
>the answer is Yes, no more checks are required.
>>Coming back to the question I asked earlier, for non-agent MD, how 
>would you deal with updates after port is bound, like 'admin_state_up' changes?
>I'll try to push some reference code later today.
>>BR,
>Irena
>>-----Original Message-----
>From: Robert Li (baoli) [mailto:baoli at cisco.com]
>Sent: Wednesday, March 05, 2014 4:46 AM
>To: Sandhya Dasu (sadasu); OpenStack Development Mailing List (not for 
>usage questions); Irena Berezovsky; Robert Kukura; Brian Bowen 
>(brbowen)
>Subject: Re: [openstack-dev] [nova][neutron] PCI pass-through SRIOV 
>binding of ports
>>Hi Sandhya,
>>I agree with you except that I think that the class should inherit from 
>MechanismDriver. I took a crack at it, and here is what I got:
>># Copyright (c) 2014 OpenStack Foundation # All Rights Reserved.
>#
># Licensed under the Apache License, Version 2.0 (the "License"); you
>may
># not use this file except in compliance with the License. You may
>obtain
># a copy of the License at
>#
># http://www.apache.org/licenses/LICENSE-2.0
>#
># Unless required by applicable law or agreed to in writing, software
># distributed under the License is distributed on an "AS IS" BASIS,
>WITHOUT
># WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See
>the
># License for the specific language governing permissions and
>limitations
># under the License.
>>from abc import ABCMeta, abstractmethod
>>import functools
>import six
>>from neutron.extensions import portbindings from 
>neutron.openstack.common import log from neutron.plugins.ml2 import 
>driver_api as api
>>LOG = log.getLogger(__name__)
>>>DEFAULT_VNIC_TYPES_SUPPORTED = [portbindings.VNIC_DIRECT,
> portbindings.VNIC_MACVTAP]
>>def check_vnic_type_and_vendor_info(f):
> @functools.wraps(f)
> def wrapper(self, context):
> vnic_type = context.current.get(portbindings.VNIC_TYPE,
> portbindings.VNIC_NORMAL)
> if vnic_type not in self.supported_vnic_types:
> LOG.debug(_("%(func_name)s: skipped due to unsupported "
> "vnic_type: %(vnic_type)s"),
> {'func_name': f.func_name, 'vnic_type': vnic_type})
> return
>> if self.supported_pci_vendor_info:
> profile = context.current.get(portbindings.PROFILE, {})
> if not profile:
> LOG.debug(_("%s: Missing profile in port binding"),
> f.func_name)
> return
> pci_vendor_info = profile.get('pci_vendor_info')
> if not pci_vendor_info:
> LOG.debug(_("%s: Missing pci vendor info in profile"),
> f.func_name)
> return
> if pci_vendor_info not in self.supported_pci_vendor_info:
> LOG.debug(_("%(func_name)s: unsupported pci vendor "
> "info: %(info)s"),
> {'func_name': f.func_name, 'info':
>pci_vendor_info})
> return
> f(self, context)
> return wrapper
>>@six.add_metaclass(ABCMeta)
>class SriovMechanismDriverBase(api.MechanismDriver):
> """Base class for drivers that supports SR-IOV
>> The SriovMechanismDriverBase provides common code for mechanism
> drivers that supports SR-IOV. Such a driver may or may not require
> an agent to be running on the port's host.
>> MechanismDrivers that uses this base class and requires an agent must
> pass the agent type to __init__(), and must implement
> try_to_bind_segment_for_agent() and check_segment_for_agent().
>> MechanismDrivers that uses this base class may provide supported 
>vendor
> information, and must provide the supported vnic types.
> """
> def __init__(self, agent_type=None, supported_pci_vendor_info=[],
> supported_vnic_types=DEFAULT_VNIC_TYPES_SUPPORTED):
> """Initialize base class for SR-IOV capable Mechanism Drivers
>> :param agent_type: Constant identifying agent type in agents_db
> :param supported_pci_vendor_info: a list of "vendor_id:product_id"
> :param supported_vnic_types: The binding:vnic_type values we 
>can bind
> """
> self.supported_pci_vendor_info = supported_pci_vendor_info
> self.agent_type = agent_type
> self.supported_vnic_types = supported_vnic_types
>> def initialize(self):
> pass
>> @check_vnic_type_and_vendor_info
> def bind_port(self, context):
> LOG.debug(_("Attempting to bind port %(port)s on "
> "network %(network)s"),
> {'port': context.current['id'],
> 'network': context.network.current['id']})
>> if self.agent_type:
> for agent in context.host_agents(self.agent_type):
> LOG.debug(_("Checking agent: %s"), agent)
> if agent['alive']:
> for segment in context.network.network_segments:
> if self.try_to_bind_segment_for_agent(context,
>segment,
> agent):
> LOG.debug(_("Bound using segment: %s"),
>segment)
> return
> else:
> LOG.warning(_("Attempting to bind with dead agent:
>%s"),
> agent)
> else:
> for segment in context.network.network_segments:
> if self.try_to_bind_segment(context, segment):
> LOG.debug(_("Bound using segment: %s"), segment)
> return
>> def validate_port_binding(self, context):
> LOG.debug(_("Validating binding for port %(port)s on "
> "network %(network)s"),
> {'port': context.current['id'],
> 'network': context.network.current['id']})
> if self.agent_type:
> for agent in context.host_agents(self.agent_type):
> LOG.debug(_("Checking agent: %s"), agent)
> if agent['alive'] and self.check_segment_for_agent(
> context.bound_segment, agent):
> LOG.debug(_("Binding valid"))
> return True
> LOG.warning(_("Binding invalid for port: %s"),
>context.current)
> return False
> else:
> return True
>> @check_vnic_type_and_vendor_info
> def unbind_port(self, context):
> LOG.debug(_("Unbinding port %(port)s on "
> "network %(network)s"),
> {'port': context.current['id'],
> 'network': context.network.current['id']})
>> @abstractmethod
> def try_to_bind_segment_for_agent(self, context, segment, agent):
> """Try to bind with segment for agent.
>> :param context: PortContext instance describing the port
> :param segment: segment dictionary describing segment to bind
> :param agent: agents_db entry describing agent to bind
> :returns: True iff segment has been bound for agent
>> Called inside transaction during bind_port() so that derived
> MechanismDrivers can use agent_db data along with built-in
> knowledge of the corresponding agent's capabilities to attempt
> to bind to the specified network segment for the agent.
>> If the segment can be bound for the agent, this function must
> call context.set_binding() with appropriate values and then
> return True. Otherwise, it must return False.
> """
>> @abstractmethod
> def check_segment_for_agent(self, segment, agent):
> """Check if segment can be bound for agent.
>> :param segment: segment dictionary describing segment to bind
> :param agent: agents_db entry describing agent to bind
> :returns: True iff segment can be bound for agent
>> Called inside transaction during validate_port_binding() so
> that derived MechanismDrivers can use agent_db data along with
> built-in knowledge of the corresponding agent's capabilities
> to determine whether or not the specified network segment can
> be bound for the agent.
> """
>> @abstractmethod
> def try_to_bind_segment(self, segment):
> """Check if segment can be bound.
>> :param segment: segment dictionary describing segment to bind
> :returns: True iff segment can be bound
>> Called inside transaction during bind_port() so that derived
> MechanismDrivers can use database data along with built-in
> knowledge to attempt to bind to the specified network segment
>> If the segment can be bound, this function must
> call context.set_binding() with appropriate values and then
> return True. Otherwise, it must return False.
> """
>>>>A SRIOV MD would inherit from it and implement
>try_to_bind_segment_for_agent() and check_segment_for_agent() and 
>try_to_bind_segment(). If an agent is required, the first two methods 
>should have concrete implementation, and the third may only contain 
>'pass'. Otherwise, the first two are 'pass', and the third needs to be 
>implemented.
>>In the inherited class, its __init__ method should set the supported 
>pci_vendor_info by either hard coding or by configuration (which is 
>preferred so that code doesn't need to be changed with newly supported 
>cards).
>in the bind segment method, vif_type and vif_details should be set, and
>set_binding() called.
>>methods inherited from MechanismDriver, such as 
>create_port_precommit()/postcommit(), 
>update_port_precommit()/postcommit
>can be decorated with check_vnic_type_and_vendor_info so that they 
>won't be called if vnic_type and vendor_info don't match.
>>Let me know what you think.
>>thanks,
>Robert
>>>>>On 3/4/14 4:08 PM, "Sandhya Dasu (sadasu)" <sadasu at cisco.com> wrote:
>>>Hi,
>> During today's meeting, it was decided that we would re-purpose
>>Robert's 
>>https://blueprints.launchpad.net/neutron/+spec/pci-passthrough-sriov 
>>to take care of adding a Base class to take care of common processing 
>>for SR-IOV ports.
>>>>This class would:
>>>>1. Inherits from AgentMechanismDriverBase.
>>2. Implements bind_port() where the binding:profile would be checked 
>>to see if the port's vnic_type is VNIC_DIRECT or VNIC_MACVTAP.
>>3. Also checks to see that port belongs to vendor/product that 
>>supports SR-IOV.
>>4. This class could be used by MDs that may or may not have a valid L2 
>>agent.
>>5. Implement validate_port_binding(). This will always return True for 
>>Mds that do not have an L2 agent.
>>>>Please let me know if I left out anything.
>>>>Thanks,
>>Sandhya
>>On 2/25/14 9:18 AM, "Sandhya Dasu (sadasu)" <sadasu at cisco.com> wrote:
>>>>>Hi,
>>> As a follow up from today's IRC, Irena, are you looking to write 
>>>the below mentioned Base/Mixin class that inherits from 
>>>AgentMechanismDriverBase class? When you mentioned port state, were 
>>>you referring to the validate_port_binding() method?
>>>>>>Pls clarify.
>>>>>>Thanks,
>>>Sandhya
>>>>>>On 2/6/14 7:57 AM, "Sandhya Dasu (sadasu)" <sadasu at cisco.com> wrote:
>>>>>>>Hi Bob and Irena,
>>>> Thanks for the clarification. Irena, I am not opposed to a 
>>>>SriovMechanismDriverBase/Mixin approach, but I want to first figure 
>>>>out how much common functionality there is. Have you already looked 
>>>>at this?
>>>>>>>>Thanks,
>>>>Sandhya
>>>>>>>>On 2/5/14 1:58 AM, "Irena Berezovsky" <irenab at mellanox.com> wrote:
>>>>>>>>>Please see inline my understanding
>>>>>>>>>>-----Original Message-----
>>>>>From: Robert Kukura [mailto:rkukura at redhat.com]
>>>>>Sent: Tuesday, February 04, 2014 11:57 PM
>>>>>To: Sandhya Dasu (sadasu); OpenStack Development Mailing List (not 
>>>>>for usage questions); Irena Berezovsky; Robert Li (baoli); Brian 
>>>>>Bowen
>>>>>(brbowen)
>>>>>Subject: Re: [openstack-dev] [nova][neutron] PCI pass-through SRIOV 
>>>>>binding of ports
>>>>>>>>>>On 02/04/2014 04:35 PM, Sandhya Dasu (sadasu) wrote:
>>>>>> Hi,
>>>>>> I have a couple of questions for ML2 experts regarding 
>>>>>>support of SR-IOV ports.
>>>>>>>>>>I'll try, but I think these questions might be more about how the 
>>>>>various SR-IOV implementations will work than about ML2 itself...
>>>>>>>>>>> 1. The SR-IOV ports would not be managed by ova or linuxbridge L2 
>>>>>> agents. So, how does a MD for SR-IOV ports bind/unbind its ports 
>>>>>> to the host? Will it just be a db update?
>>>>>>>>>>I think whether or not to use an L2 agent depends on the specific 
>>>>>SR-IOV implementation. Some (Mellanox?) might use an L2 agent, 
>>>>>while others
>>>>>(Cisco?) might put information in binding:vif_details that lets the 
>>>>>nova VIF driver take care of setting up the port without an L2 
>>>>>agent.
>>>>>[IrenaB] Based on VIF_Type that MD defines, and going forward with 
>>>>>other binding:vif_details attributes, VIFDriver should do the VIF 
>>>>>pluging part.
>>>>>As for required networking configuration is required, it is usually 
>>>>>done either by L2 Agent or external Controller, depends on MD.
>>>>>>>>>>>>>>>>> 2. Also, how do we handle the functionality in mech_agent.py, 
>>>>>> within the SR-IOV context?
>>>>>>>>>>My guess is that those SR-IOV MechanismDrivers that use an L2 agent 
>>>>>would inherit the AgentMechanismDriverBase class if it provides 
>>>>>useful functionality, but any MechanismDriver implementation is 
>>>>>free to not use this base class if its not applicable. I'm not sure 
>>>>>if an SriovMechanismDriverBase (or SriovMechanismDriverMixin) class 
>>>>>is being planned, and how that would relate to AgentMechanismDriverBase.
>>>>>>>>>>[IrenaB] Agree with Bob, and as I stated before I think there is a 
>>>>>need for SriovMechanismDriverBase/Mixin that provides all the 
>>>>>generic functionality and helper methods that are common to SRIOV 
>>>>>ports.
>>>>>-Bob
>>>>>>>>>>>>>>>>> Thanks,
>>>>>> Sandhya
>>>>>>>>>>>> From: Sandhya Dasu <sadasu at cisco.com <mailto:sadasu at cisco.com>>
>>>>>> Reply-To: "OpenStack Development Mailing List (not for usage 
>>>>>>questions)"
>>>>>> <openstack-dev at lists.openstack.org
>>>>>> <mailto:openstack-dev at lists.openstack.org>>
>>>>>> Date: Monday, February 3, 2014 3:14 PM
>>>>>> To: "OpenStack Development Mailing List (not for usage questions)"
>>>>>> <openstack-dev at lists.openstack.org
>>>>>> <mailto:openstack-dev at lists.openstack.org>>, Irena Berezovsky 
>>>>>><irenab at mellanox.com <mailto:irenab at mellanox.com>>, "Robert Li 
>>>>>>(baoli)"
>>>>>> <baoli at cisco.com <mailto:baoli at cisco.com>>, Robert Kukura 
>>>>>><rkukura at redhat.com <mailto:rkukura at redhat.com>>, "Brian Bowen 
>>>>>>(brbowen)" <brbowen at cisco.com <mailto:brbowen at cisco.com>>
>>>>>> Subject: Re: [openstack-dev] [nova][neutron] PCI pass-through 
>>>>>>SRIOV extra hr of discussion today
>>>>>>>>>>>> Hi,
>>>>>> Since, openstack-meeting-alt seems to be in use, baoli and 
>>>>>> myself are moving to openstack-meeting. Hopefully, Bob Kukura & 
>>>>>> Irena can join soon.
>>>>>>>>>>>> Thanks,
>>>>>> Sandhya
>>>>>>>>>>>> From: Sandhya Dasu <sadasu at cisco.com <mailto:sadasu at cisco.com>>
>>>>>> Reply-To: "OpenStack Development Mailing List (not for usage 
>>>>>>questions)"
>>>>>> <openstack-dev at lists.openstack.org
>>>>>> <mailto:openstack-dev at lists.openstack.org>>
>>>>>> Date: Monday, February 3, 2014 1:26 PM
>>>>>> To: Irena Berezovsky <irenab at mellanox.com 
>>>>>><mailto:irenab at mellanox.com>>, "Robert Li (baoli)" 
>>>>>><baoli at cisco.com <mailto:baoli at cisco.com>>, Robert Kukura 
>>>>>><rkukura at redhat.com <mailto:rkukura at redhat.com>>, "OpenStack 
>>>>>>Development Mailing List (not for usage questions)"
>>>>>> <openstack-dev at lists.openstack.org
>>>>>> <mailto:openstack-dev at lists.openstack.org>>, "Brian Bowen (brbowen)"
>>>>>> <brbowen at cisco.com <mailto:brbowen at cisco.com>>
>>>>>> Subject: Re: [openstack-dev] [nova][neutron] PCI pass-through 
>>>>>>SRIOV extra hr of discussion today
>>>>>>>>>>>> Hi all,
>>>>>> Both openstack-meeting and openstack-meeting-alt are 
>>>>>> available today. Lets meet at UTC 2000 @ openstack-meeting-alt.
>>>>>>>>>>>> Thanks,
>>>>>> Sandhya
>>>>>>>>>>>> From: Irena Berezovsky <irenab at mellanox.com 
>>>>>><mailto:irenab at mellanox.com>>
>>>>>> Date: Monday, February 3, 2014 12:52 AM
>>>>>> To: Sandhya Dasu <sadasu at cisco.com <mailto:sadasu at cisco.com>>, 
>>>>>>"Robert Li (baoli)" <baoli at cisco.com <mailto:baoli at cisco.com>>, 
>>>>>>Robert Kukura <rkukura at redhat.com <mailto:rkukura at redhat.com>>, 
>>>>>>"OpenStack Development Mailing List (not for usage questions)"
>>>>>> <openstack-dev at lists.openstack.org
>>>>>> <mailto:openstack-dev at lists.openstack.org>>, "Brian Bowen (brbowen)"
>>>>>> <brbowen at cisco.com <mailto:brbowen at cisco.com>>
>>>>>> Subject: RE: [openstack-dev] [nova][neutron] PCI pass-through 
>>>>>>SRIOV on Jan. 30th
>>>>>>>>>>>> Hi Sandhya,
>>>>>>>>>>>> Can you please elaborate how do you suggest to extend the below 
>>>>>>bp for SRIOV Ports managed by different Mechanism Driver?
>>>>>>>>>>>> I am not biased to any specific direction here, just think we 
>>>>>> need common layer for managing SRIOV port at neutron, since there 
>>>>>> is a common pass between nova and neutron.
>>>>>>>>>>>>>>>>>>>>>>>> BR,
>>>>>>>>>>>> Irena
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *From:*Sandhya Dasu (sadasu) [mailto:sadasu at cisco.com]
>>>>>> *Sent:* Friday, January 31, 2014 6:46 PM
>>>>>> *To:* Irena Berezovsky; Robert Li (baoli); Robert Kukura; 
>>>>>> OpenStack Development Mailing List (not for usage questions); 
>>>>>> Brian Bowen
>>>>>> (brbowen)
>>>>>> *Subject:* Re: [openstack-dev] [nova][neutron] PCI pass-through 
>>>>>> SRIOV on Jan. 30th
>>>>>>>>>>>>>>>>>>>>>>>> Hi Irena,
>>>>>>>>>>>> I was initially looking
>>>>>> at
>>>>>>>>>>>>https://blueprints.launchpad.net/neutron/+spec/ml2-typedriver-extr
>>>>>>a
>>>>>>-po
>>>>>>r
>>>>>>t
>>>>>>-
>>>>>>info to take care of the extra information required to set up the 
>>>>>>SR-IOV port.
>>>>>> When the scope of the BP was being decided, we had very little 
>>>>>>info about our own design so I didn't give any feedback about 
>>>>>>SR-IOV ports.
>>>>>> But, I feel that this is the direction we should be going. Maybe 
>>>>>>we should target this in Juno.
>>>>>>>>>>>>>>>>>>>>>>>> Introducing, */SRIOVPortProfileMixin /*would be creating yet 
>>>>>>another way to take care of extra port config. Let me know what 
>>>>>>you think.
>>>>>>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Sandhya
>>>>>>>>>>>>>>>>>>>>>>>> *From: *Irena Berezovsky <irenab at mellanox.com 
>>>>>><mailto:irenab at mellanox.com>>
>>>>>> *Date: *Thursday, January 30, 2014 4:13 PM
>>>>>> *To: *"Robert Li (baoli)" <baoli at cisco.com 
>>>>>><mailto:baoli at cisco.com>>, Robert Kukura <rkukura at redhat.com 
>>>>>><mailto:rkukura at redhat.com>>, Sandhya Dasu <sadasu at cisco.com 
>>>>>><mailto:sadasu at cisco.com>>, "OpenStack Development Mailing List 
>>>>>>(not for usage questions)"
>>>>>> <openstack-dev at lists.openstack.org
>>>>>> <mailto:openstack-dev at lists.openstack.org>>, "Brian Bowen (brbowen)"
>>>>>> <brbowen at cisco.com <mailto:brbowen at cisco.com>>
>>>>>> *Subject: *RE: [openstack-dev] [nova][neutron] PCI pass-through 
>>>>>>SRIOV on Jan. 30th
>>>>>>>>>>>>>>>>>>>>>>>> Robert,
>>>>>>>>>>>> Thank you very much for the summary.
>>>>>>>>>>>> Please, see inline
>>>>>>>>>>>>>>>>>>>>>>>> *From:*Robert Li (baoli) [mailto:baoli at cisco.com]
>>>>>> *Sent:* Thursday, January 30, 2014 10:45 PM
>>>>>> *To:* Robert Kukura; Sandhya Dasu (sadasu); Irena Berezovsky; 
>>>>>> OpenStack Development Mailing List (not for usage questions); 
>>>>>> Brian Bowen (brbowen)
>>>>>> *Subject:* [openstack-dev] [nova][neutron] PCI pass-through SRIOV 
>>>>>> on Jan. 30th
>>>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>>> We made a lot of progress today. We agreed that:
>>>>>>>>>>>> -- vnic_type will be a top level attribute as binding:vnic_type
>>>>>>>>>>>> -- BPs:
>>>>>>>>>>>> * Irena's
>>>>>> https://blueprints.launchpad.net/neutron/+spec/ml2-request-vnic-t
>>>>>> y
>>>>>> pe
>>>>>> for binding:vnic_type
>>>>>>>>>>>> * Bob to submit a BP for binding:profile in ML2. SRIOV input 
>>>>>>info will be encapsulated in binding:profile
>>>>>>>>>>>> * Bob to submit a BP for binding:vif_details in ML2. SRIOV 
>>>>>>output info will be encapsulated in binding:vif_details, which 
>>>>>>may include other information like security parameters. For 
>>>>>>SRIOV, vlan_id and profileid are candidates.
>>>>>>>>>>>> -- new arguments for port-create will be implicit arguments.
>>>>>> Future release may make them explicit. New argument:
>>>>>> --binding:vnic_type {virtio, direct, macvtap}.
>>>>>>>>>>>> I think that currently we can make do without the profileid as an 
>>>>>> input parameter from the user. The mechanism driver will return a 
>>>>>> profileid in the vif output.
>>>>>>>>>>>>>>>>>>>>>>>> Please correct any misstatement in above.
>>>>>>>>>>>>>>>>>>>>>>>> Issues: 
>>>>>>>>>>>> -- do we need a common utils/driver for SRIOV generic parts to 
>>>>>>be used by individual Mechanism drivers that support SRIOV? More 
>>>>>>details on what would be included in this sriov utils/driver? I'm 
>>>>>>thinking that a candidate would be the helper functions to 
>>>>>>interpret the pci_slot, which is proposed as a string. Anything 
>>>>>>else in your mind?
>>>>>>>>>>>> */[IrenaB] I thought on some SRIOVPortProfileMixin to handle and 
>>>>>> persist SRIOV port related attributes/*
>>>>>>>>>>>>>>>>>>>>>>>> -- what should mechanism drivers put in binding:vif_details and 
>>>>>> how nova would use this information? as far as I see it from the 
>>>>>> code, a VIF object is created and populated based on information 
>>>>>> provided by neutron (from get network and get port)
>>>>>>>>>>>>>>>>>>>>>>>> Questions:
>>>>>>>>>>>> -- nova needs to work with both ML2 and non-ML2 plugins. For 
>>>>>>regular plugins, binding:vnic_type will not be set, I guess. Then 
>>>>>>would it be treated as a virtio type? And if a non-ML2 plugin 
>>>>>>wants to support SRIOV, would it need to implement vnic-type, 
>>>>>>binding:profile, binding:vif-details for SRIOV itself?
>>>>>>>>>>>> */[IrenaB] vnic_type will be added as an additional attribute to 
>>>>>> binding extension. For persistency it should be added in 
>>>>>> PortBindingMixin for non ML2. I didn't think to cover it as part 
>>>>>> of
>>>>>> ML2 vnic_type bp./*
>>>>>>>>>>>> */For the rest attributes, need to see what Bob plans./*
>>>>>>>>>>>>>>>>>>>>>>>> -- is a neutron agent making decision based on the 
>>>>>>binding:vif_type?
>>>>>> In that case, it makes sense for binding:vnic_type not to be 
>>>>>>exposed to agents.
>>>>>>>>>>>> */[IrenaB] vnic_type is input parameter that will eventually 
>>>>>> cause certain vif_type to be sent to GenericVIFDriver and create 
>>>>>> network interface. Neutron agents periodically scan for attached interfaces.
>>>>>> For example, OVS agent will look only for OVS interfaces, so if 
>>>>>> SRIOV interface is created, it won't be discovered by OVS 
>>>>>> agent./*
>>>>>>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Robert
>>>>>>>>>>>>>>>>>>>>>>>_______________________________________________
>>>>OpenStack-dev mailing list
>>>>OpenStack-dev at lists.openstack.org
>>>>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>>>>>_______________________________________________
>>>OpenStack-dev mailing list
>>>OpenStack-dev at lists.openstack.org
>>>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>_______________________________________________
>OpenStack-dev mailing list
>OpenStack-dev at lists.openstack.org
>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



More information about the OpenStack-dev mailing list

AltStyle によって変換されたページ (->オリジナル) /