Entrega de pacotes no protocolo TCP [fechado]

2

Vamos supor que a estação A de 1 Gbit / s queira enviar os pacotes para a estação B de 100 Mbit / s. Existem três roteadores com 10 Mbit / s, 1 Gbit / se 10 Mbit / s, respectivamente. Como a entrega de pacotes ocorre?

    
por Tanmayi 07.11.2017 / 04:44

2 respostas

10

TCP controle de fluxo entra em ação, já que as velocidades são diferentes.

Outra coisa que poderia afetar o TCP nessa situação, com base no tipo de link, é se o roteador de 1 Gbit / s está usando quadros jumbo, mas não é diferente do que se os roteadores tivessem MTUs diferentes - os pacotes seriam descartados ou fragmentado.

    
por 07.11.2017 / 05:12
9

Em resumo, você obterá uma taxa de transferência de 10 Mbit / s.

Ingenuamente, pode-se pensar que o controle de fluxo do TCP será ativado como afirma LawrenceC, e essa é, em geral, a resposta correta.

No entanto, no seu exemplo concreto, não é.

O roteador de 10 Mbit / s conectado ao seu cartão de 1 GbE negociará 10 Mbit / s. O mesmo para o roteador de 10 Mbit / s no roteador GbE intermediário e no lado B. Fim da história.

Assim, o adaptador de rede só irá enviar e receber a essa taxa, nunca excedendo-o. De fato, do seu ponto de vista, toda a rede é de 10 Mbit / s.

O roteador GbE intermediário pode receber e encaminhar pacotes a 1 Gbit / s com o resto do mundo, mas só fará 10 Mbit / s em sua rota particular.

Vamos supor que a topologia de rede é um pouco mais complicada (Internet!), e há alguns quantidade de roteadores gigabit, e um ou vários roteadores de 10 Mbit / s < em> em algum lugar entre eles. Esse caso é um pouco mais interessante.

Neste caso, seu computador A enviará pacotes a 1 Gbit / s, mas sabemos que apenas 10 Mbit / s podem passar (bem, não de verdade, com rotas alternativas, mas vamos esquecer isso). Como isso pode funcionar?

Neste caso, de fato, o controle de fluxo TCP será ativado. A Estação B receberá pacotes com 100 Mbit / s, mas eles só chegam esporadicamente. Você enviará pacotes com 1 Gbit / s, mas você terá que fazer uma pausa regularmente. Isso funciona na camada TCP sem que você saiba.

O TCP enviará alguns pacotes o mais rápido possível (e manterá uma "janela"), e a placa de rede os colocará no fio tão rápido quanto possível e permitido, e então o TCP aguardará por confirmações para entrar. Se eles entram, tudo está bem e mais coisas podem ser enviadas o mais rápido possível. Se os ACKs não entrarem, houve qualquer um erro (improvável) ou os pacotes foram enviados muito rapidamente. Portanto, o tamanho da janela é reduzido. Uma vez que os ACKs entram novamente, a janela é gradualmente aumentada novamente. Existem diferentes algoritmos para isso, e eles são bastante elaborados, mas em princípio é isso.

Agora ... os roteadores aceitam um número limitado de pacotes e os encaminham de acordo com sua capacidade de fazer isso, o mais rápido possível. Eventualmente, eles terão que eliminar pacotes. Isso não é um erro, mas uma condição normal.

Ironicamente, os presumivelmente antigos roteadores de 10 Mbit / s provavelmente enfileiram muitos pacotes (uma vez que uma vez, a crença era "mais é sempre melhor", hoje em dia sabe-se que o oposto é o caso, roteadores têm filas muito curtas).

O insight de que nem sempre é melhor vem do fato de que, se um roteador enfileira muitos pacotes e os encaminha, o remetente pode assumir que os pacotes foram perdidos (porque nenhum ACK entrou) e reenviar. O que faz com que o receptor receba pacotes duplicados que ele deve descartar e faz com que o roteador fique ainda mais congestionado, derramando óleo no fogo. Portanto, os roteadores modernos descartam rapidamente.

Agora, no exemplo de um antigo roteador de 10 Mbit / s em algum lugar no meio (e velocidade não negociada), é muito provável que você obtenha consideravelmente menos do que 10 Mbit / s para isso. Você recebe reenvios e entregas duplas. Nada disso é visível para o aplicativo, é apenas mais lento por algum motivo estranho.

    
por 07.11.2017 / 12:18

Tags