Como estão relacionados os enfileiramentos justos ponderados e a detecção precoce aleatória ponderada?

10

Estou tentando entender como os sistemas de QoS funcionam e não tenho certeza de como exatamente o WFQ e o WRED interagem.

No começo, pensei que o WFQ é um mecanismo de enfileiramento e que o WRED é um mecanismo para evitar congestionamentos. O WFQ deve agendar pacotes nas filas e o WRED existe para descartá-los quando as filas estiverem cheias. Se eu estiver configurando a QoS, por exemplo, em um switch L3, eu configuraria um mecanismo de enfileiramento e um mecanismo de prevenção de congestionamentos, para que, em teoria, eu pudesse ter o WFQ e o WRD trabalhando juntos. Por exemplo, este documento parece sugerir que eles seriam configurados dessa maneira. Alguns outros documentos da Cisco mencionam que eu poderia usá-los independentemente.

Então, eu queria aprender mais sobre como eles funcionavam e comecei a pesquisar na Internet. Como resultado, agora não tenho idéia do que são e como funcionam.

Alguns sites (pelo menos para minha compreensão do conteúdo) afirmam que algoritmos de agendamento de pacotes e algoritmos para evitar congestionamentos são basicamente os mesmos. Por exemplo, neste artigo da Wikipedia, todos eles são colocados em um mesmo grupo. Alguns artigos aleatórios mencionaram que eu poderia usar o WFQ XOR WRED.

Então, o que eu queria perguntar é qual a relação entre WFQ e WRED? Quando eu usaria um ou outro e quando ambos, se isso é possível?

AndrejaKo
fonte
11
WFQ e WRED não têm nenhuma relação um com o outro para além de compartilhar o uso da mesma palavra Inglês
Mike Pennington
11
"Então eu queria aprender mais sobre como eles funcionavam e comecei a pesquisar na Internet. Como resultado, agora não tenho idéia do que são e como funcionam". Isso descreve 99,98% da minha experiência tentando entender a QoS.
perfil completo de Nanban Jim

Respostas:

10

O enfileiramento justo ponderado (WFQ) é como o nome implica em um algoritmo de enfileiramento. O enfileiramento é usado quando há congestionamento em uma interface. Isso geralmente é detectado pelo fato de o anel de transmissão (anel TX) estar cheio. Isso significa que a interface está ocupada enviando pacotes. O enfileiramento não ocorre a menos que haja congestionamento na interface. Em alguns casos, o tamanho do anel TX pode ser manipulado. Um pequeno anel TX dá à fila do software mais poder sobre quais pacotes são enviados primeiro, mas não é muito eficaz. Um anel TX muito grande tornaria o software na fila quase inútil e levaria a uma latência e instabilidade mais altas para pacotes importantes.

O algoritmo de enfileiramento padrão geralmente é o primeiro a entrar, primeiro a sair (FIFO). Isso significa que os pacotes são entregues exatamente na ordem em que chegam na entrada da interface. Isso geralmente não é desejável porque alguns pacotes devem ser priorizados.

É bastante comum que um cliente compre um serviço de um provedor de serviços de Internet (ISP) na subrate. Ou seja, o cliente compra um serviço de 50 Mbit / s, mas a interface física está sendo executada a 100 Mbit / s. Nesse caso, não haverá congestionamento, mas o ISP limitará a quantidade de tráfego do cliente. Para introduzir congestão artificial nesses casos, um modelador pode ser aplicado.

Portanto, agora que há congestionamento, um algoritmo de fila pode ser aplicado. Observe que os algoritmos de enfileiramento não fornecem largura de banda extra, apenas permitem decidir quais pacotes são mais importantes para nós. O WFQ é um algoritmo que utiliza vários parâmetros e toma uma decisão com base nisso. O algoritmo é bastante complexo e usa peso (IP Precedence), tamanho do pacote e tempo de programação como parâmetros. Há uma explicação muito detalhada do INE aqui. O WFQ é uma boa opção se você não quiser mexer muito com as filas, pois fornece largura de banda adequada para fluxos de tamanho pequeno como SSH, Telnet, voz e isso significa que uma transferência de arquivo não roubará toda a largura de banda.

A Detecção Precoce Aleatória Ponderada (WRED) é um mecanismo para evitar congestionamentos. WRED mede o tamanho das filas, dependendo do valor de Precedência e começa a soltar pacotes quando a fila está entre o limite mínimo e o limite máximo. A configuração decidirá que 1 em cada N pacotes será descartado. O WRED ajuda a impedir a sincronização e a privação de TCP. Quando o TCP perde pacotes, o início é lento e, se todas as sessões TCP perderem pacotes ao mesmo tempo, elas poderão se tornar sincronizadas, o que fornece um gráfico como este:

Sincronização TCP

Como pode ser visto se o WRED não estiver configurado, o gráfico fica a todo vapor, depois silencioso, depois a todo vapor e assim por diante. O WRED fornece uma taxa de transmissão mais média. É importante observar que o UDP não é afetado pela queda de pacotes porque não possui mecanismo de reconhecimento e janela deslizante implementada como o TCP. Portanto, o WRED não deve ser implementado na classe baseada em UDP, como uma classe que manipula SNMP, DNS ou outros protocolos baseados em UDP.

O WFQ e o WRED podem e devem ser implantados juntos.

Daniel Dib
fonte
2
Oi Daniel, boa resposta. Isso não deveria ser WFQ (não WQF)? Além disso, vale a pena mencionar que WRED não é eficaz contra UDP e você deve evitar usá-lo em classes com base UDP como UDP Voz
Mike Pennington
Obrigado Mike. Não sei por que digitei o WFQ errado, editei isso. Também fez uma anotação rápida no UDP. Você sempre fornece ótimas postagens.
precisa
8

Primeiro de tudo, não acredite em tudo que você lê na Internet ;-)

Às vezes, algoritmos (ou a maneira como são fisicamente implementados) não se encaixam perfeitamente em uma categoria teórica. O que você chama é menos importante do que entender o que faz.

O objetivo principal do WFQ (ou qualquer outro algoritmo de agendamento) é compartilhar a largura de banda limitada do link entre os vários fluxos. O WFQ tenta alocar a largura de banda proporcionalmente a cada fluxo. O CBWFQ faz o mesmo para cada "classe". Em um mundo perfeito, com filas ilimitadas e memória ilimitada, isso seria tudo o que você precisa - você compartilha a largura de banda e todos ficam felizes.

Mas como os dispositivos não têm filas e memória ilimitadas, alguns "atalhos" precisam ser feitos. Como uma fila tem um tamanho limitado, existe o risco de a fila ser preenchida, causando quedas de cauda e sincronização de tráfego. Basicamente, se minha fila está transbordando, não estou mais controlando a largura de banda.

Para evitar minhas filas transbordando, eu uso a detecção precoce aleatória. Esse algoritmo descarta pacotes aleatoriamente da fila de acordo com a profundidade da fila (profundidade) - quanto mais cheia a fila, mais pacotes serão descartados. O objetivo é impedir o transbordamento da fila, para que o algoritmo de agendamento possa funcionar.

Então, um engenheiro da Cisco notou que era possível usar menos filas (hardware mais simples) e eliminar aleatoriamente diferentes tipos de tráfego em diferentes profundidades de fila. WRED descarta o tráfego da fila em diferentes profundidades, dependendo do tipo de tráfego. Embora você possa chamar o WRED de um mecanismo para evitar congestionamentos, uma vez que a profundidade em que o tráfego é descartado varia de acordo com o tipo de tráfego, o efeito é que tipos diferentes obtêm menos espaço na fila e, portanto, menos largura de banda. Por isso, também atua como um algoritmo de agendamento. Você diz po-tay-to e eu digo po-tah-toe.

Mais uma diferença: o FQ e o WFQ funcionam em todos os tipos de tráfego, uma vez que contam essencialmente bytes. O RED e o WRED funcionam apenas com o TCP, pois dependem do mecanismo de controle de fluxo do TCP para diminuir a velocidade do tráfego e impedir que a fila transborde.

(Observação: por uma questão de explicação, estou ignorando as filas de prioridade e o LLQ. Essa é outra resposta).

Eu concordo com tudo o que Mike disse também.

Ron Trunk
fonte
11
Excelente resposta e comentário.
generalnetworkerror
-1

Aqui está um exemplo de CBWFQ e WRED:

mapa de política OUT

classe
Porcentagem de prioridade de voz 20


por cento da largura de banda do vídeo da classe 30


por cento da largura de banda da classe P1 10
dscp de detecção
aleatória com detecção aleatória dscp af31 26 40 10


por cento da largura de banda da classe P2 15
dscp de detecção
aleatória com detecção aleatória dscp af21 24 40 10

classe class-default-
fair-fila
-random-detect com base em dscp

mihai
fonte
infelizmente este exemplo não responde a sua pergunta. Quando não é o mesmo que como
Mike Pennington
Para uma perspectiva, é como perguntar a um motorista de carro de corrida como os turbocompressores e as relações de transmissão estão relacionados e fazer com que ele o conduza por uma pista de corrida sem dizer uma palavra. Se você já entende a interação (e / ou a falta dela), tudo bem ... mas você não teria feito a pergunta.
perfil completo de Nanban Jim