14:02:23 #startmeeting neutron_qos 14:02:24 Meeting started Wed Sep 16 14:02:23 2015 UTC and is due to finish in 60 minutes. The chair is ajo. Information about MeetBot at http://wiki.debian.org/MeetBot. 14:02:25 Hi 14:02:26 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 14:02:28 The meeting name has been set to 'neutron_qos' 14:02:43 Thanks everybody for joining, specially thanks to the nova folks for joining us: ndipanov , vladikr and johnthetubaguy 14:03:00 hi all 14:03:04 We need to make some progress in a couple of topics regarding nova-neutron integration for QoS 14:03:45 #topic nova-neutron integration : flavours?, or how do we do it 14:04:19 First one, we need some way to make sure we can have some sort of association from the type of instance tenant picks to the QoS level he gets, 14:04:38 or something equivalent, I know johnthetubaguy commented something about vif flavours? (could be?) but I'm unaware of what did you mean with that 14:04:50 is that something gestating on the nova side? 14:05:00 we may need it for stuff outside qos btw, like jumbo 14:05:08 no, I was thinking on the neutron side 14:05:16 really, I am thinking about volumes 14:05:27 with volumes you have your SSD vs spinning disk volumes 14:05:40 and they have have different QoS setup 14:05:53 and you pick what happens by selecting a volume type owned by cinder 14:06:06 I have always liked the idea of something similar in Neutron 14:06:10 johnthetubaguy, ack, may be we could setup something like port flavors speciying the level of Qos + the type of nic, for example, and nova could reference that from it's own flavors in a key? 14:06:21 ideally no 14:06:30 QoS policies are quite like flavors, but, dont' specify the type of nic, for example 14:06:30 users are meant to create ports, then pass them into nova 14:06:43 when they create the port, they need to set QoS 14:06:54 johnthetubaguy, doesn't nova create the ports now? 14:07:04 I mean, you can specify a port id, but you can specify the network 14:07:07 ajo: in the happy case, it does not 14:07:28 we have some code we want to deprecate that can create ports for you, mostly for backwards compatiblitiy 14:07:35 now thats an extreme view of the world 14:07:39 johnthetubaguy, unless we enforce nova not to be able to do that, it's out of our control a bit, or nova may need to receive the "flavor" of port it will create 14:07:50 net-id=xxxx,port-flavor=xxxx (or qos-policy=xxxxx) 14:07:56 but in theory, we build for that world, then add any sugar that you need to make that true 14:08:09 johnthetubaguy: so basically you suggest to have no integration, and allow users to assign QoS policies to ports prior to passing them to nova, basically smth that we already have 14:08:10 Nova would just use a default port flavor, I would assume 14:08:42 ihrachys: so if that works already today, thats interesting 14:08:43 ihrachys, in that case, we miss a way in QoS to enforce default policies to ports per tenant (via Role based access control, I guess) 14:08:47 we need that anyway 14:09:04 johnthetubaguy, or have one per tenant, 14:09:19 ajo: it can be similar to default sec groups 14:09:23 ok, at worst, we could just pass the policy id / or flavor, along with the net-id to nova, if that works... 14:09:36 or we don't , encouraging the people to create the port first 14:09:44 well ideally neutron knows about the default volume type, and just deals with it when we don't specify one 14:09:57 ajo: I actually think that preparing port for nova is the ideal situation, but some people complain about complexity behind neutron flow 14:10:00 johnthetubaguy, ok, I guess that makes sense, 14:10:10 but if you want something other than the default, yeah, I would prefere them to create things up front really 14:10:10 and when you do need to specify? you need to create a port first? 14:10:14 not sure adding required explicit port allocation step will help 14:10:34 ndipanov, yes, that's what johnthetubaguy means 14:10:46 and I agree with ihrachys, we grow complexity of the user, but... 14:10:56 only if they want to move to a non-default policy 14:11:09 that said, I believe all complexity concerns should be hidden on client layer, not API 14:11:25 so if you want to do security groups, today, you create your ports upfront, else crazy things happen, as I understand it 14:11:29 and if we can live with decoupled nova and neutron, then I am good to stay lazy 14:11:34 so I don't see any change here with qos 14:11:43 decoupling is better 14:11:54 so my thing is more, we assume decoupled 14:11:57 then why do you suggest integration in the first place? :) 14:12:02 may be we need a third project to provide "flavors" ;) 14:12:17 since an instance is comprised by volume, net, compute, etc... 14:12:18 maybe it should be part of the openstack client project 14:12:19 ;) 14:12:24 * ajo adds more complexity ;D 14:12:30 ajo: so thats how glance started, but lets not go there 14:12:54 johnthetubaguy, I'm partly joking, but worried about usability 14:13:05 so the idea, originally was that heat would know about ports and servers, and help tie those together, its not really turned out that way 14:13:13 johnthetubaguy, may be it's, as ihar said, something to be left to the client (horizon, cmdline..) 14:13:24 so here is the thing... 14:13:34 my view is that we should make it work with creating ports up front 14:13:43 yeah, heat did not prove itself successful :( 14:13:45 if we need something else, then maybe, but that comes second 14:13:59 ihrachys: not sure, I think its doing some good stuff, just not really that 14:14:09 johnthetubaguy: with ports prepared, it works now 14:14:20 johnthetubaguy, that has to be assumed, it's on our agenda for M 14:14:31 johnthetubaguy: re heat - more about expectations of universal adoption 14:14:42 johnthetubaguy, but we're looking for the plan forward in coordination with nova. Will that work for users, do they need something more? 14:14:42 ihrachys: but it sounds like its two granular, and there are no flavors, quotas and policy? 14:15:11 ihrachys: ah, thats fair 14:15:14 johnthetubaguy: there are qos policies that are attachable to ports 14:15:24 ihrachys: OK, so maybe we are there then 14:15:36 so what happens by default if I don't set any QoS policy? 14:15:39 johnthetubaguy: if you mean neutron should have a global flavor that would be superset of qos policies and something else, then yes, it's not there 14:15:40 its just open? 14:15:41 johnthetubaguy, we're only missing: when you create a port, what's the default policy for a given tenant 14:15:58 johnthetubaguy: if no policy is set, no policy is applied 14:16:02 or.. a flavor if we make a superset containing more details about ports 14:16:08 (vnic type, qos policy, etc..) 14:16:09 johnthetubaguy: there is no modifiable default policy 14:16:12 right, well, surely it might be per network? in the provider network case? 14:16:37 I think we should consider how default policies work when you create your ports before starting your VM, basically 14:16:43 we can attach policies to networks already 14:16:50 and ports inherit it 14:17:09 true 14:17:20 ihrachys: cool, so maybe what we need is a default policy that gets attached to user created networks? 14:17:26 I will also side note that neutron still does not have modifiable sec groups 14:17:31 although that sounds a little useless 14:17:38 so here, we are consistent in not supporting it :) 14:17:40 ok 14:17:45 here we have two points of view 14:17:51 1) all left to port creation and neutron control 14:18:11 and so controlled by the client (in regards of flavor relations if user wants that) 14:18:35 2) the port flavor/qos_policy key to flavors, so nova can tell neutron 14:18:42 but for 1) you do have nice controlled defaults, which should just work when nova creates the ports right? 14:18:52 so here is the problem... 14:18:58 you pick flavor 7 14:19:06 it says QoS policy A 14:19:18 but you pass in your own port with QoS policy B 14:19:21 now what does that mean? 14:19:47 leaving this all in Nova really side steps that issue 14:19:50 oops 14:19:54 that's an interesting note 14:19:59 leaving this all in Neutron side steps that 14:20:10 yes, 14:20:20 that's a fair point, I was just thinking of that 14:20:33 even if nova changed the QoS, user could move it to a different one if he wanted / had access to it 14:20:55 so may be, quotas, enforcement and defaults should be left to neutron, 14:21:01 and make horizon aware of it 14:21:26 with some mechanism to be able to specify access & default policies for tenant network / port creation 14:21:46 does that sound reasonable? 14:22:21 I know irenab_ was rising the this topic of flavours initially, so irenab_ irenab , you may want to read the log later and ping us via mail if you see any concern 14:22:40 yes, it seems to me no integration is actually needed 14:22:51 Sure, will follow up later 14:23:02 +1 johnthetubaguy , thanks for discussing this with us, the feedback has been very valuable 14:23:10 so, let's move on 14:23:33 #topic nova-neutron integration: bandwidth guarantees, and overcommitments... 14:23:47 vladikr, ndipanov ^ 14:23:52 how do we handle that? 14:23:57 well 14:24:05 we can set a policy that says "guarantee 1Gbps on this port" 14:24:18 it's tricky really 14:24:24 but if it's plugged to the wrong compute node, or the wrong PF, it won't work 14:24:46 ndipanov: nothing is easy lately :) 14:24:48 so we are only assuming this when using physical ports (VFs) 14:25:01 PFs 14:25:02 ndipanov: our goal is to do it also for virtio ports 14:25:10 ah 14:25:14 but I understand that'd require neutron coordination 14:25:15 ajo I thought so 14:25:25 Are you talking about sriov only? 14:25:26 as neutron knows what's the upstream port/route/tunnel for a network 14:25:48 Irenab_: we may solve both, may be not both at the same time, as requisites and interactions could be different 14:26:02 ok so the way nova scheduling currently works is the compute host publishes it's data about available resources 14:26:13 so available bandwith would have to be published as well 14:26:14 ndipanov, aha 14:26:36 ndipanov, and also, be known internally on nova-compute for the PF/VFs relationship 14:26:40 So nova will do bw bookkeeping? 14:26:43 johnthetubaguy, similar things keep popping up with cinder (like proximity to volumes etc) 14:26:49 may be you have 20G total in the compute, but 10G is to one PF, 10G is to other PF 14:26:53 do you remember anything about that? 14:27:11 ajo, right but that's a problem of structuring the data 14:27:22 ndipanov, right, that's just internal to nova-compute 14:27:33 what I am getting at is that we have no way of letting nova-compute know any of this in the first place right now 14:28:01 ndipanov, what do you mean?, letting it know the available BW ? 14:28:06 so what ndipanov, I see it as something our scheduler refactoring efforts are heading towards 14:28:06 yeah 14:28:30 oops, s/what ndipanov/what ndipanov said/ 14:28:36 johnthetubaguy, well yes :) eventually 14:29:15 ok, so we may need to provide something to nova compute to discover the available bandwidth on the PFs, it's a matter of inspecting the link, or... otherwise get it given in config 14:29:27 ajo: once we add network segments, and I particularly interested in IP address availability, for example, but thats an asside 14:29:30 I suspect for virtio's it's going to be harder 14:29:32 ajo, but doesn't that get complicated with qos? 14:29:37 since neutron may need to publish that info back to nova somehow 14:30:00 ajo, currently there is no such an interface at all 14:30:07 ndipanov, I know 14:30:13 ndipanov, yes, then we put qos in place, and... 14:30:20 yeah, XenAPI has some basic BW reporting stuff, but I wouldn't say its a great pattern to copy for libvirt 14:30:20 there are several ways to think about it 14:30:21 ndipanov, nova may need to be aware of what the policy says 14:30:34 ndipanov, or neutron needs to publish the policy to nova in a way nova understands 14:30:36 that is more usage focused, rather than scheduling 14:30:44 or just the constrains out of the policy... 14:30:47 johnthetubaguy, but it affects it no? 14:31:20 ndipanov: not the way we have things setup at least 14:31:49 ajo, so in an ideal world - (global?) scheduler runs a neutron plugin that neutron agents publish data to, and none of this code lives in nova 14:31:57 we are far away from that world atm 14:32:10 ndipanov, ok, that sounds like a good ideal 14:32:12 ndipanov: +1 to both of those comments 14:32:33 ndipanov, so neutron publishes a plugin, via stevedore or whatever... and the scheduler just takes it, and uses it 14:32:36 I always like to keep one eye to the future and one to the present, so its worth keeping that all in mind 14:32:46 yes that would be ideal 14:33:04 but that is blocked by a lot of work that needs to be done to split out the scheduler 14:33:04 may be, it's better to tackle the SR-IOV thing first 14:33:09 as it's the simplest case 14:33:19 "simplest" 14:33:26 yes - sr-iov is simpler because it is already handled by nova-compute 14:33:47 ndipanov, you may only need to be aware of what "min bandwidth constraint" do we have on a certain port 14:34:18 as in - the least amount of bandwith we can provide but we may be able to do more? 14:34:32 ndipanov, isn't sbauza working on those scheduler improvements? or was he? 14:34:46 ajo, he is but they are not easy with the current constraints nova has 14:34:57 and they are not easy in general 14:35:01 ndipanov: let me re-read your phrase 14:35:23 ndipanov: correct 14:35:52 so yeah that would be possible in some fashion for sriov ports but only for them without the scheduler work 14:35:57 said that, neutron may need to somehow know that other ports on the same PF are min: restricted, and cap a max: on the unrestricted ports <- moshele 14:36:01 Irenab_ ^ 14:36:10 there is one more way to do it 14:36:15 and johnthetubaguy may disagree 14:36:30 ndipanov: which one? 14:36:35 * ajo listens :) 14:36:59 we had a notion of an extensible resource tracker, where you would be able to add your own resource plugins to nova 14:37:00 In general i think neutron should be responsible for bookkeeping 14:37:19 Irenab_: yes, that's why I like the point of a neutron plugin inside the nova scheduler :) 14:37:21 the idea was interesting but the implementation was lacking because the general code has very loose apis 14:37:41 but there is some work now to make those APIs stable and ... well useful 14:37:46 +1 on this ajo 14:37:54 ndipanov, can you link to those APIs? 14:37:56 ndipanov: I guess the summary of my position is: we need to make progress in the short term, if we agree the longer term plan, I am fine with a bit of compromise in the short term 14:38:08 johnthetubaguy: +1 14:38:15 well this is a compromise because we'd wait for jaypipes_ 's work 14:38:25 * ndipanov looks for the patches 14:38:50 thanks ndipanov 14:39:11 https://review.openstack.org/#/c/128992 14:39:26 so this is the first patch 14:39:46 this is still not ideal because nova has to own a lot of code that is basically a neutron implementation detail 14:39:56 but at least it will have a well defined boundary within nova 14:40:02 #link https://review.openstack.org/#/c/128992 14:40:03 (I think) 14:40:07 johnthetubaguy, ^ 14:40:10 ? 14:40:20 does that sound not entirely false to you? 14:41:04 Ok, I have 772 LOCs to read :) 14:41:30 Same here 😊 14:41:35 or at least ~300 not counting tests :) 14:41:51 ajo read the related BP instead maybe 14:41:56 * johnthetubaguy looks 14:42:04 yeah, ndipanov , that's a better idea in fact 14:42:42 #link https://blueprints.launchpad.net/nova/+spec/resource-objects 14:43:04 Ajo: what about overcommitment ? 14:43:23 Irenab_, that's what we were talking about, preventing it 14:43:28 ndipanov: yeah, thats stuff is close now, seems worth following that 14:43:59 ajo, so that would give you the place to do it in nova that nova folks won't hate 14:44:20 I wonder if it always desired to be precented or should ve some provider policy 14:44:24 ajo, but than we would want to have a unified view for both virt and phys ports 14:44:52 ndipanov, yes, 14:44:58 that's the longer term plan 14:45:02 irenab_ not sure I follow 14:45:27 ndipanov: for virt ports, neutron needs to feed data 14:45:49 VM can be created and paused, other can be active 14:45:57 ndipanov, another extra option (on the compute low level side), could be letting neutron decide the exact pci address/based on PF capabilities 14:46:14 and there's where the new os-libvif thing could come in 14:46:27 * ajo looks for the link johnthetubaguy provided him this morning 14:46:46 #link http://lists.openstack.org/pipermail/openstack-dev/2015-June/067783.html 14:47:36 maybe, I see the vif lib first making it easier to add support for driver XYZ vif 14:48:54 ndipanov, is it possible/reasonable to have some kind of rfe/spec for M in regards of the basic min-bandwidth guarantees/not overcommitment in nova? 14:49:10 johnthetubaguy ^ ? 14:49:28 talking of SR-IOV only 14:50:09 not asking for commitments, just trying to understand where do we stand 14:50:18 ajo, yes - I actually proposed a session for SR-IOV 14:50:31 ah, true, that could be in the same session 14:50:32 for the summit 14:50:50 well maybe - this touches on several more things like scheduling 14:50:55 yeah, 14:51:26 may be needs a separate one, yikes, too bad I can't go this year :/ 14:51:47 ndipanov: I proposed a cross project session for neutron 14:51:47 and I am not too keen on sriov bandwith being a different thing than other bandwidth but such is life 14:51:48 regarding this 14:51:56 ajo, ok cool that makes sense 14:52:05 let me find the link 14:52:56 #link https://etherpad.openstack.org/p/neutron-mitaka-designsummit 14:53:04 4. 14:53:33 ndipanov: i agree, it should be general approach to handle different vif types 14:54:01 I just removed the "port defaults per tenant / RBAC" part from the etherpad 14:54:11 makes no sense after our discussion and the other proposed solution 14:54:32 yeah so it may make sense to be part of the vif lib 14:54:35 Irenab_: ping me back if you believe the agreement we made misses something important when you read the minutes 14:55:01 and then nova compute would just call it's reporting method when reporting it's own resources 14:55:15 Ajo: will do 14:55:31 but that seems like it can get arbitrarily complicated ... 14:55:49 ndipanov, yep 14:55:53 anyway - let's conclude - did you get some info to go on ajo ? 14:56:03 ndipanov, we either add realtime interactions, or reporting so the other side can act quickly 14:56:25 ndipanov: lots of information to digest 14:56:45 ok ping me or johnthetubaguy on -nova if something is unclear I guess 14:56:46 ndipanov, let us digest, and then let's organize more meetings 14:56:52 yay meetings! 14:57:02 ndipanov ':D let's minimize them 14:57:23 ndipanov: if we had powerpoints this would be solved already.. (in the powerpoint) 14:57:36 I love powerpoints 14:57:37 s/powerpoint/presentations/g 14:57:38 We can collaborate on etherpad 14:57:44 0 bugs reported to date 14:57:48 ndipanov: lol 14:58:03 Irenab_, what was the etherpad link you proposed initially? 14:58:07 and let's close the meeting, 2 minutes to go 14:58:24 I guess we can update that etherpad with the conclussions... 14:58:55 Will send you once get tocomputer 14:59:00 ok :) 14:59:04 thanks everybody for joining 14:59:05 Impossible from phone .... 14:59:14 and providing feedback on the topic 14:59:19 #endmeeting