Pausar os quadros passados para o host?

3

Eu vi recentemente um fórum Debian que mencionou que os quadros de pausa devem ser descartados pela camada MAC e, se não, o driver deve descartá-los. Isso é verdade? Como um host realmente reduz o tráfego se receber um quadro de pausa de um switch?

Estou tentando entender melhor o controle de fluxo de Ethernet. Se a afirmação acima for verdadeira, o que é passado para o host realmente significa?

    
por user_ABCD 26.01.2016 / 21:51

2 respostas

3

Existem três maneiras de lidar com o controle de fluxo:

  1. Se você está sobrecarregado, você descarta dados no chão.
  2. Se você não puder fornecer o serviço para uma solicitação de uma camada superior, normalmente porque sua fila local está cheia, você retornará um erro para essa camada superior.
  3. Você notifica proativamente as camadas superiores que precisam diminuir a velocidade.

Na camada Ethernet, o método 3 é suportado através de quadros de pausa. Muitas vezes camadas superiores não suportam o método 3, mas suportam o método 2. Quando uma camada tem uma camada abaixo que suporta o método 3, mas a camada acima só suporta o método 2, ela pode parar de passar dados para camadas inferiores temporariamente, causando o método 2 para aplicar em camadas mais altas.

Ou, para colocar de forma mais concreta, quando você recebe um quadro de pausa, interrompe o mecanismo de envio e define um cronômetro para reiniciar o mecanismo de envio no tempo apropriado. Enquanto o mecanismo de envio é interrompido, suas filas locais serão preenchidas com dados das camadas superiores. Se eles ficarem cheios, você retorna erros "ocupados" para as camadas superiores e eles lidam com isso, no entanto, é apropriado.

    
por 26.01.2016 / 22:06
3

O controle de fluxo de Ethernet, até o momento, tem sido um experimento com falha, porque geralmente causa o bloqueio de linha de cabeça problemas. Os switches não devem enviar quadros de pausa aos hosts. Acredito que os switches da Cisco não podem ser configurados para enviar quadros de pausa; ativar o controle de fluxo de Ethernet em um switch Cisco apenas faz com que ele honre os quadros de pausa que recebe. Os hosts são sábios para ignorar quadros de pausa recebidos.

Se o switch não puder lidar com a transmissão, ele deve soltar o quadro. Camadas mais altas, mais notavelmente o TCP, usam quadros ignorados para saber quando ocorreu o congestionamento e quando se deve recuar. Falha ao descartar quadros faz com que o TCP Congestion Control falhe, normalmente resultando em bufferbloat .

    
por 26.01.2016 / 22:26