Limitação de largura de banda imprecisa em filas de altq

2

Estou configurando um ambiente no qual tenho um servidor Linux, um roteador OpenBSD e um cliente Linux, e quero limitar a largura de banda que o cliente deve poder usar.

Eu tenho feito esses testes com "netcat" e "time" (usando o tempo para medir o tempo da transferência com o netcat), e o que acontece ao tentar esses testes (usando o protocolo TCP, as filas serão para alguns razão não funciona com UDP) é que as filas não são exatas em tudo.

Por exemplo: ao definir um limite de largura de banda de 10mbit, o cliente não pode usar mais de cinco mbits, ao definir um limite de 100mbit, o cliente não pode usar mais que cerca de 50mbit.

A configuração parece (usando um limite de 100mbit no exemplo):

#queue rules
altq on { $int_if, $ext_if } cbq bandwidth 100Mb queue { def, low }
queue def bandwidth 0Mb cbq(default)
queue low bandwidth 100Mb cbq(default)

#Passrules test

pass out quick from $int_if to $ext_if queue low
pass in quick from $ext_if to $int_if queue low
pass out quick from $ext_if to $int_if queue low
pass in quick from $int_if to $ext_if queue low
    
por user42511 07.05.2010 / 19:30

1 resposta

2

Na minha experiência para o altq funcionar bem, você realmente precisa adicionar a opção red , rio ou ecn às suas filas limitantes, caso contrário, à medida que você se aproxima da saturação (física ou fila virtual) você está para algumas situações desagradáveis. Dê uma olhada na seção sobre RED (Detecção Antecipada Aleatória) em o howto altq para mais informações.

Além disso, dois problemas com o seu snippet acima:

  1. Você tem duas default filas: Isso não é permitido (na verdade, pf deve se adequar a isso).
  2. Uma de suas filas não tem largura de banda (0Mb)? - Isso provavelmente não é o que você queria / quis dizer ...
por 07.05.2010 / 20:20