Это старая версия документа.


FreeBSD ng_car шейпер

Описание принципов работы шейпера FreeBSD + ng_car

1. Поднятия правил ipfw заворота в ng_car шейпер осуществляется скриптом misc/ipfw/shaper_start.sh

Пример поднятых правил:

# перекинуть трафик в правила заворота в ng_car
09020        7        363 skipto 10120 ip from table(12) to table(2) in recv ng*  
09025        1        214 skipto 10125 ip from table(2) to table(13) out xmit ng*
09030        0          0 skipto 10130 ip from table(14) to table(3) in recv ng*
09035        0          0 skipto 10135 ip from table(3) to table(15) out xmit ng*

# Заворот глобального для прописанных пользователей в таблице 10 в ng_car
10000     1720     106227 netgraph tablearg ip from table(10) to any in recv ng*
10010     2863    3965522 netgraph tablearg ip from any to table(11) out xmit ng*
# Весь остальной трафик пропускать
10015        0          0 allow ip from any to any via ng*
#Локальный заворот в ng_car
10120        7        363 netgraph tablearg ip from table(12) to any in recv ng*
10125        1        214 netgraph tablearg ip from any to table(13) out xmit ng*

10130        0          0 netgraph tablearg ip from table(14) to any in recv ng*
10135        0          0 netgraph tablearg ip from any to table(15) out xmit ng

Описание таблиц:

2 Список сетей для локального класcа трафика с номером 2. Номера формируются соответсвенно с номером класса трафика в журнале классов трафика.
10 список пользователей которые попадают в правила шейпера для исходящего глобального трафика
11 список пользователей которые попадают в правила шейпера для входящего глобального трафика
12 список пользователей которые попадают в правила шейпера для исходящего локального трафика с номером класса 2. Номера формируются соответсвенно номер класса трафика + 10.
13 список пользователей которые попадают в правила шейпера для входящего локального трафика с номером класса 2. Номера формируются соответсвенно номер класса трафика + 10 + 1.

Для поднятия шейпера используется программа linkupdown. Програма прописывает пользователей в таблицы ipfw и присваивает им скорость. Для проверки правил которые она выполняет нужно указать последним параметром параметр debug.
Например:

abills/libexec/linkupdown up ng0 test 10.11.11.11 debug

Для проверки назначенно скорости и её изминения используется программа:

abills/libexec/billd checkspeed NAS_IDS=10 SHOW_SPEED=1