| shaman |
|
Темы:
26
Сообщения:
379
Участник с: 13 декабря 2009
|
нужно на маршрутизаторе под арчем поднять шейпер, каждому отдать некоторую полосу. пока смотрю в сторону htb.init. как я понял можно в цепочке FORWARD маркировать трафик (например 1 - полный доступ, 2 - одна скорость, 3 - другая) а в правилах уже указывать какой трафик обрабатывать. так? как в таком случае поведет себя шейпер при нескольких клиентах с маркером “2”? поделит поровну канал? |
| aduser |
|
|
Темы:
0
Сообщения:
26
Участник с: 21 августа 2010
|
ShamanА как настроишь - так и будет. ;-) По умолчанию - там fifo очередь, т.е. полоса делится в зависимости от частоты пакетов и их величины. На опеннете есть хорошая дока по шейпингу - перевод lartc. |
| gard |
|
Темы:
66
Сообщения:
1167
Участник с: 15 декабря 2009
|
О.. шейпер, знакомая вещь, когда то я курил маны по нему, могу если надо скинуть свой шейпер для примера, сейчас его не юзаю. :) |
| shaman |
|
Темы:
26
Сообщения:
379
Участник с: 13 декабря 2009
|
было бы не плохо, а то голова кипит уже :) |
| gard |
|
Темы:
66
Сообщения:
1167
Участник с: 15 декабря 2009
|
Что то я его найти не могу :D .. сейчас получше поищу.. Нашел, вот скрипт: #!/bin/bash
##########################################################################
DOWNLINK=896
UPLINK=512
OUT_DEV="ppp0"
IN_DEV="eth1"
OUT_QLEN=30
IN_QLEN=1000
OUT_MTU=1492
LOCAL_RATE="100mbit"
LOCAL_IP="192.168.1.1"
LAN_IP_RANGE="192.168.1.0/27"
ALL_IP_RANGE="0.0.0.0/0"
#192.168.1.1 - 192.168.1.6 кормпьютеры в сети
HIGH_RATING_RANGE="192.168.1.0/29"
#9-14
HIGH_MEDIUM_RATING_RANGE="192.168.1.0/28"
#17-30
#LAN_IP_RANGE == HIGH_MEDIUM_LOW_RATING_RANGE="192.168.1.0/27"
ICMP="match ip protocol 1 0xff"
TCP="match ip protocol 6 0xff"
UDP="match ip protocol 17 0xff"
SRC="match ip src"
DST="match ip dst"
DPORT="match ip dport"
SPORT="match ip sport"
U32="protocol ip u32"
IP="protocol ip"
##########################################################################
tc qdisc del dev $OUT_DEV root 2> /dev/null > /dev/null
tc qdisc del dev $OUT_DEV ingress 2> /dev/null > /dev/null
tc qdisc del dev $IN_DEV root 2> /dev/null > /dev/null
tc qdisc del dev $IN_DEV ingress 2> /dev/null > /dev/null
##########################################################################
#Входящий трафик - необходимо несколько уменьшить поступающий из интернета
#трафик в скорости, это предотвратит задержку пакетов в очереди у провайдера
#присоединяю входной ограничитель
tc qdisc add dev $OUT_DEV handle ffff: ingress
#и сбразываю все сподряд на черезчур большой входящей скорости скорости
tc filter add dev $OUT_DEV parent ffff: protocol ip prio 50 u32 match ip src $ALL_IP_RANGE flowid :1 police rate ${DOWNLINK}kbit \
burst 10k mpu 0 action drop/continue
##########################################################################
#Исходящий трафик тоже нужно ограничить, чтобы не создавать очередей в
#ADSL модеме (то есть мы создаем очереди у себя, до передачи пакетов модему)
#Установка размера очереди и MTU на ppp0
#ip link set dev $OUT_DEV qlen $OUT_QLEN mtu $OUT_MTU
#Установка корневой дисциплины обработки очереди HTB, трафик по умолчанию идет в 1:350
tc qdisc add dev $OUT_DEV root handle 1: htb default 350
#root class
tc class add dev $OUT_DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit ceil ${UPLINK}kbit
#high priority class (SSH, DNS, ICMP..), с жестким ограничением в 2/10 доступной полосы (icmp)
tc class add dev $OUT_DEV parent 1:1 classid 1:10 htb rate $[1*$UPLINK/10]kbit ceil $[2*$UPLINK/10]kbit
#SSH, DNS.. 51.2kbit - 102.4kbit
tc class add dev $OUT_DEV parent 1:10 classid 1:110 htb rate $[1*$UPLINK/20]kbit ceil $[2*$UPLINK/10]kbit prio 0
tc qdisc add dev $OUT_DEV parent 1:110 handle 110: pfifo #limit 10
#ICMP limited.. 25.6kbit - 51.2kbit
tc class add dev $OUT_DEV parent 1:10 classid 1:120 htb rate $[1*$UPLINK/20]kbit ceil $[1*$UPLINK/10]kbit prio 1
tc qdisc add dev $OUT_DEV parent 1:120 handle 120: pfifo #limit 10
#medium priority class (трафик от маршрутизатора, с битами TOS..)
tc class add dev $OUT_DEV parent 1:1 classid 1:20 htb rate $[2*$UPLINK/10]kbit ceil ${UPLINK}kbit
#TOS="minimize delay"
tc class add dev $OUT_DEV parent 1:20 classid 1:210 htb rate $[1*$UPLINK/10]kbit ceil ${UPLINK}kbit prio 2
tc qdisc add dev $OUT_DEV parent 1:210 handle 210: sfq perturb 10
#TOS="maximize-throughput", SYN-запросы
tc class add dev $OUT_DEV parent 1:20 classid 1:220 htb rate $[1*$UPLINK/10]kbit ceil ${UPLINK}kbit prio 2
tc qdisc add dev $OUT_DEV parent 1:220 handle 220: sfq perturb 10
#другой трафик, генерируемый на маршрутизаторе
tc class add dev $OUT_DEV parent 1:20 classid 1:230 htb rate $[1*$UPLINK/10]kbit ceil $[5*$UPLINK/10]kbit prio 2
tc qdisc add dev $OUT_DEV parent 1:230 handle 230: sfq perturb 10
#low priority class (трафик от клиентов локальной сети)
tc class add dev $OUT_DEV parent 1:1 classid 1:30 htb rate $[7*$UPLINK/10]kbit ceil ${UPLINK}kbit
#HTTP port 80, HTTPS port 443, ICQ, основные биты TOS..
tc class add dev $OUT_DEV parent 1:30 classid 1:310 htb rate $[2*$UPLINK/10]kbit ceil ${UPLINK}kbit prio 3
tc qdisc add dev $OUT_DEV parent 1:310 handle 310: sfq perturb 10
#POP3 port 110, SMTP port 25
tc class add dev $OUT_DEV parent 1:30 classid 1:320 htb rate $[2*$UPLINK/10]kbit ceil ${UPLINK}kbit prio 3
tc qdisc add dev $OUT_DEV parent 1:320 handle 320: sfq perturb 10
#FTP port 21
tc class add dev $OUT_DEV parent 1:30 classid 1:330 htb rate $[1*$UPLINK/10]kbit ceil ${UPLINK}kbit prio 4
tc qdisc add dev $OUT_DEV parent 1:330 handle 330: sfq perturb 10
#TOS="minimize cost"
tc class add dev $OUT_DEV parent 1:30 classid 1:340 htb rate $[1*$UPLINK/10]kbit ceil ${UPLINK}kbit prio 4
tc qdisc add dev $OUT_DEV parent 1:340 handle 340: sfq perturb 10
#default
tc class add dev $OUT_DEV parent 1:30 classid 1:350 htb rate $[1*$UPLINK/10]kbit ceil ${UPLINK}kbit prio 5
tc qdisc add dev $OUT_DEV parent 1:350 handle 350: sfq perturb 10
#filters for root qdisc
tc filter add dev $OUT_DEV parent 1: prio 2 $IP handle 1 fw classid 1:110 #22-SSH, 53-DNS
tc filter add dev $OUT_DEV parent 1: prio 1 $IP handle 2 fw classid 1:120 #ICMP #tc filter add dev $OUT_DEV parent 1: prio 1 $U32 $ICMP classid 1:120
#
tc filter add dev $OUT_DEV parent 1: prio 5 $IP handle 3 fw classid 1:210 #TOS="Minimize delay"
tc filter add dev $OUT_DEV parent 1: prio 4 $IP handle 4 fw classid 1:220 #SyN-запросы, TOS="Maximize-Throughput"
tc filter add dev $OUT_DEV parent 1: prio 3 $IP handle 5 fw classid 1:230 #Иной трафик, генерируемый локальными процессами маршрутизатора..
#
tc filter add dev $OUT_DEV parent 1: prio 6 $IP handle 6 fw classid 1:310 ##SyN-запросы, TOS="Maximize-Throughput", TOS="Minimize delay"
tc filter add dev $OUT_DEV parent 1: prio 7 $U32 $SRC $LAN_IP_RANGE $TCP $DPORT 80 0xffff classid 1:310
tc filter add dev $OUT_DEV parent 1: prio 8 $U32 $SRC $LAN_IP_RANGE $TCP $SPORT 80 0xffff classid 1:310
tc filter add dev $OUT_DEV parent 1: prio 9 $U32 $SRC $LAN_IP_RANGE $TCP $DPORT 443 0xffff classid 1:310
tc filter add dev $OUT_DEV parent 1: prio 10 $U32 $SRC $LAN_IP_RANGE $TCP $SPORT 443 0xffff classid 1:310
tc filter add dev $OUT_DEV parent 1: prio 11 $U32 $SRC $LAN_IP_RANGE $TCP $SPORT 5190 0xffff classid 1:310
tc filter add dev $OUT_DEV parent 1: prio 12 $U32 $SRC $LAN_IP_RANGE $TCP $DPORT 3128 0xffff classid 1:310
#tc filter add dev $OUT_DEV parent 1: prio 3 $U32 $SRC $LAN_IP_RANGE $TCP $DPORT 8080 0xffff classid 1:310
tc filter add dev $OUT_DEV parent 1: prio 13 $U32 $SRC $LAN_IP_RANGE $TCP $DPORT 110 0xffff classid 1:320
tc filter add dev $OUT_DEV parent 1: prio 14 $U32 $SRC $LAN_IP_RANGE $TCP $SPORT 110 0xffff classid 1:320
tc filter add dev $OUT_DEV parent 1: prio 15 $U32 $SRC $LAN_IP_RANGE $TCP $DPORT 25 0xffff classid 1:320
tc filter add dev $OUT_DEV parent 1: prio 16 $U32 $SRC $LAN_IP_RANGE $TCP $SPORT 25 0xffff classid 1:320
tc filter add dev $OUT_DEV parent 1: prio 17 $U32 $SRC $LAN_IP_RANGE $TCP $DPORT 21 0xffff classid 1:330
tc filter add dev $OUT_DEV parent 1: prio 18 $U32 $SRC $LAN_IP_RANGE $TCP $SPORT 21 0xffff classid 1:330
tc filter add dev $OUT_DEV parent 1: prio 19 $IP handle 8 fw classid 1:340 #TOS="Minimize-Cost"
##########################################################################
#Ограничение скорости для локальной сети
ip link set dev $IN_DEV qlen $IN_QLEN
#Обрезаю исходящую от меня в локальную сеть скорость
tc qdisc add dev $IN_DEV root handle 1: htb default 13
#root class 1
tc class add dev $IN_DEV parent 1: classid 1:1 htb rate ${DOWNLINK}kbit ceil ${DOWNLINK}kbit
#high priority
tc class add dev $IN_DEV parent 1:1 classid 1:11 htb rate 128kbit ceil 160kbit prio 1
tc qdisc add dev $IN_DEV parent 1:11 handle 11: sfq perturb 10
tc class add dev $IN_DEV parent 1:1 classid 1:14 htb rate 512kbit ceil 768kbit prio 1
tc qdisc add dev $IN_DEV parent 1:14 handle 14: sfq perturb 10
#medium priority
tc class add dev $IN_DEV parent 1:1 classid 1:12 htb rate 64kbit ceil 128kbit prio 2
tc qdisc add dev $IN_DEV parent 1:12 handle 12: sfq perturb 10
#default
tc class add dev $IN_DEV parent 1:1 classid 1:13 htb rate 64kbit ceil 64kbit prio 3
tc qdisc add dev $IN_DEV parent 1:13 handle 13: sfq perturb 10
#root class 2
tc class add dev $IN_DEV parent 1: classid 1:2 htb rate $LOCAL_RATE prio 4
tc qdisc add dev $IN_DEV parent 1:2 handle 120: pfifo
tc filter add dev $IN_DEV parent 1: prio 1 $U32 $DST $HIGH_RATING_RANGE flowid 1:11
tc filter add dev $IN_DEV parent 1: prio 2 $U32 $DST $HIGH_MEDIUM_RATING_RANGE flowid 1:14
#tc filter add dev $IN_DEV parent 1: prio 3 $U32 $DST 192.168.1.2 flowid 1:14
tc filter add dev $IN_DEV parent 1: prio 4 $U32 $SRC $LOCAL_IP classid 1:2 |
| shaman |
|
Темы:
26
Сообщения:
379
Участник с: 13 декабря 2009
|
в принципе более менее въезжать начал, что в htb есть rate и ceil. я пока разницы не могу понять |
| gard |
|
Темы:
66
Сообщения:
1167
Участник с: 15 декабря 2009
|
rate - гарантированная полоса. ceil - юзер может получить эту полосу, если есть возможность. То есть к примеру канал один мегабит, 4 юзера, по rate каждому максимум делаем 256КБ/с, в ceil у всех может быть до мегабита, можно 512 к примеру, как захотим. К тому же наличие свободной полосы не означает еще что юзер получит трафик свыше гарантированного, вперед него получит трафик тот, кто имеет более высокий приоритет (тут чем ниже значение - тем выше приоритет). Основное правило: сумма rate для всех не должна (и не может) быть больше пропускной способности на всех вместе взятых. Кстати, почитайте “Повесть о Линукс и управлении трафиком”, там очень это все хорошо расписано. Я понимать начал раза со второго - третьего прочтения =) |
| shaman |
|
Темы:
26
Сообщения:
379
Участник с: 13 декабря 2009
|
ага, понятно. у меня ppp0 смотрит в инет, eth1 в сеть. для ppp0 я создаю правила и режу исходящую скорость. это понятно. а на eth1 аналогичные правила задавать надо? что бы юзерам отдавать трафик по “тарифу”? или лучше ограничить вход на том же ppp0? получится что-то типа буфера, на ppp0 режем исходящюю скорость (с точки зрения юзера), а на eth1 входящюю, опять таки с точки зрения юзера, так? |
| gard |
|
Темы:
66
Сообщения:
1167
Участник с: 15 декабря 2009
|
##########################################################################
#Ограничение скорости для локальной сети
ip link set dev $IN_DEV qlen $IN_QLEN
#Обрезаю исходящую от меня в локальную сеть скорость
tc qdisc add dev $IN_DEV root handle 1: htb default 13
#root class 1
tc class add dev $IN_DEV parent 1: classid 1:1 htb rate ${DOWNLINK}kbit ceil ${DOWNLINK}kbit
#high priority
tc class add dev $IN_DEV parent 1:1 classid 1:11 htb rate 128kbit ceil 160kbit prio 1
tc qdisc add dev $IN_DEV parent 1:11 handle 11: sfq perturb 10
tc class add dev $IN_DEV parent 1:1 classid 1:14 htb rate 512kbit ceil 768kbit prio 1
tc qdisc add dev $IN_DEV parent 1:14 handle 14: sfq perturb 10
#medium priority
tc class add dev $IN_DEV parent 1:1 classid 1:12 htb rate 64kbit ceil 128kbit prio 2
tc qdisc add dev $IN_DEV parent 1:12 handle 12: sfq perturb 10
#default
tc class add dev $IN_DEV parent 1:1 classid 1:13 htb rate 64kbit ceil 64kbit prio 3
tc qdisc add dev $IN_DEV parent 1:13 handle 13: sfq perturb 10
#root class 2
tc class add dev $IN_DEV parent 1: classid 1:2 htb rate $LOCAL_RATE prio 4
tc qdisc add dev $IN_DEV parent 1:2 handle 120: pfifo
tc filter add dev $IN_DEV parent 1: prio 1 $U32 $DST $HIGH_RATING_RANGE flowid 1:11
tc filter add dev $IN_DEV parent 1: prio 2 $U32 $DST $HIGH_MEDIUM_RATING_RANGE flowid 1:14
#tc filter add dev $IN_DEV parent 1: prio 3 $U32 $DST 192.168.1.2 flowid 1:14
tc filter add dev $IN_DEV parent 1: prio 4 $U32 $SRC $LOCAL_IP classid 1:2Вот эта секция у меня и нарезает скорость для клиентов локалки, как легко заметить IN_DEV=“eth1”, у меня было так же ppp0 смотрит в инет, eth1 смотрит в локалку.. суть в том, что с точки зрения компа, eth1 - интерфейс, с которого от нас идет трафик в локальную сеть, мы по определению не может шейпить входящий трафик, потому что мы не контролируем его, что пришло - то пришло, можно только отбрасывать пакеты, но они все равно придут. Ну в общем резать скорость для клиентов локалки вам надо на eth1. К тому же как вы ограничтите трафик для юзеров на ppp0? Сдается мне никак. потому что на него поступает трафик, сгенерированный запросами юзеров с локалки, которые сидят за NAT-ом, то есть фактически с инета ответы идут не на адреса юзеров а на адрес вашео компа, который уже потом ето дело фасует по юзерам (или я сморозил глупость? оО). Кстати, вы вообще можете ничего не резать на ppp0 из того что от нас идет в инет, прок от этого на глаз не виден.. Но с другой стороны, если есть потребность обрезать юзерам исходящий канал, то тода да.. резать на ppp0 как вы правильно сказали. Как итог - вы уже верно поставили задачу: получится что-то типа буфера, на ppp0 режем исходящюю скорость (с точки зрения юзера), а на eth1 входящюю, опять таки с точки зрения юзера, так? |
| shaman |
|
Темы:
26
Сообщения:
379
Участник с: 13 декабря 2009
|
тк юзеры любят всякие торренты, то смысл резать в обе стороны есть, или как минимум делить. спасиб :) |