Обсуждение статьи тематического каталога: Шейпирование трафика ng_car + ipfw на FreeBSD (ipfw netgraph freebsd bandwidth shaper pipe)Ссылка на текст статьи: http://www.opennet.me/base/net/ng_car_ipfw.txt.html
Большое спасибо. Давно интересовала эта тема. Правда у меня VPN на mpd5+ipfw+nat но принцип понятен - переделаю под себя ). Единственный минус который вижу - нет возможности заимствования полосы как например в altq.
Как раз то что нужно для шейпинга большого числа клиентов, а то устал новые pipe создавать.
сir - это полоса пропускания в битах, а не в байтах.
А вообще-то, для этих целей в MPD5 есть спец. radius аттрибуты, и никаких скриптов не нужно.
Вообще-то скрипты нужны для чего хочешь, в т.ч. чтобы раскидать по кучке серверов файлик с логинами паролями и никакого глюкавого, подвисающего или недостпуного радиус-сервера не нужно.
Сколько одминов столько и мнений
перевел на ng_car 8.0_STABLE
кроме того что врет в ограничении,загрузка CPU становится
# top -SHI
last pid: 21006; load averages: 3.00, 2.72, 2.56 up 1+02:41:22 16:19:37
91 processes: 4 running, 67 sleeping, 20 waiting
CPU: 2.3% user, 0.0% nice, 53.7% system, 44.0% interrupt, 0.0% idle
Mem: 12M Active, 37M Inact, 151M Wired, 112K Cache, 110M Buf, 781M Free
Swap: 499M Total, 499M FreePID USERNAME PRI NICE SIZE RES STATE TIME WCPU COMMAND
12 root -68 - 0K 160K WAIT 317:43 43.55% {irq20: stge0}
1610 root 76 - 0K 8K RUN 41:39 31.30% ng_queue
0 root -68 0 0K 64K - 142:16 14.26% {em0 taskq}
12 root -68 - 0K 160K WAIT 48:20 2.88% {irq17: rl0}
12 root -32 - 0K 160K WAIT 24:31 0.68% {swi4: clock}
без ng_car, но с pipe ограничениями
# top -SHI
last pid: 90903; load averages: 0.81, 1.43, 1.96 up 1+02:48:28 16:26:43
90 processes: 2 running, 68 sleeping, 20 waiting
CPU: 12.9% user, 0.0% nice, 23.6% system, 14.3% interrupt, 49.3% idle
Mem: 12M Active, 37M Inact, 150M Wired, 112K Cache, 110M Buf, 781M Free
Swap: 499M Total, 499M FreePID USERNAME PRI NICE SIZE RES STATE TIME WCPU COMMAND
11 root 171 ki31 0K 8K RUN 862:16 53.17% idle
12 root -68 - 0K 160K WAIT 319:24 16.06% {irq20: stge0}
0 root -68 0 0K 64K - 143:12 11.18% {em0 taskq}
12 root -68 - 0K 160K WAIT 48:37 3.66% {irq17: rl0}
12 root -32 - 0K 160K WAIT 24:39 0.68% {swi4: clock}
90903 root 76 0 6408K 3756K select 0:00 0.00% ssh
...
создано количество таблиц по количеству пакетов.
создано количество pipe соотв.количесву пакетов с маской по исходящим адресам.
ng_car хук создается для каждого абонента.в пайпы загоняется так:
27480 pipe 50 ip from not 192.168.0.0/16,10.0.0.0/8,172.0.0.0/8 to table(50) out via em0
27481 pipe 52 ip from not 192.168.0.0/16,10.0.0.0/8,172.0.0.0/8 to table(52) out via em0
27482 pipe 53 ip from not 192.168.0.0/16,10.0.0.0/8,172.0.0.0/8 to table(53) out via em0в ng_car - так:
27410 netgraph tablearg ip from not 192.168.0.0/16,10.0.0.0/8,172.0.0.0/8 to table(50) out via em0
27412 netgraph tablearg ip from not 192.168.0.0/16,10.0.0.0/8,172.0.0.0/8 to table(52) out via em0
27413 netgraph tablearg ip from not 192.168.0.0/16,10.0.0.0/8,172.0.0.0/8 to table(53) out via em0
фря падает если в фаерволе загоняется трафик в несуществующую ноду, так что нужно быть осторожным.
врет в ограничении потому что cbs ebs большие значения (1/8 от cir). Ставлю 1/80 и стабильно режет.
проц нагружает сильнее пайпов даже в самом простом режиме - NG_CAR_SINGLE_RATE (в конфиге mode=0 )