Para compreender o WRED primeiro é preciso compreender o RED.
Ambos algoritmos servem para controlar os descartes de pacotes antes que haja um congestionamento total na interface.
O conceito do RED é criar um limite minimo para uma fila, um limite máximo e uma probabilidade de descarte.
Vou colocar valores imaginários para que possa compreender esta explicação.
Imagine uma fila aonde podem ser colocados 500 pacotes, quando a interface começa a ficar congestionada e o roteador não consegue transmitir os pacotes ele começa a coloca-los nesta fila, se esta fila enche, todos os pacotes exedentes são dropados.
Com o RED pode-se configurar um limite minimo de 100 pacotes e um limite máximo de 500 e uma probabilidade de descarte de 10%, enquanto houverem menos de 100 pacotes na fila nenhum é dropado, quando houverem entre 100 e 500 pacotes 10% destes pacotes serão dropados, se a fila ultrapassar 500 pacotes, todos serão dropados.
O WRED funciona semelhante, mas considerando o peso do pacote, este peso normalmente é associado com a marcação, seja TOS, IP PRECEDENCE, DSCP, ...
Neste caso imagine uma fila para cada marcação com limites minimos, máximos e probabilidade de descarte.
Em ROTEADORES CISCO o comando para se configurar o wred é o random-detect, vou citar um exemplo:
class INTERNET
random-detect dscp-based
random-detect dscp 12 20 500 2
random-detect dscp 20 200 500 5
random-detect dscp 28 300 500 10
Vamos agora a explicação de cada linha deste exemplo:
random-detect dscp-based
Informa que o WRED será baseado em marcações DSCP
random-detect dscp 12 20 300 2
O numero 12 indica qual marcação DSCP entrará nesta fila, este valor esta em decimal, mas pode ser configurado com o próprio valor do DSCP, no caso 12 indica AF12
Com isso todo pacote que entrar na classe INTERNET e tiver a marcação AF12 entrará nesta fila
O Valor 20 indica o limite minimo da fila e o 300 o máximo e o 2 o denominador de descarte, com isso quando houver congestionamento e a fila estiver entre 20 e 300 pacotes serão dropados pacotes com a probabilidade de 1/2 ou seja 50% dos pacotes, acima de 300 todos os pacotes AF12 serão dropados.
random-detect dscp 16 200 500 5
O numero 20 é o AF22, com isso quando houver congestionamento e a fila estiver entre 200 e 500 pacotes serão dropados pacotes com a probabilidade de 1/5 ou seja 20% dos pacotes, acima de 500 todos os pacotes AF22 serão dropados.
random-detect dscp 18 300 500 10
O numero 28 é o AF32, com isso quando houver congestionamento e a fila estiver entre 300 e 500 pacotes serão dropados pacotes com a probabilidade de 1/5 ou seja 10% dos pacotes, acima de 500 todos os pacotes AF32 serão dropados.
Apenas complementando a explicação muitas vezes me questionaram sobre como fazer a conversão do valor AFXX para o numero decimal. É preciso compreender cada valor do cabeçalho, o cabeçalho DSCP é contido de 8 bits, sendo os 3 primeiros o tipo da classe, os dois seguintes a probabilidade de descarte dentro da classe, o proximo não é usado e os dois ultimos considerados como 0 por ação padronizada, com isso:
AF31
011 01 0 00
Para converter o DSCP para decimal retirados a ação padronizada e mantemos os demais bits
011010 = 26
Para converter o DSCP para o TOS retirados mantemos todos os bits e convertemos de binario para hexadecimal
01101000 = 0x68
Espero que tenha ajudado,
abs