Port profile is generic way of Neutron to pass plugin-specific data
as dictionary. Cisco plugin uses it to pass VMEFX specific data.
Robert, correct me if I'm wrong.

thanks,
---
Isaku Yamahata <isaku.yamah...@gmail.com>


On Thu, Oct 31, 2013 at 10:21:20PM +0000,
"Jiang, Yunhong" <yunhong.ji...@intel.com> wrote:

> Robert, I think your change request for pci alias should be covered by the 
> extra infor enhancement. 
> https://blueprints.launchpad.net/nova/+spec/pci-extra-info  and Yongli is 
> working on it.
> 
> I'm not sure how the port profile is passed to the connected switch, is it a 
> Cisco VMEFX specific method or libvirt method? Sorry I'm not well on network 
> side.
> 
> --jyh
> 
> From: Robert Li (baoli) [mailto:ba...@cisco.com]
> Sent: Wednesday, October 30, 2013 10:13 AM
> To: Irena Berezovsky; Jiang, Yunhong; prashant.upadhy...@aricent.com; 
> chris.frie...@windriver.com; He, Yongli; Itzik Brown
> Cc: OpenStack Development Mailing List; Brian Bowen (brbowen); Kyle Mestery 
> (kmestery); Sandhya Dasu (sadasu)
> Subject: Re: [openstack-dev] [nova] [neutron] PCI pass-through network support
> 
> Hi,
> 
> Regarding physical network mapping,  This is what I thought.
> 
> consider the following scenarios:
>    1. a compute node with SRIOV only interfaces attached to a physical 
> network. the node is connected to one upstream switch
>    2. a compute node with both SRIOV interfaces and non-SRIOV interfaces 
> attached to a physical network. the node is connected to one upstream switch
>    3. in addition to case 1 &2, a compute node may have multiple vNICs that 
> are connected to different upstream switches.
> 
> CASE 1:
>  -- the mapping from a virtual network (in terms of neutron) to a physical 
> network is actually done by binding a port profile to a neutron port. With 
> cisco's VM-FEX, a port profile is associated with one or multiple vlans. Once 
> the neutron port is bound with this port-profile in the upstream switch, it's 
> effectively plugged into the physical network.
>  -- since the compute node is connected to one upstream switch, the existing 
> nova PCI alias will be sufficient. For example, one can boot a Nova instance 
> that is attached to a SRIOV port with the following command:
>           nova boot -flavor m1.large -image <image-id> --nic 
> net-id=<net>,pci-alias=<alias>,sriov=<direct|macvtap>,port-profile=<profile>
>     the net-id will be useful in terms of allocating IP address, enable dhcp, 
> etc that is associated with the network.
> -- the pci-alias specified in the nova boot command is used to create a PCI 
> request for scheduling purpose. a PCI device is bound to a neutron port 
> during the instance build time in the case of nova boot. Before invoking the 
> neutron API to create a port, an allocated PCI device out of a PCI alias will 
> be located from the PCI device list object. This device info among other 
> information will be sent to neutron to create the port.
> 
> CASE 2:
> -- Assume that OVS is used for the non-SRIOV interfaces. An example of 
> configuration with ovs plugin would look like:
>             bridge_mappings = physnet1:br-vmfex
>             network_vlan_ranges = physnet1:15:17
>             tenant_network_type = vlan
>     When a neutron network is created, a vlan is either allocated or 
> specified in the neutron net-create command. Attaching a physical interface 
> to the bridge (in the above example br-vmfex) is an administrative task.
> -- to create a Nova instance with non-SRIOV port:
>            nova boot -flavor m1.large -image <image-id> --nic net-id=<net>
> -- to create a Nova instance with SRIOV port:
>            nova boot -flavor m1.large -image <image-id> --nic 
> net-id=<net>,pci-alias=<alias>,sriov=<direct|macvtap>,port-profile=<profile>
>     it's essentially the same as in the first case. But since the net-id is 
> already associated with a vlan, the vlan associated with the port-profile 
> must be identical to that vlan. This has to be enforced by neutron.
>     again, since the node is connected to one upstream switch, the existing 
> nova PCI alias should be sufficient.
> 
> CASE 3:
> -- A compute node might be connected to multiple upstream switches, with each 
> being a separate network. This means SRIOV PFs/VFs are already implicitly 
> associated with physical networks. In the none-SRIOV case, a physical 
> interface is associated with a physical network by plugging it into that 
> network, and attaching this interface to the ovs bridge that represents this 
> physical network on the compute node. In the SRIOV case, we need a way to 
> group the SRIOV VFs that belong to the same physical networks. The existing 
> nova PCI alias is to facilitate PCI device allocation by associating 
> <product_id, vendor_id> with an alias name. This will no longer be 
> sufficient. But it can be enhanced to achieve our goal. For example, the PCI 
> device domain, bus (if their mapping to vNIC is fixed across boot) may be 
> added into the alias, and the alias name should be corresponding to a list of 
> tuples.
> 
> Another consideration is that a VF or PF might be used on the host for other 
> purposes. For example, it's possible for a neutron DHCP server to be bound 
> with a VF. Therefore, there needs a method to exclude some VFs from a group.  
> One way is to associate an exclude list with an alias.
> 
> The enhanced PCI alias can be used to support features other than neutron as 
> well. Essentially, a PCI alias can be defined as a group of PCI devices 
> associated with a feature. I'd think that this should be addressed with a 
> separate blueprint.
> 
> Thanks,
> Robert
> 
> On 10/30/13 12:59 AM, "Irena Berezovsky" 
> <ire...@mellanox.com<mailto:ire...@mellanox.com>> wrote:
> 
> Hi,
> Please see my answers inline
> 
> From: Jiang, Yunhong [mailto:yunhong.ji...@intel.com]
> Sent: Tuesday, October 29, 2013 10:17 PM
> To: Irena Berezovsky; Robert Li (baoli); 
> prashant.upadhy...@aricent.com<mailto:prashant.upadhy...@aricent.com>; 
> chris.frie...@windriver.com<mailto:chris.frie...@windriver.com>; He, Yongli; 
> Itzik Brown
> Cc: OpenStack Development Mailing List; Brian Bowen (brbowen); Kyle Mestery 
> (kmestery); Sandhya Dasu (sadasu)
> Subject: RE: [openstack-dev] [nova] [neutron] PCI pass-through network support
> 
> Your explanation of the virtual network and physical network is quite clear 
> and should work well. We need change nova code to achieve it, including get 
> the physical network for the virtual network, passing the physical network 
> requirement to the filter properties etc.
> [IrenaB]  The physical network is already available to nova at 
> networking/nova/api at as virtual network attribute, it then passed to the 
> VIF driver. We will push soon the fix 
> to:https://bugs.launchpad.net/nova/+bug/1239606 ; which will provide general 
> support for getting this information.
> 
> For your port method, so you mean we are sure to passing network id to 'nova 
> boot' and nova will create the port during VM boot, am I right?  Also, how 
> can nova knows that it need allocate the PCI device for the port? I'd suppose 
> that in SR-IOV NIC environment, user don't need specify the PCI requirement. 
> Instead, the PCI requirement should come from the network configuration and 
> image property. Or you think user still need passing flavor with pci request?
> [IrenaB] There are two way to apply port method. One is to pass network id on 
> nova boot and use default type as chosen in the neutron config file for vnic 
> type. Other way is to define port with required vnic type and other 
> properties if applicable, and run 'nova boot' with port id argument. Going 
> forward with nova support for PCI devices awareness, we do need a way impact 
> scheduler choice to land VM on suitable Host with available PC device that 
> has the required connectivity.
> 
> --jyh
> 
> 
> From: Irena Berezovsky [mailto:ire...@mellanox.com]
> Sent: Tuesday, October 29, 2013 3:17 AM
> To: Jiang, Yunhong; Robert Li (baoli); 
> prashant.upadhy...@aricent.com<mailto:prashant.upadhy...@aricent.com>; 
> chris.frie...@windriver.com<mailto:chris.frie...@windriver.com>; He, Yongli; 
> Itzik Brown
> Cc: OpenStack Development Mailing List; Brian Bowen (brbowen); Kyle Mestery 
> (kmestery); Sandhya Dasu (sadasu)
> Subject: RE: [openstack-dev] [nova] [neutron] PCI pass-through network support
> 
> Hi Jiang, Robert,
> IRC meeting option works for me.
> If I understand your question below, you are looking for a way to tie up 
> between requested virtual network(s) and requested PCI device(s). The way we 
> did it in our solution  is to map a provider:physical_network to an interface 
> that represents the Physical Function. Every virtual network is bound to the 
> provider:physical_network, so the PCI device should be allocated based on 
> this mapping.  We can  map a PCI alias to the provider:physical_network.
> 
> Another topic to discuss is where the mapping between neutron port and PCI 
> device should be managed. One way to solve it, is to propagate the allocated 
> PCI device details to neutron on port creation.
> In case  there is no qbg/qbh support, VF networking configuration should be 
> applied locally on the Host.
> The question is when and how to apply networking configuration on the PCI 
> device?
> We see the following options:
> 
> *         it can be done on port creation.
> 
> *         It can be done when nova VIF driver is called for vNIC plugging. 
> This will require to  have all networking configuration available to the VIF 
> driver or send request to the neutron server to obtain it.
> 
> *         It can be done by  having a dedicated L2 neutron agent on each Host 
> that scans for allocated PCI devices  and then retrieves networking 
> configuration from the server and configures the device. The agent will be 
> also responsible for managing update requests coming from the neutron server.
> 
> 
> For macvtap vNIC type assignment, the networking configuration can be applied 
> by a dedicated L2 neutron agent.
> 
> BR,
> Irena
> 
> From: Jiang, Yunhong [mailto:yunhong.ji...@intel.com]
> Sent: Tuesday, October 29, 2013 9:04 AM
> 
> To: Robert Li (baoli); Irena Berezovsky; 
> prashant.upadhy...@aricent.com<mailto:prashant.upadhy...@aricent.com>; 
> chris.frie...@windriver.com<mailto:chris.frie...@windriver.com>; He, Yongli; 
> Itzik Brown
> Cc: OpenStack Development Mailing List; Brian Bowen (brbowen); Kyle Mestery 
> (kmestery); Sandhya Dasu (sadasu)
> Subject: RE: [openstack-dev] [nova] [neutron] PCI pass-through network support
> 
> Robert, is it possible to have a IRC meeting? I'd prefer to IRC meeting 
> because it's more openstack style and also can keep the minutes clearly.
> 
> To your flow, can you give more detailed example. For example, I can consider 
> user specify the instance with -nic option specify a network id, and then how 
> nova device the requirement to the PCI device? I assume the network id should 
> define the switches that the device can connect to , but how is that 
> information translated to the PCI property requirement? Will this translation 
> happen before the nova scheduler make host decision?
> 
> Thanks
> --jyh
> 
> From: Robert Li (baoli) [mailto:ba...@cisco.com]
> Sent: Monday, October 28, 2013 12:22 PM
> To: Irena Berezovsky; 
> prashant.upadhy...@aricent.com<mailto:prashant.upadhy...@aricent.com>; Jiang, 
> Yunhong; chris.frie...@windriver.com<mailto:chris.frie...@windriver.com>; He, 
> Yongli; Itzik Brown
> Cc: OpenStack Development Mailing List; Brian Bowen (brbowen); Kyle Mestery 
> (kmestery); Sandhya Dasu (sadasu)
> Subject: Re: [openstack-dev] [nova] [neutron] PCI pass-through network support
> 
> Hi Irena,
> 
> Thank you very much for your comments. See inline.
> 
> --Robert
> 
> On 10/27/13 3:48 AM, "Irena Berezovsky" 
> <ire...@mellanox.com<mailto:ire...@mellanox.com>> wrote:
> 
> Hi Robert,
> Thank you very much for sharing the information regarding your efforts. Can 
> you please share your idea of the end to end flow? How do you suggest  to 
> bind Nova and Neutron?
> 
> The end to end flow is actually encompassed in the blueprints in a nutshell. 
> I will reiterate it in below. The binding between Nova and Neutron occurs 
> with the neutron v2 API that nova invokes in order to provision the neutron 
> services. The vif driver is responsible for plugging in an instance onto the 
> networking setup that neutron has created on the host.
> 
> Normally, one will invoke "nova boot" api with the -nic options to specify 
> the nic with which the instance will be connected to the network. It 
> currently allows net-id, fixed ip and/or port-id to be specified for the 
> option. However, it doesn't allow one to specify special networking 
> requirements for the instance. Thanks to the nova pci-passthrough work, one 
> can specify PCI passthrough device(s) in the nova flavor. But it doesn't 
> provide means to tie up these PCI devices in the case of ethernet adpators 
> with networking services. Therefore the idea is actually simple as indicated 
> by the blueprint titles, to provide means to tie up SRIOV devices with 
> neutron services. A work flow would roughly look like this for 'nova boot':
> 
>       -- Specifies networking requirements in the -nic option. Specifically 
> for SRIOV, allow the following to be specified in addition to the existing 
> required information:
>                . PCI alias
>                . direct pci-passthrough/macvtap
>                . port profileid that is compliant with 802.1Qbh
> 
>         The above information is optional. In the absence of them, the 
> existing behavior remains.
> 
>      -- if special networking requirements exist, Nova api creates PCI 
> requests in the nova instance type for scheduling purpose
> 
>      -- Nova scheduler schedules the instance based on the requested flavor 
> plus the PCI requests that are created for networking.
> 
>      -- Nova compute invokes neutron services with PCI passthrough 
> information if any
> 
>      --  Neutron performs its normal operations based on the request, such as 
> allocating a port, assigning ip addresses, etc. Specific to SRIOV, it should 
> validate the information such as profileid, and stores them in its db. It's 
> also possible to associate a port profileid with a neutron network so that 
> port profileid becomes optional in the -nic option. Neutron returns  nova the 
> port information, especially for PCI passthrough related information in the 
> port binding object. Currently, the port binding object contains the 
> following information:
>           binding:vif_type
>           binding:host_id
>           binding:profile
>           binding:capabilities
> 
>     -- nova constructs the domain xml and plug in the instance by calling the 
> vif driver. The vif driver can build up the interface xml based on the port 
> binding information.
> 
> 
> 
> 
> The blueprints you registered make sense. On Nova side, there is a need to 
> bind between requested virtual network and PCI device/interface to be 
> allocated as vNIC.
> On the Neutron side, there is a need to  support networking configuration of 
> the vNIC. Neutron should be able to identify the PCI device/macvtap interface 
> in order to apply configuration. I think it makes sense to provide neutron 
> integration via dedicated Modular Layer 2 Mechanism Driver to allow PCI 
> pass-through vNIC support along with other networking technologies.
> 
> I haven't sorted through this yet. A neutron port could be associated with a 
> PCI device or not, which is a common feature, IMHO. However, a ML2 driver may 
> be needed specific to a particular SRIOV technology.
> 
> 
> During the Havana Release, we introduced Mellanox Neutron plugin that enables 
> networking via SRIOV pass-through devices or macvtap interfaces.
> We want to integrate our solution with PCI pass-through Nova support.  I will 
> be glad to share more details if you are interested.
> 
> 
> Good to know that you already have a SRIOV implementation. I found out some 
> information online about the mlnx plugin, but need more time to get to know 
> it better. And certainly I'm interested in knowing its details.
> 
> The PCI pass-through networking support is planned to be discussed during the 
> summit: http://summit.openstack.org/cfp/details/129. I think it's worth to 
> drill down into more detailed proposal and present it during the summit, 
> especially since it impacts both nova and neutron projects.
> 
> I agree. Maybe we can steal some time in that discussion.
> 
> Would you be interested in collaboration on this effort? Would you be 
> interested to exchange more emails or set an IRC/WebEx meeting during this 
> week before the summit?
> 
> Sure. If folks want to discuss it before the summit, we can schedule a webex 
> later this week. Or otherwise, we can continue the discussion with email.
> 
> 
> 
> Regards,
> Irena
> 
> From: Robert Li (baoli) [mailto:ba...@cisco.com]
> Sent: Friday, October 25, 2013 11:16 PM
> To: prashant.upadhy...@aricent.com<mailto:prashant.upadhy...@aricent.com>; 
> Irena Berezovsky; yunhong.ji...@intel.com<mailto:yunhong.ji...@intel.com>; 
> chris.frie...@windriver.com<mailto:chris.frie...@windriver.com>; 
> yongli...@intel.com<mailto:yongli...@intel.com>
> Cc: OpenStack Development Mailing List; Brian Bowen (brbowen); Kyle Mestery 
> (kmestery); Sandhya Dasu (sadasu)
> Subject: Re: [openstack-dev] [nova] [neutron] PCI pass-through network support
> 
> Hi Irena,
> 
> This is Robert Li from Cisco Systems. Recently, I was tasked to investigate 
> such support for Cisco's systems that support VM-FEX, which is a SRIOV 
> technology supporting 802-1Qbh. I was able to bring up nova instances with 
> SRIOV interfaces, and establish networking in between the instances that 
> employes the SRIOV interfaces. Certainly, this was accomplished with hacking 
> and some manual intervention. Based on this experience and my study with the 
> two existing nova pci-passthrough blueprints that have been implemented and 
> committed into Havana 
> (https://blueprints.launchpad.net/nova/+spec/pci-passthrough-base and
> https://blueprints.launchpad.net/nova/+spec/pci-passthrough-libvirt),  I 
> registered a couple of blueprints (one on Nova side, the other on the Neutron 
> side):
> 
> https://blueprints.launchpad.net/nova/+spec/pci-passthrough-sriov
> https://blueprints.launchpad.net/neutron/+spec/pci-passthrough-sriov
> 
> in order to address SRIOV support in openstack.
> 
> Please take a look at them and see if they make sense, and let me know any 
> comments and questions. We can also discuss this in the summit, I suppose.
> 
> I noticed that there is another thread on this topic, so copy those folks  
> from that thread as well.
> 
> thanks,
> Robert
> 
> On 10/16/13 4:32 PM, "Irena Berezovsky" 
> <ire...@mellanox.com<mailto:ire...@mellanox.com>> wrote:
> 
> Hi,
> As one of the next steps for PCI pass-through I would like to discuss is the 
> support for PCI pass-through vNIC.
> While nova takes care of PCI pass-through device resources  management and 
> VIF settings, neutron should manage their networking configuration.
> I would like to register asummit proposal to discuss the support for PCI 
> pass-through networking.
> I am not sure what would be the right topic to discuss the PCI pass-through 
> networking, since it involve both nova and neutron.
> There is already a session registered by Yongli on nova topic to discuss the 
> PCI pass-through next steps.
> I think PCI pass-through networking is quite a big topic and it worth to have 
> a separate discussion.
> Is there any other people who are interested to discuss it and share their 
> thoughts and experience?
> 
> Regards,
> Irena
> 

> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


-- 
Isaku Yamahata <isaku.yamah...@gmail.com>

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to