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
|
тк юзеры любят всякие торренты, то смысл резать в обе стороны есть, или как минимум делить. спасиб :) |