Автор Тема: HTB ograni4enie na trafik  (Прочетена 4153 пъти)

kirtaka1

  • Участници
  • ***
  • Публикации: 3
    • Профил
HTB ograni4enie na trafik
« -: Dec 09, 2004, 16:11 »
Значи имам eth0, който е свързан към LAN доставчика ми.
eth1, който е свързан към вътрешната ми локална мрежа.
ppp0 се явява VPN през който ползвам internet от LAN доставчика.
Направил съм NAT за ppp0 i eth0, но искам и да разпределя скоростта равномерно(почти:)),
между всички от вътрешната мрежа. HTB i MARK, съм ги компилирал статично в кернела,
защото иначе има проблем с зареждането на MARK. Правя следното:

Маркирам пакетите идващи от VPN-a, като за всяко dest IP давам различен mark.
iptables -t mangle -A FORWARD -i ppp0 -o eth1 -d 192.168.0.1 -j MARK --set-mark 0x1
iptables -t mangle -A FORWARD -i ppp0 -o eth1 -d 192.168.0.2 -j MARK --set-mark 0x2
iptables -t mangle -A FORWARD -i ppp0 -o eth1 -d 192.168.0.3 -j MARK --set-mark 0x3
iptables -t mangle -A FORWARD -i ppp0 -o eth1 -d 192.168.0.5 -j MARK --set-mark 0x5

Правя си родителски клас за скорост от 5kpbs. Толкова ми е скоростта на VPN-а.
tc qdisc add dev eth1 root handle 1: htb default 60
tc class add dev eth1 parent 1: classid 1:1 htb rate 5kbps ceil 6kbps

Добавям, подкласове за всеки един потребител, и съответната скорост.
tc class add dev eth1 parent 1:1 classid 1:10 htb prio 0 rate 1kbps ceil 6kbps
tc class add dev eth1 parent 1:1 classid 1:20 htb prio 1 rate 1kbps ceil 6kbps
tc class add dev eth1 parent 1:1 classid 1:30 htb prio 2 rate 1kbps ceil 5kbps
tc class add dev eth1 parent 1:1 classid 1:50 htb prio 4 rate 1kbps ceil 5kbps
tc class add dev eth1 parent 1:1 classid 1:60 htb prio 10 rate 0kbps ceil 6kbps

Насочвам маркираните пакети да минават през дадените по горе класове.
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 1 fw flowid 1:10
tc filter add dev eth1 parent 1:0 prio 1 protocol ip handle 2 fw flowid 1:20
tc filter add dev eth1 parent 1:0 prio 2 protocol ip handle 3 fw flowid 1:30
tc filter add dev eth1 parent 1:0 prio 4 protocol ip handle 5 fw flowid 1:50

Според мен тове нещо по горе трябва да работи. Проблема е че не работи. Все едно
че въобще не съм го слагал. Някой ако има идея, или повече опит от мен в HTB, да
удари едно рамо. Ще съм много благодарен на всяка идея.
Edit: Използвам SlackWare 9.1 с ядро 2.4.20. tc инструмента съм го изтеглил от нета с подръжка на HTB. Като ваведа горните редове и ништо не става. Няма разпределение на трафика. Всеки от мрежата дърпа с колкото може.
Активен

  • Гост
HTB ograni4enie na trafik
« Отговор #1 -: Dec 09, 2004, 18:50 »
/offtopic
а аз да питам можеш ли да ме насочиш към свястна документация за трафик шейпинг-а , в детайли командите и синтезирано както трябва като и по възможност да е обяснено какво ми трябва и не за това.....


а по темата.
Мисля че разбиращите ще искат да им кажеш ядрото ти , дистрото ти и какво става ако не това което искаш ?
Активен

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
HTB ograni4enie na trafik
« Отговор #2 -: Dec 10, 2004, 00:33 »
/offtopic:

search -> forum / статии в linux-bg.org също
global search -> google '<img'>

Е днеска мернах един линк в CEG, който преди не бях виждал:

http://www.knowplace.org/shaper/
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
HTB ograni4enie na trafik
« Отговор #3 -: Dec 14, 2004, 18:08 »
1.Защо не пробваш с htb.init? Мисля, че е доста по-humanreadable '<img'>

2. Нещо не ми стана много ясно с НАТ-а, който правиш, но не би ли трябвало тогава да е:

iptables -t mangle -A FORWARD -i eth0 -o eth1 -d 192.168.0.1 -j MARK --set-mark 0x1

Даже пробвай направо:

iptables -t mangle -A FORWARD -d 192.168.0.1 -j MARK --set-mark 0x1

3. И още нещо не ми е ясно - защо използваш различно PRIO

Цитат
PRIO - Priority of class traffic. The higher the number, the lesser the priority. Also, classes with higher priority are offered excess bandwidth first.

(А и може да се лъжа, но май максималната стойност е 5)

4. Доколкото си спомням класовете не извършват шейпинг, трябва qdisc:

Примерен код
tc class add dev eth0 parent 1:15 classid 1:1641 htb rate 8Kbit ceil 128Kbit burst 32k prio 5
tc qdisc add dev eth0 parent 1:1641 handle 1641 sfq perturb 10
tc filter add dev eth0 parent 1:0 protocol ip prio 200 handle 1641 fw classid 1:1641
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

kirtaka1

  • Участници
  • ***
  • Публикации: 3
    • Профил
HTB ograni4enie na trafik
« Отговор #4 -: Dec 18, 2004, 12:21 »
Значи, идеята е следната, трябва да мога да огранича трафика само който минава през VPN-a. Локалната мрежа на доставчика ми трябва да остане на пълната скорост. Затова не мога да направя iptables -t mangle -A FORWARD -d 192.168.0.1 -j MARK --set-mark 0x1 и т.н.
А това за qdisc ще го прегледам. Благодаря все пак за отговора. Ако някой може да даде още някоя идея ще съм благодарен.
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
HTB ograni4enie na trafik
« Отговор #5 -: Dec 18, 2004, 12:48 »
Цитат (kirtaka1 @ Дек. 18 2004,13:21)
Значи, идеята е следната, трябва да мога да огранича трафика само който минава през VPN-a. Локалната мрежа на доставчика ми трябва да остане на пълната скорост. Затова не мога да направя iptables -t mangle -A FORWARD -d 192.168.0.1 -j MARK --set-mark 0x1 и т.н.
А това за qdisc ще го прегледам. Благодаря все пак за отговора. Ако някой може да даде още някоя идея ще съм благодарен.

Ок, ама предполагам, че локалната мрежа на доставчика ти е някаква локална мрежа (примерно 192.168.2.0). Тогава слагаш следните редове преди маркирането:

iptables -t mangle -A FORWARD -s 192.168.2.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -t mangle -A FORWARD -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT

и готово '<img'>
Когато пакета не е маркиран, няма критерий по-който да се шейпне, така че не се шейпва.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

kirtaka1

  • Участници
  • ***
  • Публикации: 3
    • Профил
HTB ograni4enie na trafik
« Отговор #6 -: Dec 20, 2004, 15:39 »
Така. Тъй като тепърва се уча на HTB, VladSun ще хвърлиш ли един поглед на това.Благодаря ти предварително.
Вътрешната мрежа на доставчика ми е 192.168.х.х, и от скоро всичко минава през VPN-a, но на по-голяма скорост. Затова се наложи да направя следните промени по-долу.

iptables -t mangle -A FORWARD -i ppp0 -o eth1 -s ! 192.168.0.0/16 -d 192.168.0.1 -j MARK --set-mark 0x1
iptables -t mangle -A FORWARD -i ppp0 -o eth1 -s ! 192.168.0.0/16 -d 192.168.0.2 -j MARK --set-mark 0x2
iptables -t mangle -A FORWARD -i ppp0 -o eth1 -s ! 192.168.0.0/16 -d 192.168.0.3 -j MARK --set-mark 0x3
iptables -t mangle -A FORWARD -i ppp0 -o eth1 -s ! 192.168.0.0/16 -d 192.168.0.4 -j MARK --set-mark 0x4
iptables -t mangle -A FORWARD -i ppp0 -o eth1 -s ! 192.168.0.0/16 -d 192.168.0.5 -j MARK --set-mark 0x5

tc qdisc add dev eth1 root handle 1: htb default 60
tc class add dev eth1 parent 1: classid 1:1 htb rate 5kbps ceil 6kbps

tc class add dev eth1 parent 1:1 classid 1:10 htb prio 0 rate 1kbps ceil 6kbps
tc class add dev eth1 parent 1:1 classid 1:20 htb prio 0 rate 1kbps ceil 6kbps
tc class add dev eth1 parent 1:1 classid 1:30 htb prio 1 rate 1kbps ceil 5kbps
tc class add dev eth1 parent 1:1 classid 1:40 htb prio 2 rate 1kbit ceil 5kbps
tc class add dev eth1 parent 1:1 classid 1:50 htb prio 1 rate 1kbps ceil 5kbps
tc class add dev eth1 parent 1:1 classid 1:60 htb prio 10 rate 1kbit ceil 6kbps

tc qdisc add dev eth1 parent 1:10 handle 110: sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 120: sfq perturb 10
tc qdisc add dev eth1 parent 1:30 handle 130: sfq perturb 10
tc qdisc add dev eth1 parent 1:40 handle 140: sfq perturb 10
tc qdisc add dev eth1 parent 1:50 handle 150: sfq perturb 10
tc qdisc add dev eth1 parent 1:60 handle 160: sfq perturb 10

tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 1 fw classid 1:10
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 2 fw classid 1:20
tc filter add dev eth1 parent 1:0 prio 1 protocol ip handle 3 fw classid 1:30
tc filter add dev eth1 parent 1:0 prio 2 protocol ip handle 4 fw classid 1:40
tc filter add dev eth1 parent 1:0 prio 1 protocol ip handle 5 fw classid 1:50
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
HTB ograni4enie na trafik
« Отговор #7 -: Dec 22, 2004, 11:08 »
Пак ти казвам - ползвай htb.init - само с хелп-а даден в самия сорс ще се оправиш самичък.

Иначе - това 1:1 не ми харесва, смени го примерно на 1:2.

Успех !

ПС: М/у другото с тези правила в iptables и tc ще шейпваш само доунлоад-а - не забравяй спецификата на TCP/IP протокола. Най-добре е да шейпнеш и ъплоада.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

  • Гост
HTB ograni4enie na trafik
« Отговор #8 -: Dec 24, 2004, 16:11 »
Цитат
HTB i MARK, съм ги компилирал статично в кернела,
защото иначе има проблем с зареждането на MARK

az ne sam gi kompiliral stati4no i nqmam problemi.
Цитат
tc filter add dev eth1 parent 1':0' prio 0 protocol ip handle 1 fw flowid 1:10
tc filter add dev eth1 parent 1':0' prio 1 protocol ip handle 2 fw flowid 1:20
tc filter add dev eth1 parent 1':0' prio 2 protocol ip handle 3 fw flowid 1:30
tc filter add dev eth1 parent 1':0' prio 4 protocol ip handle 5 fw flowid 1:50

Spored men ozna4ava, 4e 192.168.0.1 6te ima po-golqm prioritet ot drugite.

Ideqta na HTB e da razpredelq izhodq6tiq trafik t.e. tezi paketi koito ve4e si polu4il ot ISP. A kakvo toj ti e izpratil ... i za kogo e to e ve4e drug vapros.
Ta kakvo moga da ti preporazam:
1. da ne izpolzva6 prio 0
2. da ne izpolzva6 ceil 6 za leaf clasovete
3. da organi4i6 i prioritizira6 izhodq6tiq kam ISP trafik(ppp0)
4. eventualno da namali6 MTU na eth1 i eth0
Uspeh
Активен

  • Гост
HTB ograni4enie na trafik
« Отговор #9 -: Dec 25, 2004, 01:13 »
A we a load balancing kak da stane ?
Активен

kmakaron

  • Напреднали
  • *****
  • Публикации: 50
    • Профил
HTB ograni4enie na trafik
« Отговор #10 -: Dec 28, 2004, 12:33 »
Така.
Първо това с prio 0 е умишлено.
Второ трябва да се махне default class-а, заштото се лимитира и трафика от самата машина. Всичко останало остава.
Не разбирам защо трябва да намаля MTU на eth0 i eth1, и защо да огранича изходящия трафик, като той ми е поне 2 пъти по-бърз от входящия, който всъщност е лимитиран.
Благодяря.
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
HTB ograni4enie na trafik
« Отговор #11 -: Dec 28, 2004, 22:47 »
Една полезна статия:
HTB

Ограничаването на изходящия трафик се прави с цел да не ти се задръсти канала за обратна връзка и така да забавиш (а може би и да губиш) обратните ACK пакети за download-а а оттам и самия него ... TCP/IP !!!
В горната статия има интересни подходи за приоритезирането на различните видове пакети - не съм виждал другаде да го дават като съвет '<img'>
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
trafik
Настройка на програми
Beliq 0 1754 Последна публикация Oct 28, 2002, 13:11
от Beliq
TRAFIK i SKOROST Ograni4enia
Настройка на програми
christo 0 1698 Последна публикация Nov 04, 2003, 12:35
от christo
ograni4enie connecii kum samba
Настройка на програми
PAIN1 1 1426 Последна публикация Dec 22, 2003, 23:21
от zazzko
limit na trafik
Настройка на програми
Enigmatic 9 3598 Последна публикация Sep 02, 2004, 23:05
от ohubohu
iptables i ftp trafik
Настройка на програми
tuxi 3 1719 Последна публикация Dec 10, 2004, 22:59
от