<div dir="ltr"><div class="gmail_quote">On Mon Feb 16 2015 at 9:37:22 PM Kevin Benton <<a href="mailto:blak111@gmail.com">blak111@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><span style="font-size:13.3333339691162px">></span><span style="font-size:13.3333339691162px">It's basically very much like floating IPs, only you're handing out a sub-slice of a floating-IP to each machine - if you like.</span><br></div></div><div dir="ltr"><div><span style="font-size:13.3333339691162px"><br></span></div></div><div dir="ltr"><div><span style="font-size:13.3333339691162px">T</span><span style="font-size:13.3333339691162px">his requires participation of the upstream router (L4 policy routing pointing to next hops that distinguish each L3 agent) or intervention on the switches between the router an L3 agents (a few OpenFlow rules would make this simple). Both approaches need to adapt to L3 agent changes so static configuration is not adequate. Unfortunately, both of these are outside of the control of Neutron so I don't see an easy way to push this state in a generic fashion.</span></div></div></blockquote><div><br></div><div>(Just to continue this thought experiment)</div><div><br></div><div>The L3 agents that would need to forward ingress traffic to the right hypervisor only need to know which [IP+port range] has been assigned to which hypervisor.  This information is fairly static, so these forwarders are effectively stateless and can be trivially replicated to deal with the desired ingress volume and reliability.</div><div><br></div><div>When I've built similar systems in the past, the easy way to interface with the rest of the provider network was to use whatever dynamic routing protocol was already in use, and just advertise multiple ECMP routes for the SNAT source IPs from the forwarders (ideally advertising from the forwarders themselves, so they stop if there's a connectivity issue).  All the "cleverness" then happens on the forwarding hosts (we could call them "L3 agents").  It's simple and works well, but I agree we have no precedent in neutron at present.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><div class="gmail_quote">On Mon, Feb 16, 2015 at 12:33 AM, Robert Collins <span dir="ltr"><<a href="mailto:robertc@robertcollins.net" target="_blank">robertc@robertcollins.net</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Or a pool of SNAT addresses ~= to the size of the hypervisor count.</blockquote></div></div></blockquote><div><br></div><div>Oh yeah. If we can afford to assign a unique SNAT address per hypervisor then we're done - at that point it really is just like floating-ips.</div><div><br></div><div> - Gus</div></div></div>