LinuxForum.Fans
Тема

Хеш шейпер проверьте скрипт

Автор: trksergey 1 сообщений 2286 просмотров
#226050

Созрела необходимость создать шейпер на хеш таблицах. Опыт администрирования linux сравнительно небольшой. Написал скрипт задающий следующие настройки

text

#корень
sudo tc qdisc add dev eth1 root handle 1:0 htb default 90
sudo tc class add dev eth1 parent 1:0 classid 1:1 htb rate 10Mbit

#таблицы sudo tc filter add dev eth1 parent 1:0 prio 1 handle 100:0 protocol ip u32 divisor 16

sudo tc filter add dev eth1 parent 1:0 prio 1 handle 1:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 2:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 3:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 4:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 5:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 6:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 7:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 8:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 9:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 10:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 11:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 12:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 13:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 14:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 15:0 protocol ip u32 divisor 256 sudo tc filter add dev eth1 parent 1:0 prio 1 handle 16:0 protocol ip u32 divisor 256

sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:0:0 match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 1: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:1:0 match ip dst 192.168.1.0/24 hashkey mask 0x000000ff at 16 link 2: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:2:0 match ip dst 192.168.2.0/24 hashkey mask 0x000000ff at 16 link 3: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:3:0 match ip dst 192.168.3.0/24 hashkey mask 0x000000ff at 16 link 4: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:4:0 match ip dst 192.168.4.0/24 hashkey mask 0x000000ff at 16 link 5: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:5:0 match ip dst 192.168.5.0/24 hashkey mask 0x000000ff at 16 link 6: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:6:0 match ip dst 192.168.6.0/24 hashkey mask 0x000000ff at 16 link 7: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:7:0 match ip dst 192.168.7.0/24 hashkey mask 0x000000ff at 16 link 8: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:8:0 match ip dst 192.168.8.0/24 hashkey mask 0x000000ff at 16 link 9: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:9:0 match ip dst 192.168.9.0/24 hashkey mask 0x000000ff at 16 link 10: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:a:0 match ip dst 192.168.10.0/24 hashkey mask 0x000000ff at 16 link 11: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:b:0 match ip dst 192.168.11.0/24 hashkey mask 0x000000ff at 16 link 12: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:c:0 match ip dst 192.168.12.0/24 hashkey mask 0x000000ff at 16 link 13: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:d:0 match ip dst 192.168.13.0/24 hashkey mask 0x000000ff at 16 link 14: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:e:0 match ip dst 192.168.14.0/24 hashkey mask 0x000000ff at 16 link 15: sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 100:f:0 match ip dst 192.168.15.0/24 hashkey mask 0x000000ff at 16 link 16:

sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 800:0:0 match ip dst 192.168.0.0/20 hashkey mask 0x00000f00 at 16 link 100:

# нарезка для каждого ПК sudo tc class add dev eth1 parent 1:1 classid 1:100c htb rate 2048Kbit prio 5 sudo tc qdisc add dev eth1 parent 1:100c handle 100c:0 sfq perturb 10 sudo tc filter add dev eth1 parent 1:0 protocol ip u32 ht 1:c:0 match ip dst 192.168.0.12/32 hashkey mask 0x000000ff at 16 classid 1:100c ... ...

# класс по умолчанию sudo tc class add dev eth1 parent 1:1 classid 1:90 htb rate 16Kbit prio 10 sudo tc qdisc add dev eth1 parent 1:90 handle 90:0 sfq perturb 10

Запускаю. Все вроде работает.
Подскажите, правильно реализован принцип хеш таблиц? Что можно улучшить?

ОС: ubuntu server 10.04 x86 и ubuntu server 11.10 x64

Войдите или зарегистрируйтесь, чтобы ответить.