Биллинговая система Nodeny

Главная категория => Курилка => Тема начата: ale-x от 29 Мая 2010, 12:44:59



Название: Приоритет для http трафика
Отправлено: ale-x от 29 Мая 2010, 12:44:59
По вечерам и выходным замечаю такую картину - например тариф 2 мбита:
скорость http закачки плавает от 25 до 100 кбайт/с
торент качает всегда на полной скорости.

ночью и утром все ок:
http качает на полной, скорость не плавает.

Вечером около 1,7-2 kpps, канал свободен на 30-40%, проц загружен не более чем на 15%
FreeBSD 8 + mpd5 (pptp) + ipfw (dummynet)

Думал может можно(нужно) добавить очереди с весом в nofire.pl:
Код:
  if( $speed_in )
 {  # Cкорость указана в пакете. Это самая приоритетная скорость, даже если в учетной
    # записи в доп параметре указана другая. Получим уникальный номер pipe по основной записи:
    # $main_num - трафик всех алиасов должен попадать в один pipe!
    $pipe_in=&Get_Pipe_Num($main_num);
    &Add_Rule("pipe $pipe_in config bw ${speed_in}Kbit/s");
    &Add_Rule("queue 1 config pipe $pipe_in weight 95");
    &Add_Rule("queue 2 config pipe $pipe_in weight 10");
    &Add_Rule("add 1111 queue 1 tcp from any to any 80");
    &Add_Rule("add 1112 queue 2 udp from any to any");
Правильно ли я думаю? И какие могут подводные камни?


Название: Re: Приоритет для http трафика
Отправлено: Efendy от 30 Мая 2010, 00:42:29
Думаешь правильно, реализуешь неправильно. Читай доки и смотри примеры как юзаются очереди в ipfw. В твоем примере ты насоздаешь кучу правил с номерами 1111 и 1112.

Решать задачу надо с другой стороны. Брать общий канал и в нем сделать 2 очереди - для 80го порта и всего остального. Отмечаю - вне зависимости от авторизации клиента, а на всех. Т.е. это делается вне скриптов NoDeny, а в самом фаерволе.

Если же хочешь юзать очереди персонально на клиента - кури что есть маска в очередях. В общем, сначала разберись с ipfw и просто на тестовом стенде без биллинга создай правила приоретизации


Название: Re: Приоритет для http трафика
Отправлено: ale-x от 30 Мая 2010, 14:41:52
Спасибо за наводку :) думал о том что веса нужно делать на общем канале, но сомневался. Добавил в /etc/rc.firewall:
Код:
${f} pipe 40 config bw 40Mbit/s
${f} queue 1 config pipe 40 weight 99
${f} queue 2 config pipe 40 weight 50
${f} queue 3 config pipe 40 weight 1
${f} add 41 queue 1 tcp from any 80 to any recv tun0
${f} add 41 queue 1 tcp from any 80 to any recv tun1
${f} add 42 queue 2 tcp from any to any recv tun0
${f} add 42 queue 2 tcp from any to any recv tun1
${f} add 43 queue 3 udp from any to any recv tun0
${f} add 43 queue 3 udp from any to any recv tun1
Пока работает нормально. Может еще что-то нужно оптимизировать? :)


Название: Re: Приоритет для http трафика
Отправлено: Fredik от 30 Мая 2010, 17:20:02
хм, неплохая идея я б еще пинг сюда добавил.. я на федоре так делал ))


Название: Re: Приоритет для http трафика
Отправлено: stix от 30 Мая 2010, 18:06:53
на HTB достаточно не сложно сделать классификацию трафика с маркировкой через mangle


Название: Re: Приоритет для http трафика
Отправлено: Maks от 30 Мая 2010, 18:07:45
на HTB достаточно не сложно сделать классификацию трафика с маркировкой через mangle

на HTB ? Обьсни что это.


Название: Re: Приоритет для http трафика
Отправлено: Elisium от 30 Мая 2010, 18:38:33
Это линуховый шейпер.


Название: Re: Приоритет для http трафика
Отправлено: Maks от 30 Мая 2010, 18:48:09
Ясн, в Микротике тоже есть mangle.. только тама просто все наз QoS и все.


Название: Re: Приоритет для http трафика
Отправлено: stix от 30 Мая 2010, 19:33:41
Ясн, в Микротике тоже есть mangle.. только тама просто все наз QoS и все.
в микротике simple queue можно строить уже без маркировки пакетов.
микротик этот тот же линукс, только для лентяев.
тот же HTB и такие же SFQ/PCQ/RED/P-BFIFO

тип шейпера очень важную роль играет в нагрузке на роутер и приоритезацию пакетов в буфере очереди


Название: Re: Приоритет для http трафика
Отправлено: Fredik от 31 Мая 2010, 21:59:46
у когонибуть есть реально работающий фаервол с приоритетом по трафику?


Название: Re: Приоритет для http трафика
Отправлено: stix от 31 Мая 2010, 22:56:12
На какой OS ?


Название: Re: Приоритет для http трафика
Отправлено: Fredik от 31 Мая 2010, 22:57:01
фря ес-но


Название: Re: Приоритет для http трафика
Отправлено: Aivanzipper от 05 Октября 2010, 09:05:50
Некропостинг, но еще актуально :)


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 18 Октября 2010, 13:19:32
Какой конечный вариант настройки приоритезации на фриибсд?


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 18 Октября 2010, 13:31:26
тоесть какие айпи нужно присваивать для tun0 и tun1.
шлюз  и билинг на 1 серве.


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 18 Октября 2010, 14:46:58
Внес  настройки но не трафик не идет через tun

00042          0             0 queue 1 tcp from any 80 to any recv tun0
00042          0             0 queue 1 tcp from any 80 to any recv tun1
00043          0             0 queue 2 tcp from any to any recv tun0
00043          0             0 queue 2 tcp from any to any recv tun1
00044          0             0 queue 3 udp from any to any recv tun0
00044          0             0 queue 3 udp from any to any recv tun1


Название: Re: Приоритет для http трафика
Отправлено: ser970 от 18 Октября 2010, 15:04:46
Внес  настройки но не трафик не идет через tun

00042          0             0 queue 1 tcp from any 80 to any recv tun0
00042          0             0 queue 1 tcp from any 80 to any recv tun1
00043          0             0 queue 2 tcp from any to any recv tun0
00043          0             0 queue 2 tcp from any to any recv tun1
00044          0             0 queue 3 udp from any to any recv tun0
00044          0             0 queue 3 udp from any to any recv tun1


ifconfig
тут у тебя есть tun0 и tun1?


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 18 Октября 2010, 15:45:18
Внес  настройки но не трафик не идет через tun

00042          0             0 queue 1 tcp from any 80 to any recv tun0
00042          0             0 queue 1 tcp from any 80 to any recv tun1
00043          0             0 queue 2 tcp from any to any recv tun0
00043          0             0 queue 2 tcp from any to any recv tun1
00044          0             0 queue 3 udp from any to any recv tun0
00044          0             0 queue 3 udp from any to any recv tun1


ifconfig
тут у тебя есть tun0 и tun1?

tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 10.0.0.2 --> 10.0.0.1 netmask 0xff000000
tun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000

Какие айпи нужно задать на tun0\tun1 ?


Название: Re: Приоритет для http трафика
Отправлено: VitalVas от 18 Октября 2010, 15:49:32
а что логика не работает.....???
tun0\tun1 - это внешние интерфейсы.


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 18 Октября 2010, 17:00:02
все. ну немного затупил  ;D

Но при прописывании тех правил - инет сразу начинает тупить... и скоростя не шейпятся..

У кого то было такое?


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 18 Октября 2010, 21:10:24
и одна загвоздочка.
для приоретизации трафика нужно чтобы net.inet.ip.fw.one_pass был равен 0.
А для правил фаервола ноденай равен 1(потому и не работают приоритеты)

Тоесть при net.inet.ip.fw.one_pass: 0 - пакет обрабатывается следующим правилом firewall'а при выходе из pipe, 1 - не обрабатывается.

покажите пример рабочего фаервола для net.inet.ip.fw.one_pass=0.


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 18 Октября 2010, 23:46:22
Поправочка: скоростя шейпятся но трафик не считается.


Название: Re: Приоритет для http трафика
Отправлено: stix от 18 Октября 2010, 23:51:50
и тут все достали хрустальные шары и поняли как у тебя идет снятие трафика в ядро биллинга


Название: Re: Приоритет для http трафика
Отправлено: ale-x от 19 Октября 2010, 00:10:26
сейчас остановился на таких правилах:
Код:
${f} pipe 40 config bw 40Mbit/s queue 30
${f} queue 1 config pipe 40 weight 99
${f} queue 2 config pipe 40 weight 75
${f} queue 3 config pipe 40 weight 50
${f} queue 4 config pipe 40 weight 1
${f} add 32540 queue 1 tcp from any 80 to any via tun0 in
${f} add 32540 queue 1 tcp from any 80 to any via tun1 in
${f} add 32541 queue 2 udp from any 2106,3724,7777,8085 to any via tun0 in
${f} add 32541 queue 2 udp from any 2106,3724,7777,8085 to any via tun1 in
${f} add 32542 queue 3 tcp from any to any via tun0 in
${f} add 32542 queue 3 tcp from any to any via tun1 in
${f} add 32543 queue 4 udp from any to any via tun0 in
${f} add 32543 queue 4 udp from any to any via tun1 in

и траф по ним вроде бегает:
Код:
32540  20726453  23128609512 queue 1 tcp from any 80 to any via tun0 in
32540  21635461  23982495114 queue 1 tcp from any 80 to any via tun1 in
32541     11628     15867668 queue 2 udp from any 2106,3724,7777,8085 to any via tun0 in
32541       138        16533 queue 2 udp from any 2106,3724,7777,8085 to any via tun1 in
32542  20755118  15702306794 queue 3 tcp from any to any via tun0 in
32542  16549396  11829664958 queue 3 tcp from any to any via tun1 in
32543  22720756  18918734813 queue 4 udp from any to any via tun0 in
32543  24017243  19314173417 queue 4 udp from any to any via tun1 in
и
Код:
net.inet.ip.fw.one_pass: 1


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 19 Октября 2010, 00:39:17
сейчас остановился на таких правилах:
Код:
${f} pipe 40 config bw 40Mbit/s queue 30
${f} queue 1 config pipe 40 weight 99
${f} queue 2 config pipe 40 weight 75
${f} queue 3 config pipe 40 weight 50
${f} queue 4 config pipe 40 weight 1
${f} add 32540 queue 1 tcp from any 80 to any via tun0 in
${f} add 32540 queue 1 tcp from any 80 to any via tun1 in
${f} add 32541 queue 2 udp from any 2106,3724,7777,8085 to any via tun0 in
${f} add 32541 queue 2 udp from any 2106,3724,7777,8085 to any via tun1 in
${f} add 32542 queue 3 tcp from any to any via tun0 in
${f} add 32542 queue 3 tcp from any to any via tun1 in
${f} add 32543 queue 4 udp from any to any via tun0 in
${f} add 32543 queue 4 udp from any to any via tun1 in

и траф по ним вроде бегает:
Код:
32540  20726453  23128609512 queue 1 tcp from any 80 to any via tun0 in
32540  21635461  23982495114 queue 1 tcp from any 80 to any via tun1 in
32541     11628     15867668 queue 2 udp from any 2106,3724,7777,8085 to any via tun0 in
32541       138        16533 queue 2 udp from any 2106,3724,7777,8085 to any via tun1 in
32542  20755118  15702306794 queue 3 tcp from any to any via tun0 in
32542  16549396  11829664958 queue 3 tcp from any to any via tun1 in
32543  22720756  18918734813 queue 4 udp from any to any via tun0 in
32543  24017243  19314173417 queue 4 udp from any to any via tun1 in
и
Код:
net.inet.ip.fw.one_pass: 1


я прописываю праила но после ребута применяются только
${f} add 32540 queue 1 tcp from any 80 to any via tun0 in
${f} add 32540 queue 1 tcp from any 80 to any via tun1 in
${f} add 32541 queue 2 udp from any 2106,3724,7777,8085 to any via tun0 in
${f} add 32541 queue 2 udp from any 2106,3724,7777,8085 to any via tun1 in
${f} add 32542 queue 3 tcp from any to any via tun0 in
${f} add 32542 queue 3 tcp from any to any via tun1 in
${f} add 32543 queue 4 udp from any to any via tun0 in
${f} add 32543 queue 4 udp from any to any via tun1 in

а пайп и очереди не создаются ....


Название: Re: Приоритет для http трафика
Отправлено: ale-x от 19 Октября 2010, 01:42:10
 а если так:
Код:
ipfw pipe 40 list
?


Название: Re: Приоритет для http трафика
Отправлено: ale-x от 19 Октября 2010, 01:46:15
и еще так:
Код:
 ipfw queue list


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 19 Октября 2010, 02:19:17
Код:
 ipfw pipe 40 list
00040: 100.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
и
Код:
pfw queue list
q00001: weight 99 pipe 40   50 sl. 0 queues (1 buckets) droptail
q00002: weight 75 pipe 40   50 sl. 0 queues (1 buckets) droptail
q00003: weight 50 pipe 40   50 sl. 0 queues (1 buckets) droptail
q00004: weight 1 pipe 40   50 sl. 0 queues (1 buckets) droptail


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 22 Октября 2010, 09:12:37
Кто то поможет с приоритезацией?


Название: Re: Приоритет для http трафика
Отправлено: elite от 22 Октября 2010, 14:24:30
проблема в чем: если у тебя загрузка внешки в полку, то никакая приоритезация не поможет :)


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 22 Октября 2010, 15:07:39
проблема в чем: если у тебя загрузка внешки в полку, то никакая приоритезация не поможет :)

Проблема в том что после применения правил, клиенты не шейпятся...


Название: Re: Приоритет для http трафика
Отправлено: elite от 22 Октября 2010, 15:10:50
проблема в чем: если у тебя загрузка внешки в полку, то никакая приоритезация не поможет :)

Проблема в том что после применения правил, клиенты не шейпятся...
так не надо тупо копировать правила себе :) надо подумать, как адаптировать под себя )


Название: Re: Приоритет для http трафика
Отправлено: NodenY45 от 22 Октября 2010, 18:06:45
Не работает шейпер в два этапа... шейпит по одному правилу только.
я понимаю что за это отвечает переменная net.inet.ip.fw.one_pass=1

Но если сменить на НОЛЬ то фаервол билинга перестает работать. Так как настроен на net.inet.ip.fw.one_pass: 1.
Подскажите, как же все таки осуществить это все. ???


Название: Re: Приоритет для http трафика
Отправлено: stix от 04 Октября 2011, 12:26:40
сейчас и для меня стала актуальна данная тема.
таки через ipfw все реализовывали?


Название: Re: Приоритет для http трафика
Отправлено: goletsa от 05 Октября 2011, 16:35:12
Такой вопрос, имеет ли смысли приортезировать до шейпера(на PPPoE концентраторе например)? Или после шейпера но на внешнем интерфейсе(после ната). Или и то и то бред и надо полностью переписывать nofire и правила ipfw?