domingo, 21 de outubro de 2012

TCP Fast Open


... porque a Internet está lotada de informação! Será?

Todos nós que estudamos redes sabemos como o SO lida com a solicitação de conexão e transferência de dados. É o famoso esquema de "handshake" (fig.1) que conhecemos do Transfer Control Protocol (TCP) [1].



Figura 1. TCP handshake

Pois bem, ultimamente, foi proposto um novo modelo para a conexão TCP em que os dados podem transitar já durante o "handshake" e, com isto, pode economizar muito tempo de conexão [2]. Segundo os autores a velocidade de carregamento das páginas pode ser aumentada de 4% a 40% dependendo da conexão de da quantidade de dados transmitidos.

Porque? Por que a Internet está cheia de "firula"... isso mesmo, "viadice". Cada propaganda, cada banner, cada figurinha, cada api em flash, java e os cambáu requer pacotes com cabeçalho, novas conexões ou tempo de espera de novos "handshakes".

A idéia é interessante, pode descongestionar a Internet (um pouco apenas) mas, pode ainda, criar problemas de segurança. Pois a camada de aplicativo fica mais vulnerável (servidor e cliente) enquanto o Kernel não tem como lidar com erros de pacotes e flood de SYN_SEND/SYN_ACK. Não é à toa que o padrão do protocolo TCP proibe inclusão de dados no TCP_SYN e no SYN_ACK antes de completar o handshake.

Pode ser uma nova e promissora tecnologia que poderá reduzir drasticamente o tempo de latência dos serviços de Web. O Kernel 3.6 do Linux já implementa o TCP Fast Open (TFO); pelo menos no lado do cliente. No entanto, eu aconselharia ir "devagar com o andor que o santo é de barro". Antes precisamos nos assegurar de que não teremos furos de segurança neste novo protocolo. Por isso, um excelente campo para pesquisa.



[1] Stevens, W. R. "Unix Network Programming: Networking APIs: Sockets and XTI", 2nd Edition, Prentice Hall, 1998.

[2] Radhakrishnan, S., et.al. "TCP Fast Open", ACM CoNEXT 2011, December 6–9 2011, Tokyo, Japan: in <http://conferences.sigcomm.org/co-next/2011/papers/1569470463.pdf>, acesso em out. 2012.