O VOQ (Virtual Output Queuing) é um mecanismo avançado de gerenciamento de filas em switches e roteadores, projetado para eliminar o problema de head-of-line blocking (HOL blocking) – um gargalo comum em arquiteturas de rede tradicionais.
Como Funciona?
- Filas Dedicadas por Porta de Saída
Em switches convencionais, os pacotes são armazenados em uma única fila compartilhada, podendo causar congestionamento se um pacote à frente estiver esperando por uma porta ocupada.
No VOQ, cada porta de saída tem sua própria fila virtual no buffer de entrada. Assim, pacotes destinados a portas diferentes não competem pelo mesmo espaço.
- Eliminação do HOL Blocking
Se um pacote não pode ser encaminhado imediatamente (por exemplo, se a porta de destino está ocupada), somente essa fila específica é bloqueada, enquanto pacotes para outras portas continuam fluindo.
- Alocação Dinâmica de Largura de Banda
O VOQ permite agendamento inteligente (usando algoritmos como Round Robin ou Weighted Fair Queuing) para priorizar tráfego crítico e otimizar a utilização do switch.
Vantagens do VOQ
Permite maior eficiência na comutação (evita desperdício de largura de banda devido a bloqueios), permite baixa latência (pacotes não ficam presos atrás de outros em filas compartilhadas), oferece justiça no tráfego (prevê starvation, onde alguns fluxos monopolizam a banda) e escalabilidade (essencial para data centers e redes de alta capacidade)
Aplicações Típicas
- Data Centers (evita congestionamento em switches spine-leaf)
- Redes Corporativas (melhora desempenho em cenários com múltiplos serviços, como VoIP e vídeo)
- Switches Programáveis (usado em ASICs modernos)
Comparação com Arquiteturas Tradicionais
| Modelo Tradicional | VOQ |
| Uma fila compartilhada por entrada | Múltiplas filas virtuais (uma por porta de saída) |
| Risco alto de HOL blocking | Elimina HOL blocking |
| Ineficiência em tráfego assimétrico | Alta eficiência mesmo com cargas desbalanceadas |
Imaginando que o switch é um grande organizador de tráfego de dados, e o VOQ (Virtual Output Queuing) é seu sistema de filas inteligentes. Em vez de uma única fila “desorganizada”, ele cria filas separadas e organizadas para cada destino, evitando congestionamentos no encaminhamento do tráfego.
O tráfego é dividido em dois tipos Unicast e Flood.
No final, o switch usa um sistema de pesos para decidir quanto de cada tipo de tráfego envia – mantendo tudo equilibrado, sem deixar ninguém esperando demais.
Geralmente, para o tráfego unicast, cada módulo de entrada contém oito VOQs por porta de destino (uma para cada nível de prioridade). O perfil da fila define qual VOQ armazena cada pacote, enquanto o perfil de agendamento determina a ordem de transmissão. Os pacotes aguardam nas VOQs até serem selecionados pelo scheduler para cruzar o fabric do switch, sendo temporariamente armazenados em uma fila de transmissão reduzida na porta de saída. Já o tráfego flood (broadcast, multicast e unknown-unicast) segue um caminho separado, com oito VOQs por módulo de destino, onde cópias dos pacotes são replicadas para cada módulo alvo antes da transmissão.
O agendamento final combina ambas as filas (unicast e flood) usando um algoritmo Weighted Fair Queuing (WFQ). Esse scheduler atribui um peso fixo, como por exemplo, de 4 para tráfego unicast e 1 para flood, assegurando que pacotes replicados representem cerca de 20% do tráfego total quando ambas as filas estão ativas. Essa abordagem equilibra eficiência e justiça, priorizando tráfego direcionado sem negligenciar a entrega multidestino (flood).
Referências



