Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
abills:docs:manual:freebsd_dummynet [2010/11/23 10:40] asmodeus |
abills:docs:manual:freebsd_dummynet [2018/03/09 15:26] (текущий) anton [Отслеживание проблем] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
=====FreeBSD Dummynet/table шейпер===== | =====FreeBSD Dummynet/table шейпер===== | ||
+ | |||
+ | Данная схема шейпера работает следующим образом\\ | ||
+ | При старте системы инициализируются правила обрезки скорости для каждого тарифного плана два правила на каждый класс трафика. | ||
+ | При подключении абонента его ип вносится в IPFW таблицу 10 и 11 (входной и исходящий трафик) с аргументом номер тарифного плана | ||
+ | |||
+ | |||
====Опции ядра==== | ====Опции ядра==== | ||
Строка 9: | Строка 15: | ||
**Таблицы сетей. Данные о сетях** | **Таблицы сетей. Данные о сетях** | ||
- | ^table 1 | Всегда глобальная таблица. Значение по умолчанию 0.0.0.0/0 | | + | ^table 1 | Всегда глобальная таблица. Значение по умолчанию 0.0.0.0/0 | |
- | ^table 2 | Таблица с пиринговыми сетями | | + | ^table 2 | Таблица с пиринговыми сетями | |
В таблицу пиринговых сетей данные заносятся следующим образом | В таблицу пиринговых сетей данные заносятся следующим образом | ||
Строка 18: | Строка 24: | ||
Таблицы клиентов. В них сохраняются данные по клиентам. | Таблицы клиентов. В них сохраняются данные по клиентам. | ||
+ | ^table 9 |Добавляются абоненты у которых нет ограничения по глобальному трафику | | ||
^table 10 | Таблица клиентов для входящего трафика | | ^table 10 | Таблица клиентов для входящего трафика | | ||
+ | ^table 11 | Таблица клиентов для исходящего трафика | | ||
+ | ^table 12 | Таблица клиентов для входящего пирингового трафика класс 2 | | ||
+ | ^table 13 | Таблица клиентов для исходящего пирингового трафика класс 2 | | ||
+ | ^table 14 | Таблица клиентов для входящего пирингового трафика класс 3 | | ||
+ | ^table 15 | Таблица клиентов для исходящего пирингового трафика класс 3 | | ||
В таблицы заносятся следующие данные | В таблицы заносятся следующие данные | ||
- | ipfw table add ip_адрес_клиента тарифный_план_клиента | + | ipfw table 10 add ip_адрес_клиента тарифный_план_клиента |
+ | ipfw table 11 add ip_адрес_клиента тарифный_план_клиента | ||
При подключении абонента система автоматически заноси IP адресами в таблицы пользователей и сетей\\ | При подключении абонента система автоматически заноси IP адресами в таблицы пользователей и сетей\\ | ||
Строка 33: | Строка 45: | ||
- | Для поднятий правил шейпирования при старте системы нужно создать файл | + | Для поднятий правил шейпирования при старте системы используется программа |
- | **/usr/local/etc/rc.d/shaper.sh** | + | |
+ | # cp /usr/abills/misc/freebsd/shaper_start.sh /usr/local/etc/rc.d/shaper_start.sh | ||
+ | |||
+ | **/etc/rc.conf** | ||
+ | abills_shaper_enable="YES" | ||
+ | abills_nas_id="1" | ||
+ | abills_shaper_if="" # По умолчанию ng | ||
- | #!/bin/sh | ||
- | | ||
- | # /usr/abills/libexec/billd checkspeed NAS_IDS=... RECONFIGURE=1 | ||
+ | ** При установке скорости в аккаунте пользователя если она еще не указывалась другим пользователям нужно переинициализировать шейпер ** | ||
Дополнительные параметры: | Дополнительные параметры: | ||
Строка 51: | Строка 68: | ||
/usr/abills/libexec/billd checkspeed NAS_IDS=1 RECONFIGURE=1 FW_DIRECTION_OUT=out FW_DIRECTION_IN=in; ipfw /etc/fw.conf | /usr/abills/libexec/billd checkspeed NAS_IDS=1 RECONFIGURE=1 FW_DIRECTION_OUT=out FW_DIRECTION_IN=in; ipfw /etc/fw.conf | ||
| | ||
+ | ====Переинициализация шейпера==== | ||
+ | |||
+ | # /usr/local/etc/rc.d/shaper_start.sh restart | ||
+ | |||
+ | |||
+ | ====Проверка работоспособности==== | ||
+ | |||
+ | **правил перенаправления в Pipe** | ||
+ | |||
+ | # ipfw show | ||
+ | |||
+ | 08000 0 0 pipe tablearg ip from table(14) to table(2,2) out xmit ng* | ||
+ | 08010 0 0 pipe tablearg ip from table(2,2) to table(15) in recv ng* | ||
+ | 09000 0 0 pipe tablearg ip from table(12) to table(2,1) out xmit ng* | ||
+ | 09010 0 0 pipe tablearg ip from table(2,1) to table(13) in recv ng* | ||
+ | 10000 0 0 pipe tablearg ip from table(10) to any out xmit ng* | ||
+ | 10010 0 0 pipe tablearg ip from any to table(11) in recv ng* | ||
+ | 10020 0 0 allow ip from table(9) to any out xmit ng* | ||
+ | 10025 0 0 allow ip from any to table(9) in recv ng* | ||
+ | |||
+ | **Занесённые адреса в таблицы 10,11 (глобальный шейпер)** | ||
+ | # ipfw table 10 list | ||
+ | |||
+ | 10.11.1.1/32 5145 | ||
+ | |||
+ | # ipfw table 11 list | ||
+ | |||
+ | 10.11.1.1/32 6145 | ||
+ | |||
+ | **Поднятые пайпы (правила нарезки скорости)** | ||
+ | # ipfw pipe show 5145 6145 | ||
+ | | ||
+ | 5145: 2.028 Mbit/s 0 ms burst 0 | ||
+ | q136217 202 KB 0 flows (1 buckets) sched 70681 weight 0 lmax 0 pri 0 droptail | ||
+ | sched 70681 type FIFO flags 0x1 64 buckets 0 active | ||
+ | mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000 | ||
+ | BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp | ||
| | ||
+ | 06145: 1.024 Mbit/s 0 ms burst 0 | ||
+ | q137217 102 KB 0 flows (1 buckets) sched 71681 weight 0 lmax 0 pri 0 droptail | ||
+ | sched 71681 type FIFO flags 0x1 64 buckets 0 active | ||
+ | mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000 | ||
+ | BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp | ||
+ | ====Оптимизации==== | ||
**/etc/sysctl.conf** | **/etc/sysctl.conf** | ||
- | net.inet.ip.dummynet.hash_size=2048 | ||
- | net.inet.ip.dummynet.expire=0 | ||
| | ||
net.inet.ip.fastforwarding=1 | net.inet.ip.fastforwarding=1 | ||
Строка 62: | Строка 120: | ||
kern.ipc.nmbclusters=65536 | kern.ipc.nmbclusters=65536 | ||
kern.ipc.maxsockets=204800 | kern.ipc.maxsockets=204800 | ||
+ | net.inet.ip.dummynet.expire=0 | ||
net.inet.ip.dummynet.hash_size=2048 | net.inet.ip.dummynet.hash_size=2048 | ||
net.inet.ip.fw.dyn_buckets=2048 | net.inet.ip.fw.dyn_buckets=2048 | ||
Строка 79: | Строка 138: | ||
| | ||
net.inet.flowtable.enable=0 | net.inet.flowtable.enable=0 | ||
- | | + | |
+ | =====Отслеживание проблем====== | ||
+ | |||
+ | при подключении абонента должен попасть в 10 и 11 таблицу | ||
+ | |||
+ | |||
+ | ipfw table 10 list | grep [IP клиента] | ||
+ | ipfw table 11 list | grep [IP клиента] | ||
+ | |||
+ | результат | ||
+ | |||
+ | <code> | ||
+ | ipfw table 10 list | grep 10.0.0.1 | ||
+ | --- table(10), set(0) --- | ||
+ | 10.0.0.1/32 5024 | ||
+ | </code> | ||
+ | |||
+ | Если результат пустой значит не срабатывает linkupdown | ||
+ | |||
+ | 5024 - номер Pipe канала для шейпера | ||
+ | |||
+ | ipfw pipe 5024 list | ||
+ | |||
+ | отображение правил шейпера | ||
+ | |||
+ | |||
+ | проверка включен ли редирект траффика на шейпер | ||
+ | |||
+ | ipfw show | ||
+ | |||
+ | <code> | ||
+ | 10000 0 0 pipe tablearg ip from table(10) to any out xmit ng* | ||
+ | 10010 0 0 pipe tablearg ip from any to table(11) in recv ng* | ||
+ | </code> | ||
+ | |||
+ | если вторая и третья колонка нули значит трафик не попадает |