Cloudflares ingenjörer har stött på betydande utmaningar när de utökar användningen av soft-unicast-funktionalitet inom Linux nätverksstack, drivet av komplexa ruttningar och anycast-konfigurationer för redundans. Försök att kringgå begränsningar med avancerade socket-alternativ ledde slutligen tillbaka till en enklare proxy-lösning. Upplevelsen belyser svårigheterna med att anpassa Linux för storskaliga nätverksbehov.
Cloudflares nätverksinfrastruktur bygger på intrikata ruttningar och konfigurationer som testar gränserna för Linux nätverksstack. Som beskrivs i en nylig bloggpost av ingenjören Chris Branch sökte företaget förbättra soft-unicast-förmågorna, som passar deras intensiva användning av anycast för att distribuera redundans över externa nätverk.
Det centrala problemet uppstod med Netfilter-modulen för anslutningsspårning, känd som conntrack, och Linux socket-undsystemet under paketskrivningsprocesser. Soft-unicast kräver att flera processer känner igen samma anslutning, men Linux design förhindrade effektiv pakketskrivning. Initialt implementerade teamet en lokal proxy för att hantera detta, även om det introducerade prestandaöverhead.
För att lösa detta undersökte ingenjörerna missbruk av TCP_REPAIR socket-optionen, som vanligtvis används för att migrera virtuella maskiners nätverksanslutningar. Detta tillät dem att fullt beskriva och 'reparera' socket-anslutningsstatusen. De kombinerade det med TCP Fast Open, med en TFO-cookie för att kringgå standardhandskakningen. Trots dessa innovationer kvarstod problem, med en tidig demux-mekanism föreslagen som partiell lösning.
Till slut blev komplexiteten för hög. Teamet valde den mer raka lokala proxy-metoden, som avslutar TCP-anslutningar och omdirigerar trafik till en lokal socket. Detta beslut understryker att en fullständig flykt från Linux nätverksstack förblir en formidabel utmaning, även för ett företag som Cloudflare i framkant av internetinfrastruktur.