13:00:21 #startmeeting PCI Passthrough 13:00:21 Meeting started Wed Feb 12 13:00:21 2014 UTC and is due to finish in 60 minutes. The chair is baoli. Information about MeetBot at http://wiki.debian.org/MeetBot. 13:00:22 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 13:00:24 The meeting name has been set to 'pci_passthrough' 13:00:36 hi everyone! 13:00:44 Hi rkukura 13:00:52 hi 13:01:26 wait for a couple of more minutes and see if more will join 13:01:54 hi 13:02:01 hello 13:06:58 Can we start? 13:07:17 I was hoping that Yongli He would join. But let's get started 13:07:32 Let's discuss binding:profile 13:07:52 Irenab, saw your email. 13:08:13 baoli: what is your opinion? 13:08:19 So you'd like to have "vendor_id:product_id", and "domain:bus:slot.fu" 13:08:24 Irena: missed replying yesterday 13:08:35 I sent reply now 13:09:26 baoli: I think SRIOV MD will need to filter if to handle the port binding based on vendor:product 13:09:57 I am OK with separation for 'vendor_id:product_id', 'domain:bus:slot.func' 13:10:11 irenab, I'm fine with it. 13:10:12 irenab: correct about filtering 13:10:33 are they going to be 2 seperate strings? 13:10:40 So we name the field something like: pci_vidpid, pci_slot. 13:10:53 I've read the emails too. I'll forward them to beagles, who is here from Red Hat and is much more familiar with the nova code than I am. 13:10:56 sadasu, yes, it's going to be strings 13:11:16 HI beagles 13:11:21 baoli: this makes sense to me 13:11:26 hi, baoli (and thanks rkukura) 13:11:28 Hi rkukura! 13:11:37 beagles: wellcome to the club :-) 13:11:49 welcome beagles 13:12:02 thanks! 13:12:35 So binding:profile:pci_vidpid = "vendor_id:product_id", binding:profile:pci_slot = "domain:bus:slot.func" 13:12:47 +1 13:13:12 baoli: generally agree 13:13:29 maybe need more friendly name for vidpid 13:13:42 irenab, what do you suggest? 13:13:50 I'm OK with these formats, but am not familiar enough with the nova scheduling and PCI code to know if there are any implications 13:14:54 baoli: no good ideas, maybe something like pci_vendor_spec 13:14:55 rkukura, this is input from nova to neutron while creating/updating a port. We'll get to the physical net name in a bit 13:15:21 baoli: Understood 13:15:32 let's start with your suggestion and see if better name comes up 13:15:46 pci_vender_info ? 13:15:52 just throwing it out there 13:16:02 sadasu: sounds good 13:16:02 irenab, vidpid is vendor_id_product_id but vendor_spec is kind of big. 13:16:54 ok, pci_vendor_info is better 13:17:02 pci_vidpid, pci_vendor_spec, pci_vendor_info, 3 choices so far...lets move this discussion to the thread 13:17:22 I am fine with pci_vendor_info 13:17:36 ok, let's call it pci_vendor_info 13:17:42 ok....phy_net discussion now? 13:17:53 Let's move on to the phy net name 13:18:32 rkukura: we need phy-net to be part of binding_profile bcuz of multiprovidernet extension? 13:18:35 Hi Heyongli 13:18:51 sorry, later, baoli, 13:18:56 We are just discussing the fields in binding:profile 13:18:56 rkukura: Is it also required for non SRIOV case? 13:19:09 sadasu: The ML2 model for networks is that they can have multiple segments 13:19:34 The multiprovidernet API extension lets admins create these, and see the details. 13:20:17 rkukura: ok 13:20:49 Even if we don't end up having the nova code in icehouse use multiprovidernet, I believe we should define the interaction between nova and neutron so that nova tells neutron which phyiscal_network its SR-IOV device is connected to 13:21:19 rkukura: I agree 13:21:46 The code in the mechanism driver will just need one additional line to compare this to the segment's physical_network as it iterates through the segments (see the AgentMechanismDriverBase) 13:21:53 I am fuzzy about how the diff segments would be considered for scheduling decision in nova 13:21:59 rkukura: I am not sure why nova will send physical network name to neutron on create port, we currently plan to get physicla network name from neutron 13:22:44 rkukura: agree 13:22:50 irenab: If nuetron networks never had multiple segments, this info would be redundant, but multiple segments are possible 13:23:20 sadasu: I also am fuzzy about how nova's scheduling would handle multiple segment networks 13:24:12 The filter would need to allow compute nodes that have an SR-IOV device connected to any of the physical_networks. 13:25:05 rkukura: so nova code that baoli plan, should support multisegment networks for scheduling decision? 13:25:31 But if the instance has multiple SR-IOV ports, then the filter needs to only allow compute nodes with the correct number of available devices, each connected to one of the physical_networks for a specific port's network 13:26:00 If baoli knows how to make the scheduling work, that would be great. 13:26:16 :-) 13:26:32 rkukura: by filter you mean the MD validate_port_binding sequence? 13:26:35 rkukura, as exchanged in the email, each compute node would tag their devices with the phsical network it supports 13:27:18 Then it becomes a matter of finding a compute node that satisfy: net-group = phy-net1 OR net-group = phy-net2 OR .... 13:27:19 But even if we start initially with the nova code only using the old providernet extension, I think the binding:profile:physical_network should be sent to neutron and neutron should ensure that the port binds to a segment with that physical_network 13:27:50 rkukura: agree 13:28:01 baoli: That works fine for a single port. 13:28:17 rkukura, what do you mean by single port? 13:28:19 It gets fuzzy for me when their are multiple ports, each with its own list of physical_networks 13:28:39 rkukura, it works the same way 13:28:41 baoli: The instance only connects to one SR-IOV network. 13:29:22 rkukura, can you be more specific by "connect to one SR-IOV network" 13:29:29 I guess I wasn't sure that we'd be writing logic for the scheduling filter, or trying to setup tags so that some existing filter logic would do what we need 13:29:51 If the former, I don't think handling multiple SR-IOV ports per instance should be difficult. 13:30:04 rkukura: for virtio ports, the multi segment network case will be worked by neutron only? 13:30:11 rkukura, we can come up with a new filter. 13:30:16 irenab: correct 13:30:54 rkukura, can you describe the non-sriov case? 13:31:31 rkukura: so SRIOV MD will need to update some segment related DB table? 13:32:07 baoli: By "connect to one SR-IOV network", I mean that the user has done something like "nova boot --nic [1st SR-IOV port info] --nic [2nd SR-IOV port info] ... 13:32:40 rkukura, baoli: I think this case should work 13:33:11 it should work also for mixing sriov and non-sriov ports for same VM 13:33:16 In the non-SR-IOV case with the agent-based MDs, the ML2 plugin's port binding code iterates over the registered MDs to try to bind, calling bind_port() on each 13:33:58 Within the AgentMechanismDriverBase.bind_port() implementation, it iterates over the network segments, calling check_segment_for_agent() on the derived class for each segment. 13:35:02 The 1st segment that is tried for which the agent on the node identified by binding:host_id has a mapping for the segment's physical_network is used 13:35:09 baoli, i try to catch up the multi segment network what it will impact the device extra info? 13:35:32 The agents_db has these mappings via RPCs from the agents 13:35:41 rkukura, so you'd check the vnic_type to decide to use the phy net name or iterate throught the MDs 13:36:25 baoli: you still need to iterate through the MDs 13:36:37 s/to use the phy net name/ to use the phy net name in binding:profile/ 13:37:00 We'll need to add a line of code in the existing agent-based MDs check_segment_for_agent() to make sure vnic_type == 'virtio', so it won't bind when SR-IOV is required 13:37:27 heyongli, I don't think so 13:37:44 rkukura: it should be covered by vnic_type support in patch I pushed 13:37:56 I'll check this case 13:38:04 baoli, seems all network side's work 13:38:11 I think the SR-IOV MDs will need to iterate over the segments looking for the 1st one that has network_type of 'flat' or 'vlan' and that has the physical_network specified in binding:profile:physical_network 13:38:41 heyongli, it may require enhancement to the pci filter in the scheduler 13:39:13 Then, for VLAN, the SR-IOV MDs can include the segment's segmentation_id within the binding:vif_details so that VIF driver can put that into the libvirt XML 13:39:34 baoli, does the requirement of the filter clear now? 13:39:52 rkukura: makes sense 13:40:14 sadsu: I think its the place you put the profileid for the port 13:40:17 rkukura: I think I am ok with what you said so far, will try to code it up today and ping if I have questions 13:40:42 sadasu: ok 13:40:45 Heyongli, we still need to nail it down. 13:40:55 ok, so we decide to add this in binding:profile 13:41:11 now, comes to the name of the field 13:41:18 irenab: yes, i package segmentation id into my profileid and put that into vif_details 13:41:34 so we have 3 strings on binding:profile 13:42:02 we have pci_vendor_info, pci_slot 13:42:11 binding:profile:physical_network, binding:profile:pci_vendor_info, binding:profile:pci_slot 13:42:25 irenab: +1 13:42:26 +1 from me 13:42:36 agreed 13:43:05 ok, move on to binding:vif_details 13:43:48 we would have either binding:vif_details:profileid or binding:vif_details:vlan_id for the time being? 13:44:03 I think we need to have both? 13:44:19 sadasu: +1 13:44:22 because the these will fill diff fields in the libvirt xml file 13:44:53 it will be actually for different VIF Types 13:45:11 sadasu, by "or", I mean that which field(s) is available depends on the vif types as Irenab indicated 13:45:48 another question on VIF types, do we have 2 or 4 vif types? 13:46:17 baoli, irenab: agree for the dependency on vif type 13:46:33 we have 802_1qbh and hw_veb to be implemented initially 13:46:43 direct, macvtap, virtio, hw_veb? 13:46:47 I mean do we have vnic_type impact on VIF_TYPE or use it as additional field to decide how to create libvirt net interface XML 13:47:37 802_1qbh_direct, 802_1qbh_macvtap,...? 13:48:04 irenab, vnic_type is available in the port object. I think that we'd use both vnic_type and vif_type to make that decision 13:49:17 baoli: you will need to propogate the vnic_type to VIFDriver 13:49:35 Irenab, yes 13:50:16 baoli: OK 13:50:46 I also want to add that the network xml will be a separate BP 13:51:08 for icehouse or juno? 13:51:33 baoli: Fine with me. 13:51:38 going back, vnic_type would be part of vif_details? 13:51:52 sadasu, Hopefully for icehouse, but we are too late 13:52:01 sadasu: +1 13:52:04 sadasu, vnic_type is part of the port object 13:52:18 we have 10 minutes left. I want to discuss a little bit on our IRC meeting time 13:52:28 baoli: I think it make sense to add it to VIF Details 13:52:49 how will nova access it ? 13:53:06 yes, in port object, but has to be part of vif_details too 13:53:09 baoli: go ahead 13:53:21 If vnic_type is a top-level port attribute, can the nova code just put it into the VIF object for the driver to use? 13:53:42 rkukura, that's what I thought 13:53:55 ok, do we still need daily meeting? 13:54:16 rkukura: nova will need to manage cases that vnic_type is not present in port (backward compatibility) 13:54:38 and heyongli, I'd like to continue the nova side of things from tomorrow. 13:54:44 sure 13:54:57 heyongli, cool, thanks 13:55:16 but i can not attend this on Friday 13:55:28 irenab, the default value, if not present, is virtio, right? 13:55:44 heyongli, we dont' have meeting on Friday 13:55:55 oh,,, 13:55:58 baoli: It maybe old neutron 13:56:27 irenab, are you suggesting that a NEW nova works with an OLD neutron? 13:56:28 baoli, irenab: I think it would be fine the nova VIF driver to default to virtio when the vnic_type is not present 13:56:55 Someone may need to think about what all this means for baremetal though;-) 13:57:46 Heyongli, would Yunghong join tomorrow? 13:57:47 rkukura: any chance you can take a look on the vnic_type patch? 13:58:26 baoli , i don't thinks so 13:58:37 baoli: there can be plugins that not support vnic_type 13:58:46 irenab: yes 13:58:51 Heyongli, shall we schedule a different time for nova side of things? 13:58:57 agree with rkukura on setting default on nova side if vnic_type not present 13:58:57 he is on trip 13:59:05 baoli, also fine for me 13:59:20 for nova , bp is the big problem 13:59:22 irenab: I started looking, saw Eugene's comment about DB migrations, then went off an solved that for my vif-details patch! 13:59:44 baoli: I would like to be in the loop for nova side as well 13:59:59 irenab, I understand 14:00:07 rkukura: I'll look how you solved it! 14:00:10 baoli, I would also like to be in the loop on the nova side 14:00:25 * annegentle waves 14:00:30 so see,s we currenlty continue with daily meetings? 14:00:31 So let's continue tomorrow same time, start with nova stuff. 14:00:49 #endmeeting