<div dir="ltr"><div dir="ltr">On Wed, Nov 13, 2019 at 11:36 AM Saku Ytti <<a href="mailto:saku@ytti.fi" target="_blank">saku@ytti.fi</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">On Wed, 13 Nov 2019 at 18:27, Matt Corallo <<a href="mailto:nanog@as397444.net" target="_blank">nanog@as397444.net</a>> wrote:<br>
> This sounds like a bug on Cloudflare’s end (cause trying to do anycast TCP is... out of spec to say the least), not a bug in ECN/ECMP.<br>
<br>
Not true. Hash result should indicate discreet flow, more importantly<br>
discreet flow should not result into two unique hash numbers. Using<br>
whole TOS byte breaks this promise and thus breaks ECMP.<br></blockquote><div><br></div><div>Yes true.</div><div><br></div><div>Equal Cost MultiPath (ECMP) consistency over the life of a TCP connection is not a promise. Anycasters would love it to be but it's not.</div><div><br></div><div>ECMP's only promise is that packets for a particular connection will tend to prefer a particular path so that throughput doesn't suffer overly much from the packet reordering you'd get by round-robining the packets on different links. Choosing an alternate path during congestion is a perfectly reasonable thing for ECMP to do.</div><div><br></div><div>Don't blame the network. This is Cloudflare choosing not to handle the anycast spray corner case because it happens rarely enough with symptoms obscure enough that they only occasionally get called to carpet. Their BGP announcements make the claim they're ready for your packet at any of their sites, but they're not.</div><div><br></div><div>Regards,</div><div>Bill Herrin</div></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div>William Herrin</div><div><a href="mailto:bill@herrin.us" target="_blank">bill@herrin.us</a></div><div><a href="https://bill.herrin.us/" target="_blank">https://bill.herrin.us/</a><br></div></div></div></div>