asid2006 Posted March 26, 2015 Posted March 26, 2015 (edited) Доброго времени суток, коллеги! Был старый сервер с настроенным TC+NAT (настраивал не я). Нагрузка где-то 1000 абонентов. Сервер перестал справляться с нагрузкой и решили заменить его новым. Поставил на новый сервер CentOS 6.5, обновил, скопировал скрипты настройки интерфейсов, настройки iptables и TC. Увеличил net.netfilter.nf_conntrack_max и /sys/module/nf_conntrack/parameters/hashsize. В итоге новый сервер вместо 10 мбит для абонента выдаёт 6, есть потеря пакетов как в сторону интернета, так и в локалку. TC настроен только в сторону локалки. Канал не забивается, нагрузка на ЦП низкая. Если убрать фильтры с интерфейса (т.е. отдавать клиентам весь канал без ограничения скорости), канал забивается полностью. В /var/log/messages чисто. При загрузке (boot.log) тоже везде ОК. На сервере также стоит named и dhcpd. TC для фильтрации использует хэш-таблицы. На сервере поднято 180 интерфейсов (вланы). Укороченный скрипт TC: #!/bin/bash tc qdisc del dev em2 root tc qdisc add dev em2 root handle 1: htb default 100 tc class add dev em2 parent 1: classid 1:1 htb rate 1000mbit tc class add dev em2 parent 1:1 classid 1:10 htb rate 1mbit ceil 500mbit tc class add dev em2 parent 1:1 classid 1:20 htb rate 500mbit tc class add dev em2 parent 1:1 classid 1:30 htb rate 50mbit tc qdisc add dev em2 parent 1:10 handle 10: sfq perturb 10 tc filter add dev em2 protocol ip parent 1: u32 match ip src 10.0.0.1 flowid 1:10 tc class add dev em2 parent 1:20 classid 1:100 htb rate 500kbit ceil 10mbit quantum 2000 #Создаем корневой фильтр tc filter add dev em2 parent 1:0 protocol ip u32 #Создаем 3 хеш таблицы для 1-3 октета tc filter add dev em2 parent 1:0 handle 1: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 2: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 3: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 10: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 11: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 12: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 13: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 14: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 15: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 16: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 17: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 handle 18: protocol ip u32 divisor 256 #Создаем фильтр направлящий весь трафик в хеш таблицу с ID 1 tc filter add dev em2 parent 1:0 protocol ip u32 ht 800:: match ip dst 0.0.0.0/0 hashkey mask 0xff000000 at 16 link 1: # ======= 1-й октет ======= tc filter add dev em2 parent 1:0 protocol ip u32 ht 1:a: match ip dst 10.0.0.0/8 hashkey mask 0xff0000 at 16 link 2: #Добавляем правило в 2 хеш таблицу, если второй октет равен 0, то оправляем пакет в 3 хеш таблицу tc filter add dev em2 parent 1:0 protocol ip u32 ht 2:0: match ip dst 10.0.0.0/16 hashkey mask 0xff00 at 16 link 3: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:a: match ip dst 10.0.10.0/24 hashkey mask 0xff at 16 link 10: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:b: match ip dst 10.0.11.0/24 hashkey mask 0xff at 16 link 11: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:c: match ip dst 10.0.12.0/24 hashkey mask 0xff at 16 link 12: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:d: match ip dst 10.0.13.0/24 hashkey mask 0xff at 16 link 13: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:e: match ip dst 10.0.14.0/24 hashkey mask 0xff at 16 link 14: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:f: match ip dst 10.0.15.0/24 hashkey mask 0xff at 16 link 15: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:10: match ip dst 10.0.16.0/24 hashkey mask 0xff at 16 link 16: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:11: match ip dst 10.0.17.0/24 hashkey mask 0xff at 16 link 17: tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:12: match ip dst 10.0.18.0/24 hashkey mask 0xff at 16 link 18: # Абоненты tc class add dev em2 parent 1:20 classid 1:120 htb rate 256kbit ceil 2097152 quantum 3000 tc filter add dev em2 protocol ip parent 1:0 u32 ht 10:a: match ip dst 10.0.10.10/32 flowid 1:120 tc class add dev em2 parent 1:20 classid 1:103 htb rate 256kbit ceil 51200000 quantum 75000 tc filter add dev em2 protocol ip parent 1:0 u32 ht 10:2: match ip dst 10.0.10.2/32 flowid 1:103 tc class add dev em2 parent 1:20 classid 1:1241 htb rate 256kbit ceil 5365760 quantum 7500 tc filter add dev em2 protocol ip parent 1:0 u32 ht 11:26: match ip dst 10.0.11.38/32 flowid 1:1241 Полагаю, что нужно настроить что-то ещё, чтобы всё работало как надо. Подскажите, куда копать? Edited March 27, 2015 by asid2006 Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.