Compartilhamento de largura de banda entre IPs

1

Há 200 usuários em minha rede e esses usuários estão em dois grupos do AD e não podem definir intervalos de IP específicos para cada grupo. Quero definir, para cada grupo, a quantidade de largura de banda que pode ser compartilhada entre usuários de grupos.

Eu posso gerenciar a largura de banda para um IP com o squid, e também com o iptables + tc, mas eu quero definir a largura de banda para grupos de IPs que compartilham entre usuários. Como posso fazer isso?

    
por haw3d 06.03.2011 / 17:49

1 resposta

2

Eu posso responder como gerenciar a largura de banda quando você souber o que é IP em qual grupo. Você pode usar o bloco de tokens hierárquico para alocar três grupos.

  • 10 Grupo A
  • 20 Grupo B
  • 30 Tráfego desconhecido para / de dispositivos não AD em sua rede

#Create egress shaping
$TC qdisc add dev eth0 root handle 1: htb default 20 r2q 50

$TC class add dev eth0 parent 1: classid 1:1 htb rate 19mbit ceil 19mbit

$TC class add dev eth0 parent 1:1 classid 1:10 htb rate 9mbit ceil 15mbit prio 1
$TC class add dev eth0 parent 1:1 classid 1:20 htb rate 8mbit ceil 15mbit prio 1
$TC class add dev eth0 parent 1:1 classid 1:30 htb rate 2mbit ceil 10mbit prio 2

#Send everything unknown to classid 1:30. The filter has low priority 
#(higher numbers are filtered later)
$TC filter add dev eth0 parent 1: prio 20 protocol all u32 match u32 0 0 flowid 1:30

No script acima, os grupos podem emprestar largura de banda a outros grupos, caso não o usem. Se você não quiser que o conjunto ceil tenha o mesmo valor que taxa .

Agora você pode escrever um script que envia IPs dinamicamente para a classe 1:10 ou 1:20. Provavelmente você tem que ligar alguns eventos dhcp ou ad.

O script do grupo A pode ter esta aparência:


$TC filter replace dev eth0 parent 1: protocol ip prio 3 u32 match \
                ip dst $THEIP/32 flowid 1:10

Lembre-se de que você só pode controlar o que envia. Portanto, se o seu roteador tiver a interface eth0 e eth1, você também precisará gerenciar a largura de banda na eth1.

E considere anexar a folha QQISC do SFQ às classes. O SFQ é ótimo!


$TC qdisc add dev eth0 parent 1:10 handle 110: sfq perturb 10
$TC qdisc add dev eth0 parent 1:20 handle 120: sfq perturb 10
$TC qdisc add dev eth0 parent 1:30 handle 130: sfq perturb 10

Mapeamento de IPs para grupos

Descobrir o que é IP em qual grupo depende do software que você usa. Se o seu software não suportar eventos, você poderá escrever um script que analise o log e decida alocar um IP em um determinado grupo.

    
por 11.03.2011 / 08:11