<div dir="ltr"><div>With TLS+ALPN the use case is very simple. The protocol is negotiated during the handshake. Then the existing TCP connection is reused and the client starts to send Hot Rod binary bits through the wire. Sadly, TLS adds some significant overhead to the transmission.<br></div><div><br></div><div>With HTTP/1.1 Upgrade it&#39;s a bit more complicated. The Upgrade request might issued by the client as well as by the server. Each of the parties can ignore the request if it doesn&#39;t recognize it (or doesn&#39;t support protocols proposed by the other side). The more I think about this, the more I lean towards to server initiated upgrade requests. This way, only clients which supports the upgrade will react to it. It still needs some more thought...</div><div><br></div><div>Of course you are right, some additional code will need to be added to the clients to support switching protocols. The good news is that you won&#39;t be forced to use the Single Endpoint. You may want to expose our old, good Hot Rod Endpoint and forget about all this switching complexity.</div><div><br></div><div>Regarding to network hops - no, there is no additional network hops. The router component simply identifies the incoming request and plugs proper Netty Handler stack to it. Here&#39;s an example how it is done with multi-tenancy based on SNI [1]. </div><div><br></div><div>[1] <a href="https://github.com/infinispan/infinispan/blob/master/server/router/src/main/java/org/infinispan/server/router/router/impl/hotrod/handlers/SniRouteHandler.java#L48-L61">https://github.com/infinispan/infinispan/blob/master/server/router/src/main/java/org/infinispan/server/router/router/impl/hotrod/handlers/SniRouteHandler.java#L48-L61</a></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Mar 31, 2017 at 2:22 PM Tristan Tarrant &lt;<a href="mailto:ttarrant@redhat.com">ttarrant@redhat.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">No, once the connection is established, I believe the netty pipeline can<br class="gmail_msg">
be trimmed to the necessary elements.<br class="gmail_msg">
<br class="gmail_msg">
Tristan<br class="gmail_msg">
<br class="gmail_msg">
On 31/03/2017 13:57, Gustavo Fernandes wrote:<br class="gmail_msg">
&gt; On Fri, Mar 31, 2017 at 11:02 AM, Tristan Tarrant &lt;<a href="mailto:ttarrant@redhat.com" class="gmail_msg" target="_blank">ttarrant@redhat.com</a><br class="gmail_msg">
&gt; &lt;mailto:<a href="mailto:ttarrant@redhat.com" class="gmail_msg" target="_blank">ttarrant@redhat.com</a>&gt;&gt; wrote:<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;     You understood incorrectly.<br class="gmail_msg">
&gt;     The only change to the Hot Rod clients is that, if they get a 400 error<br class="gmail_msg">
&gt;     from a HR PING request, they will initiate an upgrade to Hot Rod and<br class="gmail_msg">
&gt;     then proceed with the usual Hot Rod protocol after that.<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; Thanks for the clarification. Still, after the HR protocol is<br class="gmail_msg">
&gt; negotiated, communication will go<br class="gmail_msg">
&gt; through a router, thus adding an extra hop?<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; Gustavo<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;     Tristan<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;     On 31/03/2017 11:58, Gustavo Fernandes wrote:<br class="gmail_msg">
&gt;     &gt; Hi Sebastian,<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt; If I understood it correctly, all the Hot Rod clients will be changed<br class="gmail_msg">
&gt;     &gt; from using:<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt; - Binary over TCP, circa 40 bytes header, no hops to contact the server,<br class="gmail_msg">
&gt;     &gt; no protocol negotiation, no encryption (default)<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt; to<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt; - HTTP/2 with SSL, protocol upgrade negotiation, and a hop (router) to<br class="gmail_msg">
&gt;     &gt; connect to the server.<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt; Any idea of how significant would be this extra overhead introduced?<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt; Thanks,<br class="gmail_msg">
&gt;     &gt; Gustavo<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt; On Thu, Mar 30, 2017 at 2:01 PM, Sebastian Laskawiec<br class="gmail_msg">
&gt;      &gt; &lt;<a href="mailto:slaskawi@redhat.com" class="gmail_msg" target="_blank">slaskawi@redhat.com</a> &lt;mailto:<a href="mailto:slaskawi@redhat.com" class="gmail_msg" target="_blank">slaskawi@redhat.com</a>&gt;<br class="gmail_msg">
&gt;     &lt;mailto:<a href="mailto:slaskawi@redhat.com" class="gmail_msg" target="_blank">slaskawi@redhat.com</a> &lt;mailto:<a href="mailto:slaskawi@redhat.com" class="gmail_msg" target="_blank">slaskawi@redhat.com</a>&gt;&gt;&gt; wrote:<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;      &gt;     Hey!<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;      &gt;     My plan is to start working on a Single Point support for<br class="gmail_msg">
&gt;     Infinispan<br class="gmail_msg">
&gt;      &gt;     Server very soon and I prepared a design:<br class="gmail_msg">
&gt;      &gt; <a href="https://github.com/infinispan/infinispan/pull/5041" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/infinispan/infinispan/pull/5041</a><br class="gmail_msg">
&gt;     &lt;<a href="https://github.com/infinispan/infinispan/pull/5041" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/infinispan/infinispan/pull/5041</a>&gt;<br class="gmail_msg">
&gt;      &gt;     &lt;<a href="https://github.com/infinispan/infinispan/pull/5041" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/infinispan/infinispan/pull/5041</a><br class="gmail_msg">
&gt;     &lt;<a href="https://github.com/infinispan/infinispan/pull/5041" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/infinispan/infinispan/pull/5041</a>&gt;&gt;<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;      &gt;     As you can see I did not use our Wiki (as we used to) because it<br class="gmail_msg">
&gt;      &gt;     doesn&#39;t support inline comments (which is pretty bad in my<br class="gmail_msg">
&gt;     opinion).<br class="gmail_msg">
&gt;      &gt;     I would like to propose to keep all the designs along with our<br class="gmail_msg">
&gt;      &gt;     source code. This approach has been successfully used by the<br class="gmail_msg">
&gt;      &gt;     Kubernetes [1] folks (although they migrated designs into the new<br class="gmail_msg">
&gt;      &gt;     Community repository [2] recently). I think it might be a<br class="gmail_msg">
&gt;     good idea<br class="gmail_msg">
&gt;      &gt;     to do something similar.<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;      &gt;     Feedback on both items is more than welcome.<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;      &gt;     Thanks,<br class="gmail_msg">
&gt;      &gt;     Sebastian<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;      &gt;     [1]<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;     <a href="https://github.com/kubernetes/kubernetes/tree/master/docs/proposals" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/kubernetes/kubernetes/tree/master/docs/proposals</a><br class="gmail_msg">
&gt;     &lt;<a href="https://github.com/kubernetes/kubernetes/tree/master/docs/proposals" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/kubernetes/kubernetes/tree/master/docs/proposals</a>&gt;<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;       &lt;<a href="https://github.com/kubernetes/kubernetes/tree/master/docs/proposals" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/kubernetes/kubernetes/tree/master/docs/proposals</a> &lt;<a href="https://github.com/kubernetes/kubernetes/tree/master/docs/proposals" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/kubernetes/kubernetes/tree/master/docs/proposals</a>&gt;&gt;<br class="gmail_msg">
&gt;      &gt;     [2]<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;     <a href="https://github.com/kubernetes/community/tree/master/contributors/design-proposals" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/kubernetes/community/tree/master/contributors/design-proposals</a><br class="gmail_msg">
&gt;     &lt;<a href="https://github.com/kubernetes/community/tree/master/contributors/design-proposals" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/kubernetes/community/tree/master/contributors/design-proposals</a>&gt;<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;       &lt;<a href="https://github.com/kubernetes/community/tree/master/contributors/design-proposals" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/kubernetes/community/tree/master/contributors/design-proposals</a> &lt;<a href="https://github.com/kubernetes/community/tree/master/contributors/design-proposals" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/kubernetes/community/tree/master/contributors/design-proposals</a>&gt;&gt;<br class="gmail_msg">
&gt;      &gt;<br class="gmail_msg">
&gt;      &gt;     _______________________________________________<br class="gmail_msg">
&gt;      &gt;     infinispan-dev mailing list<br class="gmail_msg">
&gt;      &gt; <a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a><br class="gmail_msg">
&gt;     &lt;mailto:<a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a>&gt;<br class="gmail_msg">
&gt;     &lt;mailto:<a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a><br class="gmail_msg">
&gt;     &lt;mailto:<a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a>&gt;&gt;<br class="gmail_msg">
&gt;      &gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
&gt;     &lt;<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a>&gt;<br class="gmail_msg">
&gt;      &gt;     &lt;<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
&gt;     &lt;<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a>&gt;&gt;<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;     &gt; _______________________________________________<br class="gmail_msg">
&gt;     &gt; infinispan-dev mailing list<br class="gmail_msg">
&gt;     &gt; <a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a> &lt;mailto:<a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a>&gt;<br class="gmail_msg">
&gt;     &gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
&gt;     &lt;<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a>&gt;<br class="gmail_msg">
&gt;     &gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;     --<br class="gmail_msg">
&gt;     Tristan Tarrant<br class="gmail_msg">
&gt;     Infinispan Lead<br class="gmail_msg">
&gt;     JBoss, a division of Red Hat<br class="gmail_msg">
&gt;     _______________________________________________<br class="gmail_msg">
&gt;     infinispan-dev mailing list<br class="gmail_msg">
&gt;     <a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a> &lt;mailto:<a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a>&gt;<br class="gmail_msg">
&gt;     <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
&gt;     &lt;<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a>&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; _______________________________________________<br class="gmail_msg">
&gt; infinispan-dev mailing list<br class="gmail_msg">
&gt; <a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a><br class="gmail_msg">
&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
&gt;<br class="gmail_msg">
<br class="gmail_msg">
--<br class="gmail_msg">
Tristan Tarrant<br class="gmail_msg">
Infinispan Lead<br class="gmail_msg">
JBoss, a division of Red Hat<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
infinispan-dev mailing list<br class="gmail_msg">
<a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a><br class="gmail_msg">
<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
</blockquote></div>