- Aprender
- Computação e TI
- Ciência da computação
- Redes de computadores
- Controle de congestionamento
Controle de congestionamento
IntermediárioAula 4 de 8 do curso Curso de Redes de computadores
O que você vai aprender
- Descreva como o tráfego que ultrapassa a capacidade de um enlace gera filas, atraso e perda, por que isso desperdiça a capacidade da rede e as duas formas gerais de evitar o congestionamento.
- Acompanhe como uma fila no gargalo transforma carga em atraso e perdaDefina congestionamento e enlace de gargalo e acompanhe como a fila de um roteador cresce quando o tráfego chega mais rápido do que o enlace consegue transmiti-lo.
- Explique os custos do congestionamento e do colapso por congestionamentoMostre como retransmissões, duplicatas desnecessárias e pacotes descartados no fim de caminhos longos desperdiçam capacidade e como remetentes sem controle podem levar a vazão útil a quase zero.
- Compare o controle de congestionamento fim a fim e o assistido pela redeClassifique os esquemas de controle de congestionamento conforme a origem do sinal de congestionamento, os sinais usados e o controle de uma janela ou de uma taxa.
- Acompanhe como uma fila no gargalo transforma carga em atraso e perda
- Acompanhe como um remetente TCP usa sua janela de congestionamento para sondar a largura de banda com partida lenta e prevenção de congestionamento, reduz o envio com retransmissão rápida, recuperação rápida e expiração de tempos limite, e qual vazão esse comportamento produz.
- Relacione a janela de congestionamento à taxa de envioUse a janela de congestionamento, a janela de recepção e o tempo de ida e volta para calcular a velocidade de transmissão de um remetente TCP e a quantidade de dados em trânsito necessária em um caminho.
- Acompanhe a partida lenta e a prevenção de congestionamentoCalcule como cwnd cresce na partida lenta e na prevenção de congestionamento e explique quando o remetente passa de uma para a outra.
- Explique como o TCP reage à perda: expiração de tempos limite, retransmissão rápida e recuperação rápidaAplique as regras que o TCP segue após a expiração de um tempo limite ou três ACKs duplicados e acompanhe as diferenças entre TCP Tahoe, Reno e NewReno.
- Estime a vazão do TCP a partir de seu comportamento em dente de serraUse o modelo de dente de serra e a fórmula da taxa de perda para estimar a vazão de uma conexão TCP de longa duração e veja por que o TCP clássico tem dificuldades em caminhos rápidos e longos.
- Relacione a janela de congestionamento à taxa de envio
- Explique por que o aumento aditivo e a redução multiplicativa levam fluxos concorrentes a parcelas iguais, meça a equidade e reconheça as condições reais em que as parcelas se tornam desiguais.
- Mostre por que o AIMD converge para um compartilhamento justo e eficienteUse a representação de dois fluxos de Chiu e Jain para mostrar como o aumento aditivo e a redução multiplicativa levam dois remetentes a parcelas iguais de um enlace.
- Avalie a equidade entre fluxos reaisMeça a equidade com o índice de Jain e a equidade máx-min e explique como diferenças de RTT, conexões paralelas, tráfego que não reage ao congestionamento e algoritmos diferentes alteram a parcela recebida por cada fluxo.
- Mostre por que o AIMD converge para um compartilhamento justo e eficiente
- Descreva por que buffers cheios criam atrasos longos, como o gerenciamento ativo de filas descarta ou marca pacotes antecipadamente e como a notificação explícita de congestionamento leva um sinal de congestionamento ao remetente sem perda de pacotes.
- Explique o atraso excessivo por acúmulo em buffers e o gerenciamento ativo de filasExplique por que buffers grandes com descarte na cauda e remetentes baseados em perda produzem filas persistentes e como RED e CoDel mantêm as filas curtas agindo antecipadamente.
- Descreva a notificação explícita de congestionamento no IP e no TCPAcompanhe os pontos de código ECN e os indicadores TCP do roteador ao receptor e ao remetente e explique como o TCP para centros de dados e o L4S usam marcações frequentes para obter atrasos muito baixos.
- Explique o atraso excessivo por acúmulo em buffers e o gerenciamento ativo de filas
- Explique como o CUBIC aumenta sua janela em função do tempo desde a última perda, como algoritmos baseados em atraso e em modelo, como Vegas e BBR, evitam encher os buffers e quais são as vantagens e limitações de cada um.
- Explique como o CUBIC aumenta sua janelaCalcule a janela do CUBIC a partir de sua função cúbica de crescimento e explique sua redução mais moderada, seu modo amigável ao Reno e por que seu crescimento depende do tempo, e não do RTT.
- Explique o controle baseado em atraso e como o BBR modela o caminhoExplique como o Vegas identifica o enfileiramento a partir do atraso, como o BBR estima a largura de banda do gargalo e o RTT mínimo para cadenciar o envio à taxa adequada e como CUBIC e BBR se comparam.
- Explique como o CUBIC aumenta sua janela
- Explique por que o TCP é difícil de alterar, como o QUIC reconstrói um transporte confiável e seguro sobre UDP e como o QUIC detecta perdas e controla o congestionamento.
- Explique por que os protocolos de transporte se ossificam e como o projeto do QUIC responde a issoExplique como dispositivos intermediários de rede e implementações no kernel retardam a evolução do TCP e como os fluxos, a negociação combinada, a criptografia e os IDs de conexão do QUIC lidam com as limitações do TCP.
- Descreva a detecção de perdas e o controle de congestionamento no QUICExplique como os números de pacote e os reconhecimentos do QUIC melhoram a detecção de perdas e aplique as regras de seu controlador de congestionamento padrão para janela inicial, recuperação, congestionamento persistente, ECN e cadenciamento de pacotes.
- Explique por que os protocolos de transporte se ossificam e como o projeto do QUIC responde a isso
Guia de estudo de Controle de congestionamento
1Por que o congestionamento reduz a entrega de dados úteis
Um remetente rápido ainda pode encontrar um caminho lento. Várias entradas podem alimentar um enlace de saída, e seu tráfego combinado precisa compartilhar a capacidade dele. Acompanhe o que acontece com os pacotes quando essa capacidade se esgota e depois diferencie a entrega útil do tráfego gasto com repetições e perdas posteriores. O desafio do remetente é reconhecer a sobrecarga cedo o suficiente para reduzi-la, usando suas próprias observações ou informações dos roteadores.
1.1 De um enlace ocupado a uma fila crescente
O congestionamento começa quando o tráfego chega a uma parte da rede mais rápido do que ela consegue transportá-lo por um período prolongado. Os pacotes esperam no buffer de saída de um roteador, chamado de fila. O gargalo é o enlace com a menor capacidade disponível para esse tráfego ao longo de seu caminho.
Acompanhe o excedente
Suponha que um roteador receba 12 Mbps para um enlace de saída capaz de enviar 10 Mbps. Ele não pode acelerar a saída para igualá-la à entrada. A cada segundo, 2 megabits ficam esperando, ou 250.000 bytes após a divisão por 8. Começando vazio, um buffer de 1.000.000 de bytes fica cheio em:
Um pacote que entra atrás dessa quantidade de dados enfileirados espera o enlace transmitir os dados à sua frente:
Quando o buffer permanece cheio, a saída continua transportando apenas 10 Mbps. Cerca de 2 Mbps dos 12 Mbps que chegam são descartados, um sexto do tráfego oferecido. Esses cálculos consideram taxas constantes de chegada e saída; o momento de cada pacote acrescenta pequenas variações.
Decida se a fila vai esvaziar
Uma rajada curta é diferente de uma sobrecarga sustentada. Uma fila pode absorver uma rajada e esvaziar quando as chegadas caem abaixo da taxa de saída. Se as chegadas constantes forem exatamente iguais à taxa de saída, uma fila existente persiste: cada saída é substituída por uma chegada. Chegadas sustentadas acima da taxa de saída fazem a fila crescer até o buffer ficar cheio.
O tráfego real é irregular. Mesmo abaixo da utilização média total, rajadas fazem os pacotes esperar. Perto da capacidade, há pouco tempo disponível para esvaziar essas rajadas, portanto o atraso médio aumenta rapidamente. O congestionamento aumenta principalmente a parcela de fila do atraso de pacote; processamento, transmissão e propagação são componentes separados.
Identifique a taxa em questão
| Taxa | O que conta |
|---|---|
| Carga oferecida | Tráfego enviado à rede, incluindo retransmissões |
| Vazão | Pacotes ou bytes entregues por segundo |
| Vazão útil | Dados novos e úteis de aplicação entregues por segundo, contados uma vez |
Uma diferença de velocidades pode revelar o gargalo: uma rede local de 1 Gbps pode alimentar um enlace de acesso de 50 Mbps. A agregação tem o mesmo efeito quando várias entradas de roteador compartilham uma saída. Uma única entrada pode parecer modesta enquanto a soma delas sobrecarrega essa saída.
Escolha o limite correto
O controle de fluxo protege o buffer do receptor usando a janela de recepção anunciada por ele. O controle de congestionamento protege o caminho entre as extremidades. Um receptor pode ter bastante memória livre enquanto um roteador no caminho descarta pacotes.
Um buffer maior no roteador pode comportar uma rajada mais longa, mas uma sobrecarga sustentada preenche qualquer buffer finito e aumenta o tempo de espera. Um enlace de gargalo mais rápido elimina essa falta de capacidade. Outro enlace passa então a limitar o caminho; ele só fica congestionado quando o tráfego excede a capacidade disponível nesse ponto.
Principais conclusões
- O congestionamento faz as filas crescerem quando as chegadas sustentadas excedem a taxa de saída disponível.
- Uma fila esvazia abaixo da capacidade e persiste quando as chegadas constantes são exatamente iguais à capacidade.
- Converta os bytes enfileirados em bits antes de dividir pela taxa do enlace para calcular o tempo de espera.
- A vazão útil conta os dados úteis uma vez; a carga oferecida inclui retransmissões.
- O controle de fluxo protege o receptor; o controle de congestionamento protege o caminho de rede.
1.2 Por que uma rede ocupada pode entregar muito pouco
Um enlace totalmente ocupado só é útil quando seu tráfego ajuda a entregar dados novos. O congestionamento consome capacidade de maneiras que podem reduzir a entrega útil mesmo enquanto a rede permanece ocupada.
Conte os custos
O atraso de fila vem primeiro. Uma chamada de vídeo pode se tornar difícil de acompanhar antes que qualquer pacote seja descartado, porque a fala chega tarde demais. A confiabilidade, por si só, não consegue corrigir esse atraso.
Pacotes perdidos criam um segundo custo: um remetente confiável os retransmite. Se um enlace de 10 Mbps transporta pacotes de mesmo tamanho e 20% repetem dados já transportados nesse enlace, no máximo 8 Mbps transportam dados novos:
A vazão útil da aplicação é menor após considerar os cabeçalhos e eventuais perdas em outros pontos. A atividade do enlace, portanto, exagera o progresso feito pela aplicação.
Algumas retransmissões são desnecessárias. Um pacote pode estar esperando em uma fila longa quando o temporizador do remetente expira. Sua substituição entra então na mesma rede ocupada. As duas cópias podem chegar, mas o receptor mantém os dados apenas uma vez. A fila transformou um problema de atraso em carga oferecida adicional.
Observe os enlaces anteriores a um descarte
Um descarte perto do destino pode desperdiçar trabalho em vários enlaces anteriores. Imagine um pacote atravessando os enlaces A e B antes de ser descartado na fila para C. As transmissões em A e B usaram capacidade sem entregar esse pacote. Repetir esse padrão deixa menos capacidade nos enlaces anteriores para o tráfego que poderia ter chegado ao destino.
À medida que a carga oferecida aumenta, a vazão também aumenta inicialmente. Com descartes suficientes nos pontos seguintes, porém, o aumento da carga envia mais tráfego para um trabalho que será desperdiçado. A vazão fim a fim pode atingir um pico e depois cair. O colapso por congestionamento é o caso extremo: a carga oferecida permanece alta enquanto a vazão útil cai em direção a zero.
Em outubro de 1986, a vazão entre o Lawrence Berkeley Laboratory e a UC Berkeley caiu de 32 kbps para 40 bps, uma redução por um fator de 800. O trabalho de Jacobson e Karels em 1988 introduziu uma resposta coordenada: partida lenta, prevenção de congestionamento, uma estimativa melhor do tempo de ida e volta e recuo exponencial do temporizador. O controle de janela e temporizadores adequados tratam de partes diferentes do ciclo de retorno.
Encontre a faixa útil de operação
O joelho da curva e o precipício da curva de Raj Jain descrevem dois limites. Além do joelho, a carga adicional traz pouco ganho de vazão, mas muito mais atraso. Além do precipício, a vazão cai à medida que as perdas e o trabalho desperdiçado passam a predominar. O controle de congestionamento busca uma entrega eficiente perto do joelho, mantendo distância do colapso.
A internet não tem um controlador central que atribua uma taxa a cada remetente. Cada remetente precisa reagir às informações que observa. Se um deles continuar transmitindo a uma taxa alta e fixa enquanto os outros reduzem suas taxas, poderá tomar a capacidade deles e agravar a sobrecarga.
A retransmissão torna um fluxo de bytes confiável, mas não elimina o custo da perda. A recuperação consome capacidade e atrasa a entrega dos dados faltantes; esperar por um temporizador de retransmissão pode interromper a conexão por muito mais tempo que a recuperação rápida.
Principais conclusões
- O atraso de fila pode prejudicar o tráfego interativo antes que pacotes sejam perdidos.
- Retransmissões e duplicatas desnecessárias consomem capacidade sem acrescentar dados novos de aplicação.
- Um descarte em um ponto posterior desperdiça as transmissões anteriores que transportaram o pacote.
- O colapso por congestionamento combina intensa atividade da rede com entrega útil muito baixa.
- O joelho marca o aumento do atraso com pouco ganho de vazão; o precipício marca a queda da vazão.
- Cada remetente contribui para manter a carga oferecida dentro do que o caminho pode suportar.
1.3 Como os remetentes aprendem quando reduzir a velocidade
Um remetente não vê diretamente todas as filas dos roteadores em seu caminho. O controle de congestionamento é um processo de retorno: observar a entrega, decidir o que as observações significam e ajustar a quantidade ou a taxa do tráfego que entra na rede.
Localize a origem do retorno
No controle fim a fim, as extremidades inferem o congestionamento a partir de perda ou atraso, sem uma mensagem explícita do roteador. O Reno usa perda. O Vegas usa alterações no tempo de ida e volta. O BBR constrói um modelo do caminho a partir de medições da taxa de entrega e do RTT.
No controle assistido pela rede, um roteador fornece retorno explícito. A ECN marca um pacote que segue para o receptor, e este informa a marca em seu reconhecimento. Esquemas ATM mais antigos podiam informar uma taxa permitida explícita. Um roteador também pode enviar uma mensagem diretamente ao remetente, chamada de pacote de contenção. O ICMP Source Quench da internet usava essa abordagem e foi descontinuado em 2012.
Interprete os sinais com cuidado
| Sinal | O que oferece | O que pode induzir o remetente ao erro |
|---|---|---|
| Perda | Evidência de que pacotes não chegaram | Corrupção em enlaces sem fio pode causar perda sem congestionamento |
| Aumento do RTT | Um aviso antecipado de espera adicional | Uma mudança de rota também pode aumentar o RTT |
| Marcações explícitas | Um aviso de congestionamento do roteador sem perda dos dados marcados | O caminho e as extremidades precisam oferecer suporte ao mecanismo |
Com filas de descarte na cauda, a perda normalmente ocorre depois que o buffer fica cheio. O gerenciamento ativo de filas pode descartar ou marcar pacotes antes. Isso altera o momento em que um sinal chega, sem mudar a necessidade de resposta do remetente.
O RTT mínimo observado é útil porque aproxima o RTT de um caminho com pouco enfileiramento. Um RTT acima desse mínimo sugere espera, mas uma extremidade precisa interpretar as medições ao longo do tempo. Nem uma única amostra imprecisa nem cada pacote perdido em um enlace sem fio identificam a causa com certeza.
Controle uma janela ou uma taxa
Um remetente baseado em janela limita os dados em trânsito ainda não reconhecidos. À medida que os reconhecimentos retornam, abre-se espaço para novos dados. Um remetente baseado em taxa define uma taxa-alvo e geralmente usa cadenciamento de pacotes, espaçando-os ao longo do tempo. Os controles estão relacionados:
Por exemplo, 100.000 bytes por 50 ms correspondem a 2.000.000 bytes/s, ou 16 Mbps, quando a janela é o limite ativo. Um controlador baseado em taxa também pode usar uma janela como limite superior para os dados pendentes.
Equilibre vários objetivos
Eficiência significa manter ocupada a capacidade disponível no gargalo. Equidade diz respeito a como os fluxos concorrentes a dividem. Baixo atraso exige filas curtas; estabilidade evita oscilações grandes e repetidas; capacidade de resposta significa adaptar-se quando a capacidade ou a concorrência muda. Uma regra que preenche rapidamente um caminho ainda pode ser ruim para manter o atraso baixo ou compartilhar a capacidade com outros algoritmos.
O controlador do TCP normalmente é executado no sistema operacional. O controlador do QUIC normalmente é executado em uma biblioteca da aplicação. O UDP não fornece controlador, portanto as aplicações que o usam devem fornecer seu próprio controle de congestionamento. O protocolo que transporta os dados não elimina a obrigação de responder ao congestionamento.
Principais conclusões
- Controladores fim a fim inferem o congestionamento; controladores assistidos pela rede recebem informações explícitas dos roteadores.
- Perda, atraso e marcações explícitas têm momentos de sinalização e limites de interpretação diferentes.
- O controle por janela limita os dados em trânsito; o cadenciamento espaça os pacotes a uma taxa escolhida.
- Eficiência, equidade, atraso, estabilidade e capacidade de resposta devem ser avaliados em conjunto.
2Como o TCP aumenta e recupera sua janela
O TCP controla a quantidade de dados ainda não reconhecidos que deixa na rede. Os ACKs permitem que essa quantidade cresça; a perda faz com que diminua. Acompanhe a janela em segmentos para ver claramente as regras de crescimento e depois converta para bytes e segundos para estimar uma taxa. Distinguir a expiração de um tempo limite da recuperação por ACKs duplicados explica as diferentes quedas em um acompanhamento da janela e revela por que o TCP clássico tem dificuldade para se recuperar em caminhos rápidos com tempos de ida e volta longos.
2.1 A janela, a ida e volta e o caminho
A janela de congestionamento, cwnd, é um limite definido pelo remetente para os dados em trânsito ainda não reconhecidos. Ela é medida em bytes, embora os acompanhamentos frequentemente contem segmentos de tamanho máximo. Ela não é um campo do cabeçalho TCP. O receptor anuncia um limite diferente, a janela de recepção, rwnd.
Aplique os dois limites
As novas transmissões devem respeitar tanto o controle de fluxo quanto o controle de congestionamento. O limite utilizável é:
Se cwnd for de 30.000 bytes e rwnd de 18.000 bytes, prevalece o limite do receptor. Com 12.000 bytes ainda pendentes, o remetente pode enviar mais 6.000 bytes. Após uma redução da janela de congestionamento, os dados existentes podem ultrapassar o novo limite; o remetente espera pelos reconhecimentos antes de acrescentar mais dados.
O tamanho máximo de segmento, MSS, conta os dados de aplicação, excluindo os cabeçalhos. Uma MTU Ethernet de 1.500 bytes menos cabeçalhos IPv4 de 20 bytes e TCP de 20 bytes deixa 1.460 bytes, sem opções. As normas usam SMSS para o MSS do remetente.
Transforme uma janela em taxa
Um remetente limitado pela janela entrega aproximadamente uma janela por RTT. Para cwnd de 65.536 bytes e RTT de 50 ms:
Multiplique por 8 para obter cerca de 10,5 Mbps. Essa estimativa também exige dados de aplicação suficientes, uma janela de recepção pelo menos tão grande e um caminho capaz de transportar a taxa resultante.
Preencha o caminho sem encher sua fila
O produto largura de banda-atraso, BDP, é a largura de banda do gargalo multiplicada pelo RTT mínimo, sem filas. Para 100 Mbps e 40 ms:
Dividir por 8 resulta em 500.000 bytes, cerca de 342 segmentos de 1.460 bytes. Um BDP em trânsito mantém esse gargalo idealizado ocupado sem uma fila persistente. Menos dados deixam capacidade ociosa; dados em excesso esperam e aumentam o RTT medido. Calcular o BDP a partir de um RTT já elevado confunde dados enfileirados com dados de que o caminho precisa.
A sincronização por ACKs ajuda a manter o ritmo. À medida que os pacotes saem do gargalo, os ACKs retornam e liberam espaço para substitutos. Em regime estável, as saídas ajudam, portanto, a determinar o momento das novas chegadas. Essa é a ideia de conservação de pacotes por trás do comportamento de autossincronização do TCP.
Defina o ponto inicial e o limiar
A janela inicial da RFC 5681 varia de dois a quatro segmentos conforme o SMSS: quatro até 1.095 bytes, três até 2.190 bytes e dois acima disso. A RFC 6928 permite uma janela inicial de até dez segmentos. Um acompanhamento que começa em um segmento é útil para ensinar, mas não afirma que todas as novas conexões começam nesse ponto.
O ssthresh, limiar de partida lenta, seleciona o modo de crescimento. Abaixo dele, o TCP usa partida lenta; acima dele, prevenção de congestionamento. Quando são iguais, a RFC 5681 permite qualquer um dos dois. Um limiar inicial alto permite que um novo remetente descubra a capacidade por meio da partida lenta.
Principais conclusões
- cwnd é um estado privado do remetente; rwnd é anunciada pelo receptor.
- Novos dados devem respeitar as duas janelas após considerar os bytes já em trânsito.
- MSS conta os dados de aplicação, excluindo os cabeçalhos IP e TCP.
- Uma taxa limitada pela janela é aproximadamente a janela utilizável dividida pelo RTT.
- O BDP usa o RTT sem filas; dados em trânsito em excesso formam uma fila.
- A sincronização por ACKs vincula novas transmissões à entrega pelo gargalo.
- A janela inicial e ssthresh determinam como um acompanhamento começa e cresce.
2.2 Crescimento exponencial e depois um segmento por ida e volta
O TCP primeiro precisa descobrir quanto tráfego o caminho consegue transportar. A partida lenta expande rapidamente a janela a partir de um ponto inicial pequeno. A prevenção de congestionamento então sonda com mais cautela quando o limiar de partida lenta é atingido.
Conte os reconhecimentos na partida lenta
A RFC 5681 aumenta cwnd em até um SMSS para cada reconhecimento de dados novos:
em que N é a quantidade de bytes recém-reconhecidos. Com um ACK por segmento completo e dados suficientes para preencher cada janela, cada segmento enviado abre espaço para dois na rodada seguinte: um substituto e um devido ao aumento da janela.
Começando em 1 MSS, os valores a cada rodada são 1, 2, 4, 8, 16, 32 e 64 MSS. São necessários seis RTTs para atingir 64 MSS. A 100 ms por RTT, isso representa 0,6 s. O nome reflete um início mais seguro do que enviar imediatamente uma janela de recepção inteira; o crescimento em si é exponencial.
Os ACKs atrasados alteram a contagem. Se o receptor enviar um ACK para cada dois segmentos completos, a regra simples por ACK resulta em um crescimento de aproximadamente 1,5 vez por RTT. A contagem apropriada de bytes, descrita na RFC 3465, usa os bytes recém-reconhecidos para lidar com a dependência da frequência dos ACKs.
Alterne os modos de crescimento
Para um acompanhamento com cwnd inicial de 1 MSS e ssthresh de 8 MSS, escolha a prevenção de congestionamento quando forem iguais. O acompanhamento fica:
As três primeiras alterações dobram a janela. As alterações posteriores acrescentam um MSS por RTT. Uma perda pode interromper qualquer uma das fases. Implementações que usam HyStart++ (RFC 9406) também podem deixar a partida lenta antecipadamente quando o atraso aumenta.
Explique o aumento aditivo
Uma regra comum por ACK durante a prevenção de congestionamento é:
Em 10 MSS, um ACK acrescenta cerca de 0,1 MSS. Cerca de dez ACKs chegam durante a rodada, portanto o aumento total é de aproximadamente um MSS. O incremento por ACK fica menor à medida que cwnd cresce, mantendo o aumento por rodada aproximadamente constante.
Essa diferença importa em um caminho de grande capacidade. Passar de 16 para 32 MSS leva um RTT na partida lenta ideal, mas dezesseis RTTs na prevenção de congestionamento. O crescimento mais lento reduz o excesso repentino depois que o remetente obtém uma estimativa útil da capacidade.
Reconheça uma reinicialização
A partida lenta não se limita ao início de uma conexão. A expiração do tempo limite de retransmissão redefine cwnd para um segmento. Um período ocioso maior que o tempo limite de retransmissão também exige uma reinicialização com no máximo a janela inicial, pois a sincronização por ACKs e a estimativa de capacidade anteriores podem não ser mais adequadas ao caminho.
A prevenção de congestionamento não mantém cwnd em um valor seguro fixo. Ela continua acrescentando capacidade até chegar um sinal de congestionamento. Em um caminho com descarte na cauda, essa sondagem contínua tende a formar uma fila persistente antes que a perda sinalize ao remetente que reduza sua taxa.
Principais conclusões
- Com um ACK por segmento, a partida lenta ideal dobra cwnd a cada RTT.
- ACKs atrasados tornam mais lenta a regra simples de crescimento por ACK.
- A prevenção de congestionamento acrescenta cerca de um MSS por RTT, não por ACK.
- ssthresh separa os modos de crescimento; um acompanhamento deve escolher uma convenção para quando os valores forem iguais.
- Expirações de tempos limite e longos períodos ociosos podem exigir uma nova partida lenta.
2.3 Perdas diferentes produzem acompanhamentos de recuperação diferentes
O TCP pode inferir a ausência de um segmento a partir de um temporizador ou de ACKs duplicados. A distinção importa: a expiração de um tempo limite oferece menos evidências de que a rede ainda está entregando tráfego do que três ACKs duplicados.
Defina o novo limiar
O Reno usa a quantidade realmente pendente, FlightSize, para definir:
FlightSize frequentemente fica próximo de cwnd durante uma transferência totalmente ativa, mas os dois não precisam ser iguais quando a aplicação envia poucos dados. O limite inferior impede que o limiar fique abaixo de dois segmentos.
Após a expiração de um tempo limite, o remetente retransmite, define cwnd como um SMSS e reinicia a partida lenta. Expirações repetidas para os mesmos dados dobram o temporizador de retransmissão. Esse recuo exponencial impede que uma falha persistente produza uma sequência igualmente persistente de novas tentativas.
Recupere-se antes de o temporizador expirar
Três ACKs duplicados mostram que três segmentos posteriores chegaram depois de uma lacuna. Eles não significam que três segmentos foram perdidos. Um ou dois ACKs duplicados podem resultar de uma mudança de ordem, portanto o TCP espera o terceiro antes de a retransmissão rápida enviar o segmento faltante.
O Reno então entra em recuperação rápida. Suponha que FlightSize seja 12 MSS. O novo limiar é 6 MSS, e o Reno define temporariamente:
Os três segmentos adicionais correspondem aos pacotes que comprovadamente saíram da rede. Cada ACK duplicado adicional infla cwnd em um MSS, permitindo que o envio continue quando a janela possibilita. Quando um ACK avança o reconhecimento cumulativo, o Reno reduz cwnd para 6 MSS e retoma a prevenção de congestionamento.
| Evento com 12 MSS pendentes | Tahoe | Reno |
|---|---|---|
| Expiração do tempo limite | cwnd passa a 1 MSS | cwnd passa a 1 MSS |
| Terceiro ACK duplicado | Retransmite e reinicia em 1 MSS | Retransmite e entra em recuperação em 9 MSS |
| Recuperação bem-sucedida | Cresce por partida lenta | Reduz para 6 MSS e depois cresce de forma aditiva |
Com janela inicial de 1 MSS e ssthresh de 8 MSS, cwnd cresce 1, 2, 4, 8, 9, 10, 11, 12 MSS antes da perda. O Reno acaba continuando em 6, 7, 8, 9. O Tahoe reinicia em 1, 2, 4, atinge o novo limiar de 6 e depois continua 7, 8.
Repare várias lacunas em uma janela
O Reno clássico sai da recuperação no primeiro ACK de dados novos. Se esse ACK abrange apenas parte dos dados originalmente em trânsito, outra lacuna permanece. O Reno pode reduzir novamente ou ter um tempo limite expirado.
O NewReno (RFC 6582) permanece em recuperação diante desse ACK parcial e retransmite o próximo segmento faltante. Ele sai quando todos os dados pendentes na entrada em recuperação são reconhecidos. O SACK informa explicitamente os blocos recebidos; a recuperação baseada em SACK pode identificar e reparar várias lacunas em uma ida e volta.
Um episódio de congestionamento normalmente deve causar uma redução, mesmo que vários pacotes sejam perdidos. O NewReno e a recuperação baseada em SACK lidam com isso de forma mais confiável que o Reno clássico. O CUBIC usa um fator de redução diferente para sinais comuns de congestionamento, mantendo 70%, mas também reinicia com um segmento após a expiração de um tempo limite.
Principais conclusões
- O Reno define ssthresh a partir de FlightSize, com um mínimo de dois SMSS.
- A expiração de um tempo limite redefine cwnd para um SMSS, e expirações repetidas aumentam o temporizador por recuo.
- Três ACKs duplicados acionam a retransmissão rápida; eles indicam chegadas posteriores a uma lacuna.
- O Reno infla cwnd durante a recuperação rápida e a reduz para ssthresh ao sair.
- O NewReno permanece em recuperação diante de ACKs parciais para reparar várias perdas.
- O SACK informa os blocos recebidos para que o remetente possa localizar mais de uma lacuna.
- O Tahoe reinicia a partida lenta após uma perda indicada por ACKs duplicados; o Reno normalmente continua com crescimento aditivo após a recuperação.
- As reduções da janela de congestionamento correspondem a episódios de congestionamento, e não a cada pacote perdido individualmente.
2.4 Estime a taxa de uma transferência de longa duração
O Reno clássico aumenta repetidamente sua janela e a reduz após um congestionamento. O dente de serra resultante fornece uma estimativa útil de regime estável quando o RTT é aproximadamente constante, a retransmissão rápida detecta as perdas e não há expirações de tempos limite nem partida lenta.
Calcule a média da janela
Seja o pico da janela igual a W segmentos. Uma redução pela metade produz uma faixa de W/2 a W, cuja média é 0,75 W. Multiplique pelo MSS para obter bytes por ida e volta e depois divida pelo RTT:
Para W de 24 segmentos, MSS de 1.460 bytes e RTT de 80 ms, a taxa máxima é 3,504 Mbps. A média é de cerca de 2,63 Mbps. Lembre-se de que uma janela em segmentos precisa de um fator de tamanho de segmento; uma janela já expressa em bytes não precisa.
Relacione vazão e perda
A aproximação de Mathis expressa o mesmo comportamento semelhante ao do Reno usando a fração de perda L:
Se MSS estiver em bytes e RTT em segundos, T estará em bytes/s. Com MSS de 1.460 bytes, RTT de 0,1 s e fração de perda de 0,0001, o denominador é 0,001 s. O resultado é 1.781.200 bytes/s, cerca de 14,25 Mbps após a multiplicação por 8.
Com fração de perda fixa, dobrar o RTT reduz a vazão pela metade. Com RTT fixo, dobrar a vazão exige que a perda caia para um quarto, pois o denominador contém a raiz quadrada da perda. Uma fração de perda de 0,0001 significa 0,01%, não 0,0001%.
Entenda o problema em alta velocidade
Um caminho de 10 Gbps com RTT sem filas de 100 ms precisa de 1 bilhão de bits, ou 125.000.000 de bytes, em trânsito para ficar ocupado. Usando segmentos de 1.500 bytes, isso corresponde a cerca de 83.333 segmentos. Reduzir essa janela pela metade deixa cerca de 41.667 segmentos a recuperar. O Reno acrescenta um por RTT, portanto recuperá-los leva cerca de 4.167 s, quase 70 minutos.
Esse valor de 83.333 segmentos é a janela necessária para enviar a 10 Gbps em um instante. Um dente de serra do Reno com média de 10 Gbps precisaria de um pico maior, pois sua janela média é apenas três quartos do pico. A fórmula da taxa de perda estima que sustentar uma média de 10 Gbps com esse MSS e RTT exige uma perda de cerca de um segmento em 4,7 bilhões.
Verifique outros limites
Um controlador não pode entregar dados mais rápido que o gargalo, e uma janela de recepção pequena pode limitar o envio antes de cwnd. Use o menor limite aplicável. Expirações de tempos limite reduzem a taxa abaixo do modelo simples, e um objeto pequeno pode terminar inteiramente na partida lenta. Seu tempo de conclusão depende muito das rodadas iniciais e da janela inicial, portanto a fórmula para longa duração descreve mal essa transferência.
Um enlace de acesso mais rápido, portanto, só ajuda quando elimina um limite ativo. RTT longo, perda ou uma janela pequena podem deixar uma única conexão muito abaixo da capacidade do enlace ampliado.
Principais conclusões
- Um dente de serra do Reno de W/2 a W tem janela média de cerca de 0,75 W.
- O modelo de Mathis fornece uma vazão proporcional a 1/RTT e 1/√L.
- Mantenha segmentos, bytes, bits e segundos consistentes ao calcular taxas.
- Caminhos com BDP grande tornam lenta a recuperação do Reno porque o crescimento é de apenas um segmento por RTT.
- A capacidade do gargalo e a janela de recepção continuam sendo limites superiores independentes.
- Transferências curtas e conexões com muitas expirações de tempos limite exigem mais que um modelo de regime estável.
3Como os fluxos dividem um enlace compartilhado
Manter um enlace ocupado e compartilhá-lo com equidade são objetivos separados. Dois fluxos podem usar toda a capacidade enquanto um deles toma quase tudo. Acompanhe como aumentos aditivos iguais e reduções proporcionais alteram suas taxas e depois examine o que acontece quando suas condições diferem. Medidas de equidade ajudam a descrever o resultado, mas interpretá-las também exige saber quem os fluxos representam e quanto tráfego cada um precisa enviar.
3.1 Por que o AIMD leva os fluxos a parcelas iguais
Se K fluxos ativos querem mais capacidade do que um gargalo pode fornecer, uma parcela igual por fluxo é R/K, em que R é a taxa disponível. A eficiência diz respeito a se a soma das taxas é R. A equidade diz respeito a quão igualmente eles a dividem.
Coloque duas taxas em um diagrama
Em um diagrama de Chiu–Jain, as coordenadas horizontal e vertical são as taxas dos dois fluxos. A reta de eficiência é:
A reta de equidade é a diagonal em que as taxas são iguais. Sua interseção é a alocação justa que usa toda a capacidade. Em um enlace de 10 Mbps, ela é de 5 Mbps por fluxo. Pontos abaixo da reta de eficiência deixam capacidade sem uso; pontos acima dela oferecem mais tráfego do que o enlace consegue transportar.
Separe as duas atualizações
O aumento aditivo acrescenta a mesma quantidade a cada taxa. Começando em 8 e 1 Mbps, acrescentar 0,5 Mbps a cada uma resulta em 8,5 e 1,5 Mbps. A diferença permanece em 7 Mbps, mas o fluxo menor ganha mais em relação à sua taxa inicial. No diagrama, o ponto se move paralelamente à diagonal de igualdade.
A redução multiplicativa multiplica as duas taxas pelo mesmo fator. Reduzir 9 e 2 Mbps pela metade produz 4,5 e 1 Mbps. A razão entre elas não muda, enquanto a diferença absoluta cai de 7 para 3,5 Mbps. O ponto se move em direção à origem e elimina rapidamente a sobrecarga.
Essas são duas formas diferentes de melhoria: a adição igual melhora o equilíbrio relativo; a redução proporcional diminui a diferença absoluta. Repetir as duas impede que a diferença volte a crescer enquanto a capacidade é sondada novamente.
Acompanhe vários ciclos
Comece em 8 e 1 Mbps no enlace de 10 Mbps. Acrescente 0,5 Mbps por fluxo a cada etapa e reduza somente depois que o total ultrapassar a capacidade. Após dois aumentos, as taxas são 9 e 2, totalizando 11. A redução pela metade resulta em 4,5 e 1.
Mais cinco aumentos levam a 7 e 3,5, totalizando 10,5. A redução pela metade resulta em 3,5 e 1,75. As diferenças foram 7, 3,5 e 1,75 Mbps. Outra redução sincronizada pela metade faz a próxima diferença ser 0,875 Mbps. Os fluxos se aproximam de parcelas iguais enquanto seu total continua oscilando em torno da capacidade disponível.
Compare outras regras de atualização
| Regra | O que acontece com taxas desiguais |
|---|---|
| Aumento aditivo, redução aditiva | Adições e subtrações iguais preservam a diferença absoluta |
| Aumento multiplicativo, redução multiplicativa | Alterações proporcionais iguais preservam a razão entre as taxas |
| Aumento multiplicativo, redução aditiva | O crescimento favorece o fluxo maior e o equilíbrio pode piorar |
| Aumento aditivo, redução multiplicativa | Ciclos repetidos se aproximam de parcelas iguais e uso eficiente |
Essa convergência pressupõe RTTs iguais, sinais de congestionamento sincronizados, respostas iguais e fluxos que permaneçam ativos por tempo suficiente. O incremento aditivo do Reno é de cerca de um MSS por RTT e seu fator de redução é um meio. Outros incrementos aditivos positivos e fatores de redução entre zero e um produzem o mesmo argumento básico de convergência. Fluxos reais não precisam cumprir todos esses pressupostos, portanto um par desigual em um instante não demonstra, por si só, uma falha do AIMD.
Principais conclusões
- A eficiência diz respeito à soma das taxas; a equidade diz respeito à sua divisão.
- Aumentos aditivos iguais preservam a diferença absoluta enquanto melhoram o equilíbrio relativo.
- Reduções multiplicativas iguais preservam a razão enquanto diminuem a diferença absoluta.
- Ciclos AIMD repetidos convergem quando RTTs, sinais e respostas são iguais.
- A equidade descreve o compartilhamento no longo prazo enquanto as taxas continuam oscilando.
3.2 Meça o compartilhamento e explique resultados desiguais
Parcelas iguais são uma referência útil, mas os fluxos reais podem diferir em demanda, RTT, número de conexões e controlador de congestionamento. Uma afirmação sobre equidade precisa responder claramente: “equidade entre quais fluxos?”
Calcule o índice de Jain
Para taxas de fluxo não negativas com total diferente de zero, o índice de Jain é:
Taxas de 8 e 2 Mbps resultam em uma soma de 10 e uma soma dos quadrados de 68, portanto o índice é de cerca de 0,735. Taxas iguais resultam em 1. Se um de n fluxos receber tudo, o índice será 1/n.
O índice mede igualdade, não utilização. Dois fluxos de 1 Mbps cada e dois de 5 Mbps cada têm índice 1, embora usem quantidades diferentes de um enlace de 10 Mbps. Verifique a taxa total separadamente.
Considere a demanda limitada
A equidade máx-min dá aos fluxos de baixa demanda o que eles precisam e depois divide a capacidade restante entre os fluxos que ainda buscam mais. Em um enlace de 12 Mbps, três fluxos desejam 2, 8 e 10 Mbps. A parcela igual inicial é 4 Mbps. O primeiro precisa de apenas 2, restando 10 Mbps para os outros dois. A alocação é, portanto, de 2, 5 e 5 Mbps.
Aumentar uma das taxas maiores exigiria reduzir um fluxo que já tem uma taxa igual ou menor. Essa propriedade define a equidade máx-min. Sua alocação desigual pode ser adequada mesmo que a medida de igualdade de Jain fique abaixo de 1.
Identifique vantagens entre os fluxos
O Reno cresce uma vez por RTT. Com a mesma fração de perda, sua vazão aproximada é inversamente proporcional ao RTT: um fluxo de 20 ms pode atingir cerca de quatro vezes a taxa de um fluxo de 80 ms. O acesso igual ao gargalo não elimina essa vantagem de tempo.
O compartilhamento também é por conexão. Com nove conexões existentes, uma aplicação que acrescenta uma pode receber cerca de um décimo do enlace. Se, em vez disso, acrescentar onze conexões comparáveis, sua parcela passa a onze vinte avos, ou 55%. HTTP/2 e HTTP/3 multiplexam muitas requisições em uma conexão, enquanto clientes HTTP/1.1 frequentemente abrem várias conexões.
Uma aplicação UDP de taxa fixa pode continuar enviando enquanto os fluxos TCP reduzem suas taxas. O próprio UDP não fornece um controlador; a RFC 8085 solicita que as aplicações acrescentem controle de congestionamento adequado. Um fluxo amigável ao TCP não usa mais largura de banda do que tráfego TCP comparável nas mesmas condições. O TFRC usa a equação de vazão do TCP para permitir uma taxa mais estável.
Considere a fila e o algoritmo
Uma fila FIFO não impõe parcelas iguais aos fluxos. Seu resultado depende do comportamento dos remetentes. O enfileiramento justo, incluindo o escalonamento por fluxo do FQ-CoDel, dá aos fluxos filas e oportunidades de atendimento separadas.
O crescimento do CUBIC e o do Reno diferem em caminhos com BDP grande. O compartilhamento entre BBR e CUBIC também depende da versão e da capacidade do buffer; as primeiras versões do BBR podiam ser agressivas com buffers pequenos. Nenhum cálculo isolado de igualdade estabelece que controladores diferentes coexistirão de modo equilibrado em todos os caminhos.
Principais conclusões
- O índice de Jain mede igualdade; verifique a utilização separadamente.
- A equidade máx-min atende às pequenas demandas antes de dividir a capacidade restante.
- RTTs menores e mais conexões paralelas podem aumentar a parcela de um remetente.
- Aplicações UDP precisam de controle de congestionamento próprio; o tráfego amigável ao TCP limita o uso de largura de banda ao de tráfego TCP comparável.
- Filas FIFO deixam o compartilhamento a cargo dos remetentes, enquanto o enfileiramento justo oferece atendimento por fluxo.
- As versões dos algoritmos e a capacidade do buffer podem alterar a coexistência entre fluxos.
4Como os roteadores avisam sobre congestionamento mais cedo
Um buffer grande pode ocultar a perda de pacotes enquanto torna uma conexão interativa extremamente lenta. Os roteadores podem reduzir essa espera reagindo a uma fila persistente antes que ela transborde. Acompanhe a diferença entre a detecção baseada no tamanho da fila e a baseada em atraso e depois siga uma marca ECN de um roteador até o remetente. A mesma ideia de marcação permite respostas diferentes dos remetentes no TCP clássico, em centros de dados controlados e em projetos de internet de baixa latência.
4.1 Mantenha buffers úteis sem uma fila persistente
Uma fila com descarte na cauda aceita pacotes até seu buffer ficar cheio e então descarta os novos pacotes que chegam. Remetentes baseados em perda continuam aumentando o envio até receberem um sinal de congestionamento. Com um buffer grande de descarte na cauda, esse sinal só pode chegar depois que uma fila longa se formou.
Calcule o atraso oculto em um buffer
Um buffer de 2.000.000 de bytes diante de um enlace de subida de 20 Mbps comporta 16 milhões de bits. Se estiver cheio, um pacote atrás desses dados espera:
Um envio de dados pode, portanto, manter a vazão alta enquanto acrescenta quase um segundo a uma chamada que compartilha o enlace de subida. Atraso excessivo por acúmulo em buffers significa atraso excessivo persistente causado por buffers grandes e pelo comportamento do tráfego que os mantém ocupados.
O armazenamento em buffer ainda tem uma finalidade: rajadas curtas precisam de um lugar para esperar. No modelo simples de um único fluxo Reno, cerca de um BDP de buffer pode manter o enlace ocupado imediatamente após uma redução da janela pela metade. Tornar o buffer muito maior aumenta a espera sem aumentar a taxa de transmissão do enlace.
Sinalize congestionamento antes do transbordamento
O gerenciamento ativo de filas, AQM, descarta ou marca pacotes antecipadamente para sinalizar que os remetentes devem reduzir sua carga. Um transbordamento físico deixa de ser a única maneira de anunciar congestionamento. A RFC 7567 recomenda a ampla adoção de AQM.
A detecção antecipada aleatória, RED, observa uma média móvel do tamanho da fila. Abaixo de um limiar mínimo, não sinaliza. Entre dois limiares, descarta ou marca com uma probabilidade crescente. Acima do limiar máximo, sinaliza em cada chegada. O cálculo da média impede que uma única rajada curta pareça uma sobrecarga persistente, mas é difícil escolher limiares que funcionem em diferentes velocidades e cargas.
Meça o tempo de espera diretamente
O CoDel, atraso controlado, mede o tempo de permanência de um pacote: seu tempo dentro da fila. Sua meta padrão é 5 ms e seu intervalo é 100 ms. Se até mesmo o tempo mínimo de permanência observado permanecer acima da meta por um intervalo, existe uma fila persistente. O CoDel então descarta ou marca pacotes com ECN, aumentando a frequência de sinalização enquanto o atraso excessivo persiste.
O mínimo em um intervalo importa. Uma rajada pode produzir um atraso alto por pouco tempo e depois esvaziar rapidamente; uma fila cujo atraso nunca fica pequeno precisa de intervenção. A medição de atraso do CoDel permite que seus valores padrão funcionem em uma ampla faixa de taxas de enlace.
| Mecanismo | O que observa | Quando sinaliza |
|---|---|---|
| Descarte na cauda | Se o buffer está cheio | No transbordamento |
| RED | Tamanho médio da fila | De forma probabilística à medida que os limiares são ultrapassados |
| CoDel | Tempo persistente de espera dos pacotes | Quando o atraso permanece acima da meta |
O FQ-CoDel combina filas separadas por fluxo com CoDel. A separação dos fluxos ajuda a evitar que uma grande transferência coloque todos os pequenos pacotes interativos atrás de seu acúmulo de dados.
Sinais antecipados também podem reduzir a sincronização global, em que muitos fluxos perdem pacotes juntos, reduzem suas taxas pela metade juntos e deixam o enlace temporariamente subutilizado. Sinais antecipados aleatórios distribuem as reações ao longo do tempo. Com tráfego que oferece suporte a ECN, um AQM pode enviar seu aviso por meio de uma marca e ainda entregar o pacote.
Principais conclusões
- O atraso excessivo por acúmulo em buffers é um atraso de fila persistente, mesmo quando a vazão permanece alta.
- O tempo de fila é a quantidade de bits enfileirados dividida pela taxa de saída.
- O AQM sinaliza congestionamento antes do transbordamento físico do buffer.
- O RED acompanha o tamanho médio da fila; o CoDel acompanha o tempo de espera persistente.
- O FQ-CoDel combina filas por fluxo com o controle de atraso do CoDel.
- Sinais antecipados e distribuídos reduzem perdas e reduções de janela sincronizadas.
4.2 Acompanhe um aviso ECN de volta ao remetente
A notificação explícita de congestionamento, ECN, permite que um roteador entregue um pacote e avise que o congestionamento está aumentando. A marca altera o comportamento do remetente sem criar dados faltantes que precisem ser retransmitidos.
Leia o ponto de código IP
O campo ECN tem dois bits no byte de tipo de serviço do IPv4 ou na classe de tráfego do IPv6.
| Bits | Significado |
|---|---|
| 00 | Not-ECT: o transporte não declarou suporte a ECN |
| 10 | ECT(0): transporte com suporte a ECN |
| 01 | ECT(1): transporte com suporte a ECN; também é o identificador L4S |
| 11 | CE: congestionamento detectado |
Na negociação TCP clássica da RFC 3168, o SYN do cliente ativa ECE e CWR. O SYN-ACK de um servidor que aceita a negociação ativa ECE. Após a negociação, o TCP clássico marca os pacotes de dados como ECT(0).
Acompanhe o ciclo de retorno
Um AQM que descartaria um pacote com suporte a ECN como aviso de congestionamento pode alterar seu ponto de código para CE e encaminhá-lo. Um pacote Not-ECT não pode transportar esse aviso e é descartado quando o AQM precisa sinalizar. Um buffer completamente cheio continua descartando pacotes, inclusive os que oferecem suporte a ECN.
O receptor ecoa CE ativando ECE, eco de ECN, em seus ACKs. Ele continua até receber CWR, janela de congestionamento reduzida, do remetente. Esses indicadores informam e confirmam o retorno; sua presença não significa que dados foram perdidos.
Para a ECN clássica do tipo Reno, comece com cwnd de 20 MSS. Depois que ECE chega, o remetente reduz cwnd para 10 MSS e coloca CWR em seu próximo segmento de dados novos. O receptor para de ecoar quando CWR chega. Ecos repetidos da mesma janela não exigem reduções repetidas pela metade. O aviso retorna pelo caminho dos reconhecimentos, portanto a resposta está sujeita ao atraso do retorno.
A ECN especifica o sinal; o algoritmo de congestionamento fornece a regra de redução. O Reno reduz pela metade, enquanto o CUBIC normalmente mantém 70% em um evento ECN. As duas extremidades e um gargalo que faz marcações precisam oferecer suporte a ECN para que esse ciclo funcione.
Use a fração de marcações
O DCTCP, TCP para centros de dados, usa marcações frequentes em um ambiente controlado. Ele estima a fração de bytes marcados com um valor suavizado alfa:
em que M é a fração marcada recentemente. Algumas implementações usam g igual a 1/16. Ele reduz a janela usando:
Com alfa igual a 0,2, uma janela de 100 passa a 90; com alfa igual a 1, ela cai pela metade. O DCTCP precisa de marcação e retorno compatíveis. Misturá-lo com TCP clássico em uma fila comum pode produzir parcelas injustas.
O L4S, arquitetura experimental das RFCs 9330–9332, leva uma resposta escalável semelhante aos caminhos da internet. ECT(1) identifica o tráfego escalável, e um AQM acoplado de duas filas o separa do tráfego clássico enquanto coordena o tratamento dos dois. Marcações frequentes com filas curtas buscam um atraso de fila em torno de um milissegundo. ECT(1) por si só não garante esse atraso: o controlador e o comportamento do gargalo completam o projeto.
Principais conclusões
- CE marca um pacote entregue; tráfego com suporte a ECN ainda pode ser descartado no transbordamento.
- O TCP clássico negocia ECN, ecoa CE por meio de ECE e confirma sua resposta com CWR.
- O controlador escolhe quanto reduzir; a ECN fornece o sinal de congestionamento.
- O DCTCP usa a fração marcada para dimensionar sua redução em ambientes controlados.
- O L4S combina ECT(1), controle de congestionamento escalável e gerenciamento acoplado de filas.
5Como CUBIC e BBR se adaptam a caminhos modernos
Um caminho com produto largura de banda-atraso grande precisa de uma grande quantidade de dados em trânsito. O Reno pode demorar demais para recuperar essa janela após uma redução. O CUBIC altera a forma como a janela cresce ao longo do tempo, enquanto o BBR estima a taxa de entrega e o RTT sem filas do caminho. Compare o que cada algoritmo mede, como sonda a capacidade e o que seu comportamento significa para o atraso e o compartilhamento com outro tráfego.
5.1 Use o tempo para aumentar a janela do CUBIC
O CUBIC trata do crescimento lento do Reno em caminhos rápidos e de longa distância. Sua janela segue o tempo decorrido desde uma redução por congestionamento, dando-lhe uma resposta diferente de um aumento fixo de um segmento a cada RTT. A RFC 9438 especifica o CUBIC; ele é o padrão nas principais pilhas TCP do Linux, Windows e Apple.
Registre o último ponto de congestionamento
Em uma perda comum ou em um evento de congestionamento por ECN, o CUBIC registra sua janela como Wmax. Com uma janela totalmente utilizada, seu fator de redução de 0,7 mantém 70% da quantidade de dados em trânsito. O Reno manteria a metade. A expiração de um tempo limite de retransmissão é diferente: o CUBIC segue o Reno de volta a uma janela de um segmento e à partida lenta, enquanto define seu limiar com o fator de redução do CUBIC.
Para o período cúbico básico após uma redução, a janela-alvo em segmentos é:
O tempo t está em segundos. Quando a janela reduzida é 0,7 Wmax, o tempo de retorno ao pico anterior é:
Acompanhe a curva
Com Wmax de 100 segmentos, a janela reduzida é 70. O valor dentro da raiz cúbica é 75, portanto K é cerca de 4,22 s. Em um segundo, a curva está em cerca de 86,7 segmentos; em dois segundos, em 95,6; em três segundos, em 99,3. Ela atinge 100 em K.
Abaixo do pico anterior, o crescimento é inicialmente rápido e depois desacelera. Essa região côncava aproxima-se com cautela de um ponto em que já ocorreu congestionamento. Perto do pico há um patamar relativamente plano. Acima dele, a região convexa acelera para sondar a capacidade que pode estar disponível agora. Aos sete segundos, a curva do exemplo atinge cerca de 108,6 segmentos.
Explique a vantagem em relação ao RTT e seu limite
O Reno precisa de 50 RTTs para voltar de 50 a 100 segmentos: 5 s com RTT de 100 ms e 10 s com RTT de 200 ms. O tempo de retorno da curva cúbica depende do pico registrado e do tempo decorrido, portanto seu retorno em 4,22 s não depende diretamente da contagem de ACKs.
O CUBIC também calcula uma estimativa amigável ao Reno. Ele usa um aumento AIMD equivalente de cerca de 0,53 segmentos por RTT com fator de redução de 0,7, adotando essa estimativa quando ela supera o alvo cúbico. Caminhos com RTT curto podem, portanto, recuperar-se antes do tempo de retorno puramente cúbico. O crescimento baseado no tempo reduz uma fonte importante de favorecimento por RTT; ele não torna toda alocação real independente do RTT.
Ajuste o pico registrado
Se o congestionamento voltar a ocorrer abaixo do pico anterior, a convergência rápida do CUBIC reduz o Wmax registrado. Um novo evento em 90 segmentos após um pico anterior de 100 resulta em:
A janela imediatamente reduzida é de 63 segmentos. O pico registrado e a nova janela atual têm funções diferentes: um molda o crescimento futuro, enquanto a outra limita o envio atual.
O CUBIC continua baseado em perda, com ECN como sinal alternativo. Ele pode formar uma fila persistente em um caminho com descarte na cauda. A recuperação mais rápida e uma redução comum mais moderada melhoram o uso de caminhos com BDP grande, mas nenhuma das duas garante, por si só, baixo atraso de fila.
Principais conclusões
- O CUBIC normalmente mantém 70% após uma perda ou um evento ECN, mas reinicia com um segmento após a expiração de um tempo limite.
- O alvo cúbico depende dos segundos decorridos e da janela de congestionamento registrada.
- O crescimento desacelera perto do pico anterior e depois acelera acima dele.
- A estimativa amigável ao Reno pode superar a curva cúbica, especialmente com RTTs curtos.
- A convergência rápida reduz o pico registrado quando o congestionamento volta a ocorrer abaixo dele.
- O CUBIC continua sendo um controlador baseado em perda e pode formar filas persistentes.
5.2 Estime o caminho com medições de atraso e entrega
A perda não é o único sinal de um caminho congestionado. O atraso pode revelar dados enfileirados, enquanto as medições de entrega podem estimar a largura de banda que o caminho fornece. Vegas e BBR usam essas observações de maneiras diferentes.
Estime os dados enfileirados do Vegas
O Vegas compara uma taxa esperada baseada no RTT mínimo, o RTT de referência, com a taxa real baseada no RTT medido. A diferença entre elas, multiplicada pelo RTT de referência, estima os dados enfileirados do fluxo.
Com cwnd de 50 segmentos, RTT de referência de 40 ms e RTT medido de 50 ms, a entrega esperada é de 1.250 segmentos/s e a entrega real é de 1.000 segmentos/s. A estimativa da fila é:
O Vegas cresce abaixo de um limiar inferior e diminui acima de um limiar superior. Se o tráfego baseado em perda continuar enchendo a fila compartilhada, o Vegas observará repetidamente o atraso e reduzirá sua taxa, o que pode deixá-lo com uma pequena parcela.
Construa o modelo do BBR em duas partes
O BBR estima a largura de banda do gargalo a partir das taxas máximas de entrega recentes e o RTT mínimo por meio de um filtro de 10 s. O produto dos dois estima o BDP. Seu alvo ideal é um enlace ocupado com aproximadamente um BDP em trânsito e poucos dados enfileirados.
Uma estimativa de largura de banda de 50 Mbps e um RTT mínimo de 30 ms resultam em 1,5 milhão de bits, ou 187.500 bytes, por BDP. Um ganho típico de janela de congestionamento de 2 limita os dados pendentes a cerca de 375.000 bytes. A taxa de cadenciamento é um controle separado: ganho de cadenciamento vezes a largura de banda estimada. Um limite permite dados em trânsito; ele não exige que o remetente envie ao dobro da largura de banda.
Acompanhe os estados da versão 3 do BBR
| Estado | Função principal | Comportamento no rascunho da versão 3 |
|---|---|---|
| Startup | Descobrir a capacidade | Cadencia a cerca de 2,77 vezes a estimativa; sai quando o crescimento estagna ou a perda é alta |
| Drain | Remover a fila inicial | Cadencia a cerca de 0,5 vez a estimativa |
| ProbeBW | Testar e usar a largura de banda | Ganhos de cadenciamento: Up 1,25, Down 0,9, Cruise 1,0, Refill 1,0 |
| ProbeRTT | Atualizar o RTT mínimo | Reduz os dados em trânsito em direção a meio BDP por pelo menos 200 ms e uma ida e volta |
O teste de crescimento de Startup é um crescimento da taxa de entrega inferior a 25% por três rodadas. ProbeRTT é programado no máximo uma vez a cada cerca de 5 s. No caminho do exemplo, ProbeBW Up tem como alvo 62,5 Mbps e Down, 45 Mbps. Esses detalhes da versão 3 são especificados no rascunho de internet do BBR, e não em uma RFC publicada sobre o BBR.
Compare os sinais e as vantagens e limitações
Reno e CUBIC aumentam até que perda ou ECN sinalize congestionamento. O BBR cadencia a partir de um modelo de largura de banda e RTT. Ele forma filas deliberadamente por pouco tempo em Startup e ProbeBW Up, portanto “baseado em modelo” não significa “nunca forma uma fila”.
A versão 1 do BBR praticamente ignorava perdas. A versão 3 usa perdas intensas, em torno de 2% em uma rodada, para limitar o excesso e melhorar a coexistência. Ela pode sustentar mais vazão em caminhos longos com perdas aleatórias, mas não consegue identificar perfeitamente por que um pacote foi perdido. Sua resposta específica à ECN permanece em aberto no rascunho; qualquer conexão que declare suporte a ECN deve responder a CE como congestionamento. A capacidade do buffer, o RTT, a versão e os algoritmos concorrentes continuam influenciando a equidade.
Principais conclusões
- O Vegas infere os dados enfileirados a partir das taxas esperada e real usando o RTT de referência.
- O BBR modela a largura de banda e o RTT mínimo e depois controla separadamente o cadenciamento e os limites de dados em trânsito.
- Startup e ProbeBW do BBR sondam intencionalmente acima da taxa de entrega estimada.
- Drain e ProbeRTT reduzem os dados enfileirados para diferentes finalidades de medição.
- A versão 3 do BBR limita perdas intensas; ela não ignora o congestionamento.
- O BBR é baseado em modelo, enquanto o Vegas responde diretamente ao aumento do atraso.
- A versão do algoritmo e as condições do caminho afetam a coexistência e o enfileiramento.
6Por que o QUIC pode evoluir enquanto compartilha a rede
O projeto de um protocolo de transporte precisa funcionar com equipamentos que já estão implantados. Extensões do TCP podem ser retardadas por dispositivos intermediários de rede e ciclos de atualização de sistemas operacionais. O QUIC transporta um protocolo de transporte cifrado sobre UDP para que as aplicações possam implantar novos comportamentos com mais facilidade. Acompanhe como fluxos, números de pacote e reconhecimentos mais ricos melhoram a entrega e a recuperação, enquanto o remetente continua seguindo princípios de controle de congestionamento familiares do TCP.
6.1 Transfira recursos de transporte para um projeto cifrado baseado em UDP
Um protocolo se ossifica quando dispositivos implantados dependem tanto de sua forma existente que as alterações se tornam difíceis de implantar. Dispositivos intermediários de rede inspecionam cabeçalhos TCP e podem rejeitar opções ou indicadores desconhecidos. Implementações baseadas no kernel também disseminam novos comportamentos por meio de atualizações do sistema operacional, muitas vezes lentamente.
Identifique os custos que o QUIC trata
O TCP evoluiu por meio de SACK, ECN, fator de escala da janela e novos controladores de congestionamento. Ainda assim, sua estrutura continua tendo importância para o tráfego web. Uma nova conexão convencional TCP com TLS precisa da negociação TCP antes da negociação TLS. Seu único fluxo ordenado de bytes também significa que um segmento faltante bloqueia a entrega dos bytes posteriores, incluindo dados de requisições não relacionadas. Esse é o bloqueio de início de fila no transporte.
Os endereços e as portas de uma conexão podem criar outro obstáculo quando um dispositivo muda de rede. O QUIC, padronizado na RFC 9000, altera essas partes do projeto de transporte enquanto carrega seus pacotes sobre UDP. O HTTP/3 funciona sobre QUIC.
Combine as negociações
O QUIC integra o TLS 1.3 à sua negociação de transporte. Em uma troca simples com RTT de 80 ms, processamento desprezível e nenhuma perda, uma nova conexão TCP com TLS 1.3 envia a requisição após duas idas e voltas e recebe os primeiros bytes da resposta após três: 240 ms. Uma nova conexão QUIC pode recebê-los após duas idas e voltas: 160 ms.
Uma conexão QUIC retomada pode enviar dados antecipados de aplicação em seu primeiro conjunto de pacotes, chamado 0-RTT. A primeira resposta pode então chegar após uma ida e volta, 80 ms neste exemplo. Dados antecipados podem ser repetidos por um atacante, portanto as aplicações os restringem a ações que podem ser repetidas com segurança. O termo 0-RTT descreve quando o envio pode começar, e não uma resposta instantânea.
Separe os fluxos, não todos os limites compartilhados
O QUIC transporta fluxos de bytes ordenados e independentes. Se um pacote contém dados da imagem 1, perdê-lo não bloqueia a entrega de dados já recebidos das imagens 2 e 3 em fluxos separados. Um pacote que transporta vários fluxos pode afetar cada um deles. Todos os fluxos ainda compartilham o controlador de congestionamento da conexão, portanto uma perda pode reduzir a taxa total disponível para eles.
O QUIC fornece entrega confiável de fluxos sobre UDP. Ele também fornece controle de fluxo tanto por fluxo quanto por conexão. O UDP transporta os dados, mas não substitui essas funções de transporte.
Proteja detalhes que podem mudar
O QUIC cifra as cargas úteis dos pacotes, incluindo todos os quadros de transporte. A proteção do cabeçalho cobre os números de pacote e alguns bits do primeiro byte. Campos necessários para roteamento e negociação, como IDs de conexão e versão, permanecem visíveis. Ocultar detalhes de transporte que podem mudar deixa menos comportamentos dos quais os dispositivos intermediários de rede possam depender.
Os IDs de conexão identificam uma conexão independentemente dos endereços IP e portas atuais. Com a validação do caminho, uma conexão pode migrar quando um telefone passa do Wi-Fi para o acesso celular, sem iniciar uma conexão completamente nova.
O QUIC geralmente é uma biblioteca no espaço do usuário. Uma atualização da aplicação pode, portanto, fornecer uma melhoria de transporte sem esperar que o kernel de cada sistema operacional seja alterado. Essa flexibilidade também atribui à aplicação a responsabilidade pela detecção correta de perdas, segurança, controle de fluxo e controle de congestionamento.
Principais conclusões
- A ossificação ocorre quando equipamentos implantados dificultam alterações em protocolos.
- O QUIC combina o estabelecimento do transporte e do TLS e pode oferecer dados antecipados 0-RTT sujeitos a ataques de repetição.
- Fluxos independentes evitam que um bloqueio de entrega ordenada afete fluxos não relacionados em todo o transporte.
- A criptografia da carga útil e a proteção do cabeçalho ocultam a maioria dos detalhes de transporte que podem mudar.
- IDs de conexão permitem a migração além de uma tupla fixa de endereços e portas.
- O QUIC acrescenta confiabilidade, controle de fluxo e controle de congestionamento acima do UDP.
6.2 Use sinais de perda mais claros com um controle de congestionamento familiar
O QUIC melhora o que um remetente pode aprender com os reconhecimentos, mas ainda precisa evitar a sobrecarga do caminho. A RFC 9002 define a detecção de perdas e um controlador padrão semelhante ao NewReno. As implementações podem usar outros algoritmos adequados, incluindo CUBIC ou BBR.
Identifique cada transmissão
Os números de pacote aumentam e nunca se repetem dentro de um espaço de números de pacote. Dados reenviados trafegam em quadros dentro de um novo pacote com um novo número. Um ACK pode, portanto, identificar a transmissão que chegou, evitando a ambiguidade do TCP entre um segmento original e sua retransmissão.
Os quadros ACK informam os intervalos recebidos e o atraso de ACK do receptor. Após a negociação, o remetente usa um atraso de ACK validado e limitado ao ajustar as estimativas de RTT; ele não subtrai automaticamente um atraso arbitrário do receptor de cada amostra.
O QUIC declara um pacote perdido quando um pacote com número pelo menos três posições posterior é reconhecido, ou por meio de seu limiar de tempo quando um pacote posterior é reconhecido. O limiar de tempo recomendado é 9/8 do maior valor entre o RTT mais recente e o RTT suavizado. Um tempo limite de sondagem, PTO, envia sondagens que provocam reconhecimentos. A expiração do PTO, por si só, não reduz cwnd ao mínimo.
Defina limites de janela em bytes
Para um tamanho máximo de datagrama d, a janela inicial da RFC 9002 é:
Com d de 1.200 bytes, o resultado é 12.000 bytes. Com d de 1.500 bytes, é 14.720 bytes. A janela mínima de congestionamento é de dois datagramas de tamanho máximo, portanto esses caminhos têm mínimos de 2.400 e 3.000 bytes, respectivamente.
No controlador padrão, uma perda ou um novo sinal de congestionamento CE reduz cwnd pela metade, respeitando o limite mínimo, e define ssthresh como a janela reduzida. Um período de recuperação impede outra redução por perdas adicionais de pacotes enviados antes do início da recuperação. O reconhecimento de um pacote enviado durante a recuperação encerra o período. O remetente então retoma o crescimento normal.
Reconheça uma falha sustentada
O congestionamento persistente é uma evidência mais forte do que a expiração de um temporizador. Ele exige uma sequência suficientemente longa de pacotes perdidos que provocam reconhecimentos, sem nenhum pacote intermediário reconhecido e com uma amostra anterior de RTT. Seu limiar de duração é:
Com RTT suavizado de 100 ms, variação de 10 ms, atraso máximo de ACK de 25 ms e granularidade desprezível do temporizador, o limiar é 495 ms. O intervalo de perda que atende às condições deve exceder esse valor. O controlador então reduz cwnd para dois datagramas, sua janela mínima.
Mantenha úteis os sinais e o controle de tempo
Os ACKs do QUIC podem informar contagens cumulativas de ECT(0), ECT(1) e CE. Após validar o funcionamento da ECN no caminho, o remetente trata um novo aumento de CE como um evento de congestionamento sem precisar de perda de pacote.
O cadenciamento distribui as transmissões. Uma taxa em torno de 1,25 vez cwnd dividida pelo RTT suavizado é uma abordagem sugerida; limites de rajada podem cumprir a mesma finalidade. Enviar uma janela inteira de uma vez cria uma rajada mesmo quando a taxa média é aceitável. A implantação no espaço do usuário facilita a distribuição de novos controladores, mas cada pilha ainda precisa compartilhar a largura de banda de forma responsável.
Principais conclusões
- Números de pacote únicos identificam transmissões; intervalos recebidos localizam lacunas.
- O ajuste do atraso de ACK segue regras de validação e negociação.
- Limiares de pacotes e de tempo detectam perdas; o PTO envia sondagens para obter resposta.
- O controlador padrão reduz a janela pela metade uma vez por episódio de recuperação e respeita um mínimo de dois datagramas.
- O congestionamento persistente exige um intervalo de perda que atenda às condições e seja maior que seu limiar de duração.
- Contagens ECN validadas podem sinalizar congestionamento sem descarte.
- O cadenciamento ou os limites de rajada evitam o envio da janela inteira em uma única rajada.
Exercícios resolvidos de Controle de congestionamento
1Acompanhe o tráfego por um gargalo
13 passos
- 1IntroduçãoUm enlace pode permanecer ocupado enquanto uma aplicação espera
Várias entradas rápidas alimentam uma saída mais lenta, um gargalo. O roteador precisa reter o excedente, portanto o mesmo fluxo pode ter alta vazão e uma longa espera.
Acompanhe primeiro a fila e depois considere o trabalho que não entrega dados novos (goodput e colapso de congestionamento). Por fim, decida que tipo de sinal poderia informar ao remetente que deve mudar seu comportamento. Essas três perspectivas explicam por que a atividade, por si só, é uma medida ruim da saúde da rede.
- 2ExplicaçãoCompare chegadas e saídas
O gargalo é o enlace com a menor capacidade disponível para o tráfego em seu caminho. Quando as chegadas sustentadas excedem sua taxa de saída, o excedente se acumula na fila de saída.
Abaixo da taxa de saída, a capacidade disponível esvazia a fila. Igualar exatamente essa taxa mantém uma fila existente inalterada sob taxas constantes: cada saída é substituída por uma chegada. Uma sobrecarga breve pode ser absorvida se for seguida de um período mais tranquilo.
- 3ExemploDetermine a velocidade de crescimento da fila
Um buffer vazio de roteador recebe 15 Mbps enquanto sua saída envia 11 Mbps. Primeiro, determine o excedente:
Converta o excedente em bytes por segundo:
Essa é a taxa de acúmulo dos dados em espera. Usar a taxa total de chegada contaria dados que o enlace de saída já transmitiu.
- 4ExemploTransforme dados enfileirados em tempo de espera
Mantenha a mesma saída de 11 Mbps. Um buffer de 1.000.000 de bytes fica cheio após 2 s de excedente a 500.000 bytes/s.
Quando cheio, ele contém 8.000.000 de bits à frente de um pacote que acaba de entrar. Sua espera aproximada é:
A taxa de saída determina quanto tempo os dados já enfileirados levam para sair. O excedente de entrada determina com que rapidez esse acúmulo se formou.
- 5DesafioPreveja o comportamento de uma fila após a queda da carga
Uma fila contém 300.000 bytes. Sua saída é de 12 Mbps, e as chegadas constantes caem para 8 Mbps. Quanto tempo a fila existente levará para esvaziar?
---reveal---
A taxa líquida de esvaziamento é de 4 Mbps, ou 500.000 bytes/s. Portanto:
Dividir pela taxa total de saída ignoraria os novos pacotes que continuam chegando enquanto o acúmulo antigo esvazia.
- 6ExplicaçãoAcompanhe o que uma retransmissão substitui
A vazão útil conta uma vez os dados novos e úteis de aplicação. A vazão conta o tráfego entregue, enquanto a carga oferecida inclui tudo o que é inserido na rede.
Um remetente confiável substitui dados perdidos, mas essas repetições consomem tempo do enlace. Se um temporizador expirar enquanto um pacote original está apenas atrasado, duas cópias podem percorrer o caminho e chegar com sucesso. A aplicação ainda recebe essa parte dos dados apenas uma vez.
- 7ExemploConsidere o trabalho perdido mais adiante no caminho
Um pacote percorre os enlaces A e B e depois é descartado na fila antes de C. As duas transmissões anteriores já consumiram capacidade, mas o pacote nunca chega ao destino.
À medida que mais tráfego é perdido tardiamente, os enlaces anteriores podem gastar uma parcela crescente de seu tempo com pacotes que serão descartados. A entrega fim a fim pode cair enquanto esses enlaces permanecem ocupados. Esse é um caminho para o colapso por congestionamento, e não apenas uma fila cheia em um roteador.
- 8DesafioDiferencie capacidade ocupada de progresso útil
Um enlace de 16 Mbps está totalmente ocupado. De seus pacotes de mesmo tamanho, 25% repetem dados que ele já transportou. Ignorando cabeçalhos e perdas posteriores, qual é a maior taxa possível de dados novos?
---reveal---
Apenas três quartos são dados novos:
Os outros 4 Mbps podem ser úteis para restabelecer a confiabilidade, mas não acrescentam dados novos à taxa contada aqui.
- 9Ideia-chaveSaiba o que muda no joelho e no precipício
Além do joelho da curva, uma carga oferecida maior traz pouco ganho de vazão enquanto o atraso aumenta rapidamente. Além do precipício da curva, a vazão cai à medida que perdas e trabalho desperdiçado passam a predominar.
Eles descrevem problemas diferentes: uma espera ineficiente pode aparecer antes do colapso da entrega útil. Um controlador deve manter o gargalo ocupado de forma produtiva enquanto evita o ponto de operação de alto atraso que um buffer grande pode ocultar.
- 10ExplicaçãoLocalize a origem do aviso
Com controle fim a fim, o remetente infere o congestionamento a partir de medições de perda, RTT ou entrega. Um roteador não fornece informação explícita sobre o congestionamento.
Com controle assistido pela rede, o roteador envia um aviso. Na ECN, ele marca um pacote que segue para o receptor, e o receptor informa essa marca de volta. A informação ainda é considerada assistida pela rede mesmo retornando dentro de um reconhecimento da extremidade.
- 11ConexãoSepare o sinal do controle de envio
Uma perda pode resultar de transbordamento de fila ou de corrupção em um enlace sem fio. Um aumento no RTT pode resultar de uma fila ou de uma mudança de rota. Uma marca informa explicitamente o congestionamento, mas precisa de suporte compatível no caminho.
Após interpretar o sinal, o remetente pode limitar uma janela ou escolher uma taxa com cadenciamento. Essas são escolhas de controle, separadas da origem do sinal. Aproximadamente uma janela por RTT relaciona a quantidade em trânsito à taxa obtida.
- 12DesafioEscolha um caminho útil para o sinal
Um download mantém ocupado um buffer grande de roteador. O receptor tem bastante memória livre. O roteador começa a marcar congestionamento, e o receptor ecoa as marcas. Que tipo de controle é esse e por que ele pode tratar o atraso do download?
---reveal---
É controle de congestionamento assistido pela rede. O remetente pode reduzir o tráfego que entra no caminho congestionado, permitindo que a fila do roteador diminua. Mais espaço no receptor não esvaziaria essa fila porque a capacidade limitante está na rede.
- 13RecapitulaçãoInterprete carga, entrega útil e sinais em conjunto
Preveja o crescimento da fila pela diferença entre chegadas e saídas; determine o tempo de espera dividindo os bits enfileirados pela taxa de saída. Depois, verifique quanto do trabalho do enlace entrega dados novos de aplicação.
Perda, atraso e sinais explícitos informam coisas diferentes a um remetente. Um controlador de congestionamento útil interpreta esses sinais e ajusta o tráfego para que o caminho entregue dados de forma eficiente sem manter filas excessivas.
2Acompanhe uma janela TCP da partida à recuperação
20 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoInterprete a janela antes de interpretar a taxa
- 2ExplicaçãoRespeite os limites do remetente e do receptor
- 3ExemploEstime uma taxa limitada pela janela
- 4ExemploCalcule os dados necessários para preencher um caminho
- 5DesafioEncontre o limite que realmente prevalece
- 6ExplicaçãoPor que a partida lenta cresce rapidamente
- 7ExemploMude a regra no limiar
- 8DicaIdentifique a fase em cada acompanhamento
- 9DesafioAcompanhe a mudança sem pular uma rodada
- 10ExplicaçãoDiferencie uma lacuna de um caminho silencioso
- 11ExemploEntre na recuperação rápida com inflação temporária
- 12ExemploTermine a recuperação no limiar
- 13DesafioUse a quantidade de dados em trânsito e reduza a janela corretamente
- 14ExplicaçãoCalcule a média da janela em dente de serra
- 15ExemploConverta a média em bits por segundo
- 16ConexãoVeja por que perda e RTT importam
- 17DesafioAltere duas entradas do modelo ao mesmo tempo
- 18Ideia-chaveUm BDP alto amplia o problema da recuperação lenta
- 19DesafioCombine a estimativa de taxa com o controle de fluxo
- 20RecapitulaçãoInterprete crescimento, recuperação e limites como decisões separadas
3Acompanhe o compartilhamento justo de um par ideal até usuários reais
12 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoPergunte quem recebe a capacidade
- 2ExplicaçãoDesenhe as duas retas-alvo
- 3ExemploObserve separadamente a diferença e a razão
- 4DesafioEscolha uma atualização que altere o compartilhamento relativo
- 5ConexãoSaiba quando a convergência ideal se aplica
- 6ExplicaçãoUse o índice de Jain para medir a igualdade
- 7ExemploCalcule uma pontuação e a utilização
- 8ExemploDivida o restante após atender a uma demanda pequena
- 9DesafioEncontre a população adequada para uma pontuação de equidade
- 10Ideia-chaveRemetentes e filas moldam o resultado
- 11DesafioDiferencie igualdade de comportamento eficiente do AIMD
- 12RecapitulaçãoSepare uma alocação de sua explicação
4Acompanhe um aviso antecipado de congestionamento
13 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoUma baixa contagem de perdas pode ocultar uma longa espera
- 2ExemploMeça a espera dentro de um buffer grande
- 3ExplicaçãoO RED fornece um aviso antecipado probabilístico
- 4ExplicaçãoO CoDel verifica se o atraso chega a ficar pequeno
- 5DesafioInterprete um histórico de atraso
- 6ConexãoSepare o atendimento dos fluxos do controle de atraso da fila
- 7ExplicaçãoMarque um pacote entregue
- 8ExemploComplete o ciclo de retorno do TCP clássico
- 9DesafioTrate ecos repetidos de um único evento
- 10ExemploDimensione uma resposta do DCTCP ao tráfego marcado
- 11ConexãoO L4S combina o comportamento das extremidades e das filas
- 12DesafioExplique a entrega sem expiração de tempo limite
- 13RecapitulaçãoAcompanhe detecção, marcação e resposta
5Compare o crescimento do CUBIC com o modelo de caminho do BBR
14 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoEscolha o que o controlador deve aprender
- 2ExplicaçãoComece com uma redução comum mais moderada
- 3ExemploDetermine o tempo de retorno cúbico
- 4ExemploAvalie um ponto abaixo do pico anterior
- 5Ideia-chaveA curva pura é apenas uma candidata
- 6DesafioUse os dois valores diferentes registrados pelo CUBIC
- 7ExemploDeixe o Vegas inferir os segmentos enfileirados
- 8ExplicaçãoConstrua o modelo de largura de banda e atraso do BBR
- 9ExemploCalcule o modelo antes de aplicar os ganhos
- 10ConexãoSonde e depois abra espaço para medir
- 11DesafioTransforme um modelo em configurações de controle
- 12DicaMantenha associadas a versão e as regras de resposta aos sinais
- 13DesafioDiferencie um aviso de RTT de um modelo de caminho
- 14RecapitulaçãoCompare medições, crescimento e enfileiramento
6Acompanhe o QUIC do estabelecimento à recuperação de congestionamento
15 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoAltere o transporte sem abandonar sua função
- 2ExplicaçãoEntenda por que mudanças no TCP podem demorar
- 3ConexãoProteja detalhes que precisam mudar
- 4ExemploCompare o tempo da primeira resposta
- 5ExemploSepare a ordenação dos fluxos do compartilhamento da conexão
- 6DesafioCorrija uma afirmação sobre transporte baseado em UDP
- 7ExplicaçãoDê a cada transmissão sua própria identidade
- 8ExemploDetecte uma lacuna antes de sondar em busca de resposta
- 9ExemploCalcule as janelas inicial e mínima
- 10DesafioReduza uma vez para um episódio envolvendo dados anteriores em trânsito
- 11ExemploDetermine uma duração para congestionamento persistente
- 12ConexãoTransporte contagens ECN em ACKs
- 13DicaVerifique quando os bytes saem, não apenas quantos
- 14DesafioRelacione a entrega independente a uma resposta compartilhada
- 15RecapitulaçãoConsidere juntos os benefícios de implantação e as obrigações de congestionamento
Questões de Controle de congestionamento
Conjunto 1: Interprete sinais de congestionamento e mudanças na janela10 Questões de Prática
Questão 1 de 10
Mostrar respostaOcultar resposta
Questão 2 de 10
Mostrar respostaOcultar resposta
Questão 3 de 10
Mostrar respostaOcultar resposta
Questão 4 de 10
Mostrar respostaOcultar resposta
Questão 5 de 10
Mostrar respostaOcultar resposta
Questão 6 de 10
Mostrar respostaOcultar resposta
Questão 7 de 10
Mostrar respostaOcultar resposta
Questão 8 de 10
Mostrar respostaOcultar resposta
Questão 9 de 10
Mostrar respostaOcultar resposta
Questão 10 de 10
Mostrar respostaOcultar resposta
Conjunto 2: Relacione taxas, equidade e sinais de transporte10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 3: Diagnostique filas e episódios de recuperação10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 4: Aplique as regras quando as condições mudam10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 5: Analise modelos e o comportamento do transporte10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Travou em uma questão sua? Ajuda com Tarefas
Termos-Chave
A
Aproximação de Mathis
Atraso controlado (CoDel)
Atraso de reconhecimento
Atraso excessivo por acúmulo em buffers
Aumento aditivo
Aumento aditivo e redução multiplicativa (AIMD)
B
Baixa latência, baixa perda e vazão escalável (L4S)
BBR
Bloqueio de início de fila (HOL)
C
Cadenciamento de pacotes
Carga oferecida
Colapso por congestionamento
Conexões paralelas
Congestionamento
Congestionamento detectado (CE)
Congestionamento persistente
Contagem apropriada de bytes (ABC)
Controle baseado em janela
Controle baseado em taxa
Controle de congestionamento assistido pela rede
Controle de congestionamento fim a fim
Controle de fluxo
Convergência rápida
CUBIC
D
Dados antecipados 0-RTT
Descarte na cauda
Desigualdade de compartilhamento causada por diferenças de RTT
Detecção antecipada aleatória (RED)
Diagrama de Chiu–Jain
E
Eco de ECN (ECE)
Enfileiramento justo
Equidade máx-min
Espaço de números de pacote
Estado de sondagem de largura de banda (ProbeBW)
Estado de sondagem do RTT (ProbeRTT)
F
Fila de saída
Fila persistente
Fluxo QUIC
Fração de perda
G
Ganho de cadenciamento
Ganho de janela
Gargalo
Gerenciamento ativo de filas (AQM)
I
Inflação da janela
Intervalo de reconhecimento
Í
Índice de equidade de Jain
J
Janela de congestionamento (cwnd)
Janela de congestionamento reduzida (CWR)
Janela de recepção (rwnd)
Janela inicial
Janela máxima de referência (Wmax)
Joelho da curva
L
Limiar de pacotes
Limiar de partida lenta (ssthresh)
Limiar de tempo
M
Migração de conexão
Modelo de dente de serra
N
NewReno
Notificação explícita de congestionamento (ECN)
O
Ossificação de protocolos
P
Partida lenta
Período de recuperação
Precipício da curva
Prevenção de congestionamento
Problema de recuperação em redes de alta velocidade
Produto largura de banda-atraso (BDP)
Q
Quantidade de dados em trânsito (FlightSize)
QUIC
R
Reconhecimento atrasado
Reconhecimento parcial
Reconhecimento seletivo (SACK)
Recuperação rápida
Redução multiplicativa
Região amigável ao Reno
Reta de eficiência
Reta de equidade
Retransmissão
Retransmissão desnecessária
Retransmissão rápida
RTT de referência
S
Sinal de congestionamento
Sincronização global
Sincronização por ACKs
T
Tamanho máximo de segmento (MSS)
TCP para centros de dados (DCTCP)
TCP Vegas
Tempo de ida e volta (RTT)
Tempo de permanência na fila
Tempo de retorno K do CUBIC
Tempo limite de retransmissão (RTO)
Tempo limite de sondagem (PTO)
Tráfego amigável ao TCP
Transporte com suporte a ECN (ECT)
V
Vazão
Vazão útil
Sobre esta aula
Crie seus próprios Materiais de Estudo
Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.