Все доброе время суток!
Помогите сделать анализ методов шейпирования трафика для создания высокопроизводитьного сервера на ОС FreeBSD, в качестве NAS -- mpd 5.4
На данный момент исполльзую связку со статический pipe + ipfw, параметры для ограничения передаются через radius-атрибуты в mpd.
Ограничивается скорость в платный и бесплатный диапозон трафика.
Достоинства этого метода:
1. Простота реализации
2. Возможность разграничить скорость в платный и бесплатный диапозоны трафика
3. Возможность установить приоритет очереди
Недостатки этого метода:
1. При большом количестве пользователей в ipfw создаются очень много правил (количество online пользователей*4)
Связка статические pipe + ipfw используется на сервере:
Процессор -- 2.83GHz Intel® Core™ 2 Quad Q9550 EM64T
ОЗУ -- 2 х 2048Mb DDR-II ECC PC2-6400 DIMM
Сетевой адаптер -- 1000Мбит Intel Gigabit ET Server Adapter
При этом максимальное кол-во клиентов на нем 250 - 300 пользователей, после чего идут очень большие задержки пакетов порядка 150-200 мс
и загрузка процессора 100%.
Хотелось бы услышить Ваше мнение по ng_car + ng_bpf; динамические pipe + ipfw. Будет ли ощутимы прирост ?
Статическое шейпирование трафика
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
При использовании ng_car у многих при большой плотности клиентов идет переполнение стека и как итог kernel panic. Как с ним бороться. Решена ли эта проблема в FreeBSD 8.0mikkey finn писал(а):учуете очень даже. Статические пайпы - это зло. Динамика на tablearg - уже лучше. По хорошему наименее затратен будет Ng_car
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
это сколько в пиках у вас?CarTer писал(а):При использовании ng_car у многих при большой плотности клиентов идет переполнение стека и как итог kernel panic. Как с ним бороться. Решена ли эта проблема в FreeBSD 8.0mikkey finn писал(а):учуете очень даже. Статические пайпы - это зло. Динамика на tablearg - уже лучше. По хорошему наименее затратен будет Ng_car
На данном этапе провожу тестирование на собранном стенде. На стенде свич D-Link DES-3526, 10 генераторов трафа и тестовый сервер (ng_car).
Без тюнинга ядра фря первый раз встала колом где то мин за 40 -45.
После применения вот этих параметров:
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.icmplim=50
kern.ipc.somaxconn=4096
hw.syscons.bell=0
net.inet.tcp.rfc1323=1
net.inet.tcp.delayed_ack=0
kern.ipc.maxsockbuf=2097152
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=57344
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535
net.inet.tcp.log_in_vain=1
net.inet.udp.log_in_vain=1
net.link.ether.inet.max_age=1200
# Для FreeBSD > 7.0 не актуально
#kern.polling.enable=1
#kern.polling.user_frac=50
# Отрубаем ip-редиректы
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
net.graph.maxdgram=128000
net.graph.recvspace=128000
kern.ipc.nmbclusters=32768
kern.ipc.maxsockets=204800
net.inet.ip.intr_queue_maxlen=5120
net.inet.ip.dummynet.hash_size=512
net.inet.ip.dummynet.max_chain_len=32
net.inet.ip.fw.dyn_buckets=1024
Бегает уже 3 часа.
при этом радиус при подключении передает вот такие параметры:
mpd-filter += "1#1=match dst net 192.168.0.0/24"
mpd-filter += "1#2=match src net 192.168.0.0/24"
mpd-filter += "1#3=match dst net 192.168.1.0/24"
mpd-filter += "1#4=match src net 192.168.1.0/24"
mpd-filter += "1#5=match dst net 192.168.2.0/24"
mpd-filter += "1#6=match src net 192.168.2.0/24"
mpd-filter += "1#7=match dst net 192.168.3.0/24"
mpd-filter += "1#8=match src net 192.168.3.0/24"
mpd-limit += "in#1=flt1 shape 1024000000 pass"
mpd-limit += "out#1=flt1 shape 1024000000 pass"
mpd-limit += "in#2=all rate-limit 1024000 150000 300000"
mpd-limit += "out#2=all rate-limit 1024000 150000 300000"
Возник только вопрос возможно ли объединить диапозоны ip адресов, которые надо шейпить с другой скоростью в одно два правила (таблицу). Если возможно то можно пример
Без тюнинга ядра фря первый раз встала колом где то мин за 40 -45.
После применения вот этих параметров:
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.icmplim=50
kern.ipc.somaxconn=4096
hw.syscons.bell=0
net.inet.tcp.rfc1323=1
net.inet.tcp.delayed_ack=0
kern.ipc.maxsockbuf=2097152
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=57344
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535
net.inet.tcp.log_in_vain=1
net.inet.udp.log_in_vain=1
net.link.ether.inet.max_age=1200
# Для FreeBSD > 7.0 не актуально
#kern.polling.enable=1
#kern.polling.user_frac=50
# Отрубаем ip-редиректы
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
net.graph.maxdgram=128000
net.graph.recvspace=128000
kern.ipc.nmbclusters=32768
kern.ipc.maxsockets=204800
net.inet.ip.intr_queue_maxlen=5120
net.inet.ip.dummynet.hash_size=512
net.inet.ip.dummynet.max_chain_len=32
net.inet.ip.fw.dyn_buckets=1024
Бегает уже 3 часа.
при этом радиус при подключении передает вот такие параметры:
mpd-filter += "1#1=match dst net 192.168.0.0/24"
mpd-filter += "1#2=match src net 192.168.0.0/24"
mpd-filter += "1#3=match dst net 192.168.1.0/24"
mpd-filter += "1#4=match src net 192.168.1.0/24"
mpd-filter += "1#5=match dst net 192.168.2.0/24"
mpd-filter += "1#6=match src net 192.168.2.0/24"
mpd-filter += "1#7=match dst net 192.168.3.0/24"
mpd-filter += "1#8=match src net 192.168.3.0/24"
mpd-limit += "in#1=flt1 shape 1024000000 pass"
mpd-limit += "out#1=flt1 shape 1024000000 pass"
mpd-limit += "in#2=all rate-limit 1024000 150000 300000"
mpd-limit += "out#2=all rate-limit 1024000 150000 300000"
Возник только вопрос возможно ли объединить диапозоны ip адресов, которые надо шейпить с другой скоростью в одно два правила (таблицу). Если возможно то можно пример
-
- Сообщения: 48
- Зарегистрирован: Сб ноя 25, 2006 05:05
- Откуда: Saint-Petersburg, Russia
- Контактная информация:
Я использую самописный генератор для ipfw/dummynet:
http://forum.nag.ru/forum/index.php?showtopic=54379
mpd/ng_car не использую - сеть управляемая, для неё ещё один костыль:
http://forum.nag.ru/forum/index.php?showtopic=54023
http://forum.nag.ru/forum/index.php?showtopic=54379
mpd/ng_car не использую - сеть управляемая, для неё ещё один костыль:
http://forum.nag.ru/forum/index.php?showtopic=54023