<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 15 September 2015 at 10:02, Doug Hellmann <span dir="ltr"><<a href="mailto:doug@doughellmann.com" target="_blank">doug@doughellmann.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Excerpts from Armando M.'s message of 2015-09-15 09:30:35 -0700:<br>
<div><div>> On 15 September 2015 at 08:04, Monty Taylor <<a href="mailto:mordred@inaugust.com" target="_blank">mordred@inaugust.com</a>> wrote:<br>
><br>
> > Hey all!<br>
> ><br>
> > If any of you have ever gotten drunk with me, you'll know I hate floating<br>
> > IPs more than I hate being stabbed in the face with a very angry fish.<br>
> ><br>
> > However, that doesn't really matter. What should matter is "what is the<br>
> > most sane thing we can do for our users"<br>
> ><br>
> > As you might have seen in the glance thread, I have a bunch of OpenStack<br>
> > public cloud accounts. Since I wrote that email this morning, I've added<br>
> > more - so we're up to 13.<br>
> ><br>
> > auro<br>
> > citycloud<br>
> > datacentred<br>
> > dreamhost<br>
> > elastx<br>
> > entercloudsuite<br>
> > hp<br>
> > ovh<br>
> > rackspace<br>
> > runabove<br>
> > ultimum<br>
> > unitedstack<br>
> > vexxhost<br>
> ><br>
> > Of those public clouds, 5 of them require you to use a floating IP to get<br>
> > an outbound address, the others directly attach you to the public network.<br>
> > Most of those 8 allow you to create a private network, to boot vms on the<br>
> > private network, and ALSO to create a router with a gateway and put<br>
> > floating IPs on your private ip'd machines if you choose.<br>
> ><br>
> > Which brings me to the suggestion I'd like to make.<br>
> ><br>
> > Instead of having our default in devstack and our default when we talk<br>
> > about things be "you boot a VM and you put a floating IP on it" - which<br>
> > solves one of the two usage models - how about:<br>
> ><br>
> > - Cloud has a shared: True, external:routable: True neutron network. I<br>
> > don't care what it's called  ext-net, public, whatever. the "shared" part<br>
> > is the key, that's the part that lets someone boot a vm on it directly.<br>
> ><br>
> > - Each person can then make a private network, router, gateway, etc. and<br>
> > get floating-ips from the same public network if they prefer that model.<br>
> ><br>
> > Are there any good reasons to not push to get all of the public networks<br>
> > marked as "shared"?<br>
> ><br>
><br>
> The reason is simple: not every cloud deployment is the same: private is<br>
> different from public and even within the same cloud model, the network<br>
> topology may vary greatly.<br>
><br>
> Perhaps Neutron fails in the sense that it provides you with too much<br>
> choice, and perhaps we have to standardize on the type of networking<br>
> profile expected by a user of OpenStack public clouds before making changes<br>
> that would fragment this landscape even further.<br>
><br>
> If you are advocating for more flexibility without limiting the existing<br>
> one, we're only making the problem worse.<br>
<br>
</div></div>As with the Glance image upload API discussion, this is an example<br>
of an extremely common use case that is either complex for the end<br>
user or for which they have to know something about the deployment<br>
in order to do it at all. The usability of an OpenStack cloud running<br>
neutron would be enhanced greatly if there was a simple, clear, way<br>
for the user to get a new VM with a public IP on any cloud without<br>
multiple steps on their part. </blockquote><div><br></div><div>I agree on this last statement wholeheartedly, but we gotta be careful on how we do it, because there are implications on scalability and security.</div><div><br></div><div>Today Neutron provides a few network deployment models [1,2,3,4,5]. You can mix and match, with the only caveat is that this stuff must be pre-provisioned.</div><div><br></div><div>Now the way I understand Monty's request is that in certain deployments you'd like automatic provisioning. We can look into that, as we have in blueprint [6], but we must recognize that hint-less requests can be hard to achieve because the way the network service is provided can vary from system to system...a lot.</div><div><br></div><div>Defaults are useful, but wrong defaults are worse. A system can make an educated guess as of the user's intention, in lieu of that an operator can force the choice for the user, but if that one is hard too, then the only choice is to defer to the user.</div><div><br></div><div>So this boils down to: in light of the possible ways of providing VM connectivity, how can we make a choice on the user's behalf? Can we assume that he/she always want a publicly facing VM connected to Internet? The answer is 'no'.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">There are a lot of ways to implement<br>
that "under the hood" (what you call "networking profile" above)<br>
but the users don't care about "under the hood" so we should provide<br>
a way for them to ignore it. That's *not* the same as saying we<br>
should only support one profile. Think about the API from the use<br>
case perspective, and build it so if there are different deployment<br>
configurations available, the right action can be taken based on<br>
the deployment choices made without the user providing any hints.<br></blockquote><div><br></div><div>[1] <a href="http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-single-flat.html">http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-single-flat.html</a></div><div>[2] <a href="http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-multi-flat.html">http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-multi-flat.html</a></div><div>[3] <a href="http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-mixed.html">http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-mixed.html</a></div><div>[4] <a href="http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-single-router.html">http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-single-router.html</a></div><div>[5] <a href="http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-tenant-router.html">http://docs.openstack.org/havana/install-guide/install/apt/content/section_use-cases-tenant-router.html</a></div><div>[6] <a href="https://blueprints.launchpad.net/neutron/+spec/get-me-a-network" target="_blank" style="font-size:12.8px">https://blueprints.launchpad.net/neutron/+spec/get-me-a-network</a> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<span><font color="#888888"><br>
Doug<br>
</font></span><div><div><br>
><br>
> ><br>
> > OH - well, one thing - that's that once there are two networks in an<br>
> > account you have to specify which one. This is really painful in nova<br>
> > clent. Say, for instance, you have a public network called "public" and a<br>
> > private network called "private" ...<br>
> ><br>
> > You can't just say "nova boot --network=public" - nope, you need to say<br>
> > "nova boot --nics net-id=$uuid_of_my_public_network"<br>
> ><br>
> > So I'd suggest 2 more things;<br>
> ><br>
> > a) an update to python-novaclient to allow a named network to be passed to<br>
> > satisfy the "you have more than one network" - the nics argument is still<br>
> > useful for more complex things<br>
> ><br>
> > b) ability to say "vms in my cloud should default to being booted on the<br>
> > public network" or "vms in my cloud should default to being booted on a<br>
> > network owned by the user"<br>
> ><br>
> > Thoughts?<br>
> ><br>
><br>
> As I implied earlier, I am not sure how healthy this choice is. As a user<br>
> of multiple clouds I may end up having a different user experience based on<br>
> which cloud I am using...I thought you were partially complaining about<br>
> lack of consistency?<br>
><br>
> ><br>
> > Monty<br>
> ><br>
> > __________________________________________________________________________<br>
> > OpenStack Development Mailing List (not for usage questions)<br>
> > Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
> > <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> ><br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div></div></blockquote></div><br></div></div>