Engenheiros da Cloudflare enfrentaram desafios significativos ao expandir o uso da funcionalidade soft-unicast na pilha de rede do Linux, impulsionados por configurações complexas de roteamento e anycast para redundância. Tentativas de contornar limitações usando opções avançadas de socket acabaram levando a uma solução de proxy mais simples. A experiência destaca as dificuldades em personalizar o Linux para demandas de rede em grande escala.
A infraestrutura de rede da Cloudflare depende de roteamentos e configurações intricados que testam os limites da pilha de rede do Linux. Como detalhado em um post recente no blog do engenheiro Chris Branch, a empresa buscou aprimorar as capacidades de soft-unicast, que se alinham ao uso intensivo de anycast para distribuir redundância em redes externas.
O problema principal surgiu com o módulo de rastreamento de conexões do Netfilter, conhecido como conntrack, e o subsistema de sockets do Linux durante processos de reescrita de pacotes. O soft-unicast requer que múltiplos processos reconheçam a mesma conexão, mas o design do Linux impedia a reescrita efetiva de pacotes. Inicialmente, a equipe implementou um proxy local para lidar com isso, embora tenha introduzido sobrecarga de desempenho.
Para resolver isso, os engenheiros exploraram o abuso da opção de socket TCP_REPAIR, normalmente usada para migrar conexões de rede de máquinas virtuais. Isso permitiu descrever completamente e 'reparar' o estado da conexão de socket. Eles a combinaram com TCP Fast Open, usando um cookie TFO para contornar o handshake padrão. Apesar dessas inovações, problemas persistentes permaneceram, com um mecanismo de demux inicial proposto como correção parcial.
No final, a complexidade se mostrou alta demais. A equipe optou pela abordagem mais direta do proxy local, que encerra conexões TCP e redireciona o tráfego para um socket local. Essa decisão ressalta que escapar completamente da pilha de rede do Linux continua sendo um desafio formidável, mesmo para uma empresa como a Cloudflare na vanguarda da infraestrutura da internet.