TCP para alta velocidade

Transcrição

TCP para alta velocidade
Desempenho do TCP
Necessita de rwnd (janela de recepção) = PDB, para manter a rota
cheia
Janela ideal de transmissão (cwnd) = 2 PDB, para permitir recuperar
de erros e manter a taxa máxima
– Recuperação em TCP leva pelo menos um RTT
Taxa = min(cwnd,rwnd)/RTT
Buffer default em TCP = 216 Bytes = 64 kB
– 64 kB, RTT = 200ms => 2,5 Mbps Baixo!
Negociar fator de escala para estender os valores da janela rwnd
para a mesma ordem de grandeza do PDB usando 32 bits
RFC 7323 - TCP Extensions for High-Performance (set/2014)
Long fat pipe (LFN) – PDB > 105 bits
Cabeçalho TCP
Options
Opções do TCP
Negociadas na abertura da conexão
Fator de escala da janela previamente determinado e
negociado durante a abertura da conexão
– No máximo, shift de 14 posições permitido, levando a janela
de 1 Gbytes (230) (2 x janela tem que ser menor que 231,
para que segmentos não sejam descartados por idade)
Opção de uso de timestamp no SYN
– Interpretado como uma extensão superior dos 32 bits de
sequenciamento de pacote
– Usado tanto em dado como em ACK, nas duas direções
Ajuste do TCP para desempenho
TCP tunning guide
– http://fasterdata.es.net/TCP-tuning/
Tamanho de buffers nos sockets de tx e rx
– Kernel força um tamanho máximo de buffer
– Se buffer de recepção é grande demais e controle de fluxo
se perde, transmissor pode inundar o receptor, causando
rwnd = 0 e interrupção da transmisssão
– Janelas grandes em excesso no transmissor não causam
problemas, desde que haja memória para suprir alocação
Linux, FreeBSD, Windows, e OSX todos suportam
auto ajuste do TCP
Ferramentas de Medição
http://fasterdata.es.net/TCP-tuning/tools.html
Iperf : nice tool for measuring end-to-end TCP/UDP
performance
pathrate/pathload : tools to measure available bandwidth and
capacity
pipechar: hop-by-hop bottleneck analysis tool
UDPmon: Network performance measurement tool
synack: ping replacement for sites that block ping
Some useful Network Testing Tools
NDT: Web100 based Network Configuration Tester
tcpdump: dump all TCP header information for a specified
source/destination
tcptrace: format tcpdump output for analysis using xplot
TCP em redes de PDB alto
Múltiplas perdas em janelas longas -> perda de desempenho
Número de sequência do TCP de 32 bits pode estourar
enquanto pacotes ainda estão na rede, causando recebimento
errôneo de duplicatas
MSL (maximum segment life) = TTL do pacote IP pode não ser
suficiente para garantir vida “curta” na rede
– 2**31 / C (bytes/s) > MSL (segundos), para operação sem
erro
1,5 Mbps
→ 104 s (~ 3h)
10 Mbps
100 Mbps
1 Gbps
→ 1700 s (~ 30 min)
→ 170 s (~ 2 min)
→ 17 s
– Alta velocidade é o problema neste caso
Estimativa de RTT ruim, amostrando apenas um pacote por
janela em janelas grandes, necessita de novos métodos
– RTTM (Round-Trip Time Measurement) – usa timestamp no campo de
opções
Estouro de sequenciamento
PAWS (PROTECT AGAINST WRAPPED
SEQUENCE NUMBERS)
Idéia geral: Descartar pacote como duplicata se
timestamp é inferior a algum valor recebido
recentemente na conexão
– Com timestamp incrementado a cada 1 ms, 32 bits
estouram em 24,8 dias, detetando duplicatas com tempo de
vida inferior a este valor
– Pode ser aplicado a outros segmentos TCP como SYN e
SYNACK para detetar duplicatas
Futuro do TCP: TCP sobre
pipes “longos, gordos”
Cenário
– Segmentos de 1500 bytes, RTT = 100 ms
– Vazão desejada de 10 Gbps
– PDB = 1 Gbps, exigindo janela W = 83.333 segmentos no
transmissor (na realidade no TCP maior para se obter a taxa
média desejada)
Para obter 10 Gbps médio implica em ter uma taxa
de perda de L = 2 · 10-10 Uau!
– Perda de apenas 1 pacote a cada 5 x 109 pacotes ou
equivalente, uma perda a cada 1h 40min! IRREAL!
Novas versões do TCP para alta velocidade, pois
simplesmente aumentar as janelas não é suficiente
TCP para alta velocidade
Problema central: TCP incrementa sua taxa
devagar (linear) e decrementa rápido
(exponencial) frente a perdas
Uma solução: subir mais rápido e descer
mais lento
TCP para alta velocidade
HS-TCP (Sally Floyd)
– RFC 3649: HighSpeed TCP for Large Congestion Windows.
Experimental,2003.
– RFC 3742: Limited Slow-Start for TCP with Large
Congestion Windows. Experimental, 2004.
Scalable TCP (cambridge)
Fast TCP (caltech)
BIC/CUBIC (NCSU)
Layered TCP (LTC)
Hamilton TCP (HTCP)
...
A maioria altera o envio do TCP
O que é HS-TCP (High Speed TCP)
Semelhante a TCP padrão quando cwnd é baixo
Mais agressivo que TCP padrão quando cwnd é alto
– Usa uma ação de resposta modificada
Consegue trabalhar com janelas grandes, mas com
taxa de perda menor que TCP normal
High Speed TCP se comporta em janelas maiores
como um agregado de N conexões TCP
HS-TCP (atinge W com menor L)
L (perda)
W
RTTs entre perdas
10-2
12
8
10-3
38
25
10-4
263
38
10-5
1795
57
10-6
12279
83
10-7
83291
123
10-8
574356
180
10-9
3928088
264
10-10
268646653
388
HS-TCP emulando N conexões TCP
Em janelas grandes, HS-TCP se comporta como um agregado
de N conexões TCP
N conexões paralelas têm uma vazão agregada de
N .1,22 ⋅ MSS /( RTT L )
Número de conexões equivalentes em função de W
N (W ) = 0, 23W 0,4
W
N(W)
1
1
10
1
100
1,4
1.000
3,6
10.000
9,2
100.000
23
HS-TCP (vermelho) versus TCP
(verde)
Fonte: artigo de sally floyd
HS-TCP em ambiente de descarte no
fim da fila (drop-tail)
Drop-tail (FIFO)
– Pacote descartado quando o buffer fixo se esgota
Gerência ativa de fila
– Pacote descartado antes do buffer esgotar
E.g. RED, onde tamanho médio da fila é monitorado
Em ambiente FIFO
– Assuma que TCP aumenta sua taxa para (P pacotes)/RTT
– Então P pacotes irão possivelmente ser descartados
durante evento de congestionamento grave na conexão
Equidade com TCP: RED
Eixo vertical: % de utilização do enlace
– Vermelho (5 sessões HS-TCP); verde (5 sessões TCP)
Equidade com TCP: FIFO
Eixo vertical: % de utilização do enlace
– Vermelho (N/2 sessões HS-TCP); verde (N/2 sessões TCP)
HS-TCP requer Slow-Start Limitado
Slow-start até atingir uma janela de 83.000 pacotes
não funciona bem
– Dezenas de milhares de pacotes descartados de uma única
janela de dados força timeout e retorno a slow start com
valor baixo de threshold
– Recuperação lenta da conexão TCP
Alteração do mecanismo de Slow-Start
– Limita a rajada durante o aumento exponencial da janela
– Crescimento da janela limitado a no máximo N (parâmetro)
pacotes por RTT
Slow-Start Limitado
Outras alterações
Precaução contra reordenamento de pacotes
– Esperar mais de 3 ACKs duplicados antes de
retransmitir
Recuperar de forma mais suave quando um
pacote retransmitido é perdido
Outras questões
Iniciar com janelas CWND já grandes?
Fazer uso de banda imediatamente
disponível?
Quick-Start
Especifica no campo de opção IP do pacote SYN a
taxa desejada de transmissão
– Roteadores intermediários decrementam contador TTL e
podem decrementar o valor da taxa inicial desejada se
necessário
O receptor da conexão retorna informação no
ACKSYN
–
–
–
–
Emissor sabe se todos os roteadores participaram
Emissor tem uma medida do RTT
Emissor pode ajustar a janela inicial cwnd
TCP do emissor continua com operação padrão (incremento
linear e decremento multiplicativo)
Opção Quick-Start
Retorno necessário de todos os roteadores ao longo
da rota
Opção apenas aprovada pelos roteadores que estão
subutilizados
Nenhum estado por fluxo mantido no roteador
Questões
Vale a pena a complexidade?
Mecanismo suficiente em diferentes
topologias e diferentes condições de tráfego?
Necessidade premente?
Na realidade não
– Abrir N conexões simultâneas
– Usar MulTCP (agregado de N conexões virtuais)
Contudo, pode-se fazer melhor com um TCP
apropriado para alta velocidade
– Melhor flexibilidade (sem ter que configurar N)
– Melhor escalabilidade (com variedade de banda e de fluxos)
– Competir mais equitativamente com TCP existente (para
cenários onde TCP pode obter a banda disponível)
Internet2 Land Speed Record
http://www.internet2.edu/lsr/
IPv4
– 264,147 terabit-meters per second by a team consisting of
members from the University of Tokyo, the WIDE project, and
Chelsio Communication and other organizations by sending 2.98
terabytes of data across 30,000 kilometers of network over 45
minutes at an average rate of 8.80 gigabits per second.
IPv6
– 272,400 terabit-meters per second by a team consisting of
members from the University of Tokyo, the WIDE Project, NTT
Communications, and others accomplished by transferring 20.42
terabytes of data across 30,000 kilometers of network in about 300
minutes at an average rate of 9.08 gigabits per second.
Referências para TCP
Stevens, W. Richard, TCP/IP Illustrated, Volume 1 The Protocols, AddisonWesley, 1994
RFC-793, Transmission Control Protocol, 1981
RFC-1323, RCP Extensions for High Performance, 1992
RFC-2001, TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast
Recovery Algorithms, 1997
RFC-2018, TCP Selective Acknowledgement Options,1996
RFC-2581, TCP Congestion Control, 1999
RFC-3168, The Addition of Explicit Congestion Notification (ECN) to IP, 2001
RFC-3360, Inappropriate TCP Resets Considered Harmful, 2002
RFC-3390, Increasing TCP's Initial Window, 2002
RFC-3449, TCP Performance Implications of Network Path Asymmetry, 2002
RFC-3481, TCP over Second (2.5G) and Third (3G) Generation Wireless
Networks, 2003
RFC-3649, High Speed TCP for Large Congestion Windows, 2003
RFC-3782, The NewReno Modification to TCP’s Fast Recovery Algorithm, 2004
Alto Desempenho
Ter um backbone de alta velocidade apenas não é garantia de
desempenho
Internet se tornou a rede global e convergência de tráfego para
IP vai demandar mais capacitação dos gerentes de rede e
melhoria em resposta a falhas e atualizações
Nos enlaces de menor velocidade, que são os que realmente
serão restritivos da vazão, QoS pode ser necessário
Sincronização de fluxos multimídia pode causar perdas e
atrasos em picos de demanda, mesmo em enlaces de maior
velocidade (instantâneo versus média)
Como disponibilizar rede de alto
desempenho?
Melhorar a taxa de acesso ao ISP
– Frame Relay, ATM, SDH/SONET
– Ethernet Metropolitano
– Redes sem fio de alta performance
Melhorar a performance do backbone
– ATM, SDH/SONET
– Multiplexação em fibra ótica (CWDM, DWDM)
Melhorar a performance do backbone IP
– MPLS
– Integração MPLS e Ethernet Metropolitano
Como transportar IP?

Documentos relacionados