# jak pisac skrypty htb

## nirvek

Witam

 Bawilem sie troche modyfikacja popularnego skryptu rc.htb ale nie dawalo mi to oczekiwanych efektow , niestety nie znalazlem szczegolowych i lopatologicznych opisow w sieci jak pisac swoj htb skrypt na przykladzie obrazkowo opisowym z wyjasnieniem jak liczony transfer jak dobierac ograniczenia jak wplywaja priorytety oraz jak budowac filtry

jednakze po spojrzeniu na wiekszosc skryptow wyglada to ze i download i upload ma podobna budowe:

x

|-priorytetowe

|- 192.168.0.2

|- 192.168.0.3

|- .......

\_ p2p  

Owszem w zupelnosci niektorym osobom , jednak nie mi , nie wiem na jakiej zasadzie jest wrzucane do p2p oraz jak dzielone w klasie p2p , czy rowno rozdziela p2p transfer? Owszem wiekszosc dazy do tego by rowno podzielic normalny ruch i zepchnac p2p do poziomu nie przeszkadzajacego , ja natomiast daze do tego by wykorzystac cale lacze, tak wiec by p2p lepiej chodzilo i to sprawiedliwie , wiec probuje zbudowac :

x

|--192.168.0.2

|   |- prio

|   |- normal

|   \ p2p

|- 192.168.0.3

|  |- prio

|  |-normal

|   \- p2p

....

czyli osobne kolejki na osobne uslugi wewnatrz klas na dane kompy , byc moze jesli kazdy komp bedzie mial swoja kolejke na p2p to moze p2p bedzie dzieki sfq lepiej chodzic mu , a ze kazdy bedzie mial wydzielone pasmo to nie powinno danej osobie przeszkadzac ani innym.

Czy moglby ktos mi pomoc zrozumiec markowanie pakietow przez iptables , oraz jak odpowiednio filtrowac prio , czy p2p dla danego kompa , nie znam sie tez na wyliczaniu wartosci pasma gwarantowanego oraz maksymalnego , chcialbym by cale gwarantowane nie bylo wiecej niz polowa maksymalnego , ale nie wiem ile powinno miec priorytetowe ani nie wiem jak filtrowac

wszystkie uwagi i rady mile widziane

----------

## Arfrever

Moved from Polish to Polish OTW.

----------

## keddie

ja chętnie podłączę się do tematu z innym pytaniem:

czy ktoś ma doświadczenie w pisaniu skryptów HTB na routerki z jednym intefejsem WAN i kilkoma interfejsami LAN?

Bardzo proszę o jakiś przykład, który mógłbym sobie dalej rozbudować, komentarze z dobrymi zasadami budowania takich rzeczy, itp.

Z góry dzięki.

----------

## Mroofka

to zależy co chcecie osiągnać ale IMQ jest rozwiązaniem dość dobrym.

Ja sobie tak radze z routerkami ktore maja po klilka miedzymordzi dla klientów i kilka "do" internetu  :Smile: 

Pozdrawiam

Mroofka

----------

## nirvek

samo słowo IMQ niewiele mi mówi , lepiej gdyby ktoś na przykładzie pokazał jak stosować i wyjaśnił łopatologicznie ...

----------

## nirvek

Witam

 Ze wzgledu na znikoma pomoc postanowilem pogooglowac i stworzylem taki o to skrypcik mam nadzieje tworzacy podział na 3 kompy

x 

|--192.168.1.2 

|  |- prio (icmp , dns , ack?)

|  |- strony www

|  \  reszta

|--192.168.1.3 

|  |- prio (icmp , dns , ack?)

|  |- strony www

|   \- reszta

\- 192.168.1.3 

  |- prio (icmp , dns , ack?)

  |- strony www

  \- reszta

prawde mówiąc nei wiem czy się mi udało więc proszę o wszelkie komentarze co do skryptu

```

#### internet --- eth1 (komp) eth0 --- lan ###

################## download (4096kbit) ####################

tc qdisc del root dev eth0

tc qdisc add dev eth0 root handle 1:0 htb

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 3800kbit ceil 3800kbit

tc qdisc add dev eth0 parent 1:1 handle 3:0 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 1230kbit ceil 3800kbit prio 1

tc qdisc add dev eth0 parent 1:2 handle 4:0 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:3 htb rate 1230kbit ceil 3800kbit prio 1 

tc qdisc add dev eth0 parent 1:3 handle 5:0 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:4 htb rate 1230kbit ceil 3800kbit prio 1

tc qdisc add dev eth0 parent 1:4 handle 6:0 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:5 htb rate 1kbit ceil 1kbit

tc filter add dev eth0 protocol ip parent 1:1 u32 match ip dst 192.168.1.2 flowid 1:2

tc filter add dev eth0 protocol ip parent 1:1 u32 match ip dst 192.168.1.3 flowid 1:3

tc filter add dev eth0 protocol ip parent 1:1 u32 match ip dst 192.168.1.4 flowid 1:4

tc filter add dev eth0 protocol ip parent 1:1 u32 match ip dst 0/0 flowid 1:5

# 1 komp

tc class add dev eth0 parent 1:2 classid 1:21 htb rate 228kbit ceil 1230kbit prio 2

tc qdisc add dev eth0 parent 1:21 handle 7:0 sfq perturb 10

tc class add dev eth0 parent 1:2 classid 1:22 htb rate 1000kbit ceil 1230kbit prio 3

tc qdisc add dev eth0 parent 1:22 handle 8:0 sfq perturb 10

tc class add dev eth0 parent 1:2 classid 1:23 htb rate 2kbit ceil 1230kbit prio 4

tc qdisc add dev eth0 parent 1:23 handle 9:0 sfq perturb 10

tc filter add dev eth0 protocol ip parent 1:2 u32 match ip sport 53 0xffff flowid 1:21

tc filter add dev eth0 protocol ip parent 1:2 u32 match ip protocol 1 0xff flowid 1:21

tc filter add dev eth0 protocol ip parent 1:2 u32 match ip tos 0x10 0xff flowid 1:21 

tc filter add dev eth0 protocol ip parent 1:2 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 1:21

tc filter add dev eth0 protocol ip parent 1:2 u32 match ip sport 80 0xffff flowid 1:22

tc filter add dev eth0 protocol ip parent 1:2 u32 match ip dst 0/0 flowid 1:23 

# 2 komp

tc class add dev eth0 parent 1:3 classid 1:31 htb rate 228kbit ceil 1230kbit prio 2

tc qdisc add dev eth0 parent 1:31 handle 10:0 sfq perturb 10

tc class add dev eth0 parent 1:3 classid 1:32 htb rate 1000kbit ceil 1230kbit prio 3

tc qdisc add dev eth0 parent 1:32 handle 11:0 sfq perturb 10

tc class add dev eth0 parent 1:3 classid 1:33 htb rate 2kbit ceil 1230kbit prio 4

tc qdisc add dev eth0 parent 1:33 handle 12:0 sfq perturb 10

tc filter add dev eth0 protocol ip parent 1:3 u32 match ip sport 53 0xffff flowid 1:31

tc filter add dev eth0 protocol ip parent 1:3 u32 match ip protocol 1 0xff flowid 1:31

tc filter add dev eth0 protocol ip parent 1:3 u32 match ip tos 0x10 0xff flowid 1:31 

tc filter add dev eth0 protocol ip parent 1:3 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 1:31

tc filter add dev eth0 protocol ip parent 1:3 u32 match ip sport 80 0xffff flowid 1:32

tc filter add dev eth0 protocol ip parent 1:3 u32 match ip dst 0/0 flowid 1:33 

# 3 komp

tc class add dev eth0 parent 1:4 classid 1:41 htb rate 228kbit ceil 1230kbit prio 2

tc qdisc add dev eth0 parent 1:41 handle 13:0 sfq perturb 10

tc class add dev eth0 parent 1:4 classid 1:42 htb rate 1000kbit ceil 1230kbit prio 3

tc qdisc add dev eth0 parent 1:42 handle 14:0 sfq perturb 10

tc class add dev eth0 parent 1:4 classid 1:43 htb rate 2kbit ceil 1230kbit prio 4

tc qdisc add dev eth0 parent 1:43 handle 15:0 sfq perturb 10

tc filter add dev eth0 protocol ip parent 1:4 u32 match ip sport 53 0xffff flowid 1:41

tc filter add dev eth0 protocol ip parent 1:4 u32 match ip protocol 1 0xff flowid 1:41

tc filter add dev eth0 protocol ip parent 1:4 u32 match ip tos 0x10 0xff flowid 1:41 

tc filter add dev eth0 protocol ip parent 1:4 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 1:41

tc filter add dev eth0 protocol ip parent 1:4 u32 match ip sport 80 0xffff flowid 1:42

tc filter add dev eth0 protocol ip parent 1:4 u32 match ip dst 0/0 flowid 1:43 

####################### upload (512kbit) ##############

tc qdisc del root dev eth1

tc qdisc add dev eth1 root handle 2:0 htb

tc class add dev eth1 parent 2:0 classid 2:1 htb rate 468kbit ceil 468kbit

tc qdisc add dev eth1 parent 2:1 handle 16:0 sfq perturb 10

tc class add dev eth1 parent 2:1 classid 2:2 htb rate 152kbit ceil 468kbit prio 1

tc qdisc add dev eth1 parent 2:2 handle 17:0 sfq perturb 10

tc class add dev eth1 parent 2:1 classid 2:3 htb rate 152kbit ceil 468kbit prio 1 

tc qdisc add dev eth1 parent 2:3 handle 18:0 sfq perturb 10

tc class add dev eth1 parent 2:1 classid 2:4 htb rate 152kbit ceil 468kbit prio 1

tc qdisc add dev eth1 parent 2:4 handle 19:0 sfq perturb 10

tc class add dev eth1 parent 2:1 classid 2:5 htb rate 1kbit ceil 1kbit

tc filter add dev eth1 protocol ip parent 2:1 u32 match ip src 192.168.1.2 flowid 2:2

tc filter add dev eth1 protocol ip parent 2:1 u32 match ip src 192.168.1.3 flowid 2:3

tc filter add dev eth1 protocol ip parent 2:1 u32 match ip src 192.168.1.4 flowid 2:4

tc filter add dev eth1 protocol ip parent 2:1 u32 match ip src 0/0 flowid 2:5

# 1 komp

tc class add dev eth1 parent 2:2 classid 2:21 htb rate 56kbit ceil 152kbit prio 2

tc qdisc add dev eth1 parent 2:21 handle 20:0 sfq perturb 10

tc class add dev eth1 parent 2:2 classid 2:22 htb rate 8kbit ceil 152kbit prio 3

tc qdisc add dev eth1 parent 2:22 handle 21:0 sfq perturb 10

tc class add dev eth1 parent 2:2 classid 2:23 htb rate 88kbit ceil 152kbit prio 4

tc qdisc add dev eth1 parent 2:23 handle 22:0 sfq perturb 10

tc filter add dev eth1 protocol ip parent 2:2 u32 match ip dport 53 0xffff flowid 2:21

tc filter add dev eth1 protocol ip parent 2:2 u32 match ip protocol 1 0xff flowid 2:21

tc filter add dev eth1 protocol ip parent 2:2 u32 match ip tos 0x10 0xff flowid 2:21 

tc filter add dev eth1 protocol ip parent 2:2 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 2:21

tc filter add dev eth1 protocol ip parent 2:2 u32 match ip dport 80 0xffff flowid 2:22

tc filter add dev eth1 protocol ip parent 2:2 u32 match ip src 0/0 flowid 2:23 

# 2 komp

tc class add dev eth1 parent 2:3 classid 2:31 htb rate 56kbit ceil 152kbit prio 2

tc qdisc add dev eth1 parent 2:31 handle 23:0 sfq perturb 10

tc class add dev eth1 parent 2:3 classid 2:32 htb rate 8kbit ceil 152kbit prio 3

tc qdisc add dev eth1 parent 2:32 handle 24:0 sfq perturb 10

tc class add dev eth1 parent 2:3 classid 2:33 htb rate 88kbit ceil 152kbit prio 4

tc qdisc add dev eth1 parent 2:33 handle 25:0 sfq perturb 10

tc filter add dev eth1 protocol ip parent 2:3 u32 match ip dport 53 0xffff flowid 2:31

tc filter add dev eth1 protocol ip parent 2:3 u32 match ip protocol 1 0xff flowid 2:31

tc filter add dev eth1 protocol ip parent 2:3 u32 match ip tos 0x10 0xff flowid 2:31 

tc filter add dev eth1 protocol ip parent 2:3 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 2:31

tc filter add dev eth1 protocol ip parent 2:3 u32 match ip dport 80 0xffff flowid 2:32

tc filter add dev eth1 protocol ip parent 2:3 u32 match ip src 0/0 flowid 2:33 

# 3 komp

tc class add dev eth1 parent 2:4 classid 2:41 htb rate 56kbit ceil 152kbit prio 2

tc qdisc add dev eth1 parent 2:41 handle 26:0 sfq perturb 10

tc class add dev eth1 parent 2:4 classid 2:42 htb rate 8kbit ceil 152kbit prio 3

tc qdisc add dev eth1 parent 2:42 handle 27:0 sfq perturb 10

tc class add dev eth1 parent 2:4 classid 2:43 htb rate 88kbit ceil 152kbit prio 4

tc qdisc add dev eth1 parent 2:43 handle 28:0 sfq perturb 10

tc filter add dev eth1 protocol ip parent 2:4 u32 match ip dport 53 0xffff flowid 2:41

tc filter add dev eth1 protocol ip parent 2:4 u32 match ip protocol 1 0xff flowid 2:41

tc filter add dev eth1 protocol ip parent 2:4 u32 match ip tos 0x10 0xff flowid 2:41 

tc filter add dev eth1 protocol ip parent 2:4 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 2:41

tc filter add dev eth1 protocol ip parent 2:4 u32 match ip dport 80 0xffff flowid 2:42

tc filter add dev eth1 protocol ip parent 2:4 u32 match ip src 0/0 flowid 2:43 

```

----------

## nirvek

heh 

tc filter show dev eth0 czy eth1 pokazywalo pustke , poczytalem i chyba wiem co zle zrobilem ale trzeba bedzie wszytsko przebudowac

probowalem zrobic:

1:0

|

1:1

|-1:2

| |-1.21

| |-1.22

| ....

|-1:3

....

poogooglowalem znow i filtry mozna przydzielac tylko na 1: , 2: ... tak wiec chyba musze przebudowac na

1:0

|

1:1

|-10:1

| |-110:1

| ...

|-20:1

....

by moc dopiac do 1: , 10: , 20: , 110: ...

Jesli sie myle napiszcie cos

----------

## mbar

jak chcesz obejrzeć, co się dzieje, użyj tc-viewer:

```

   śro sty 23 08:45:40 2008

        Mode: HTB        ^C to QUIT

 1:10                 <  248000bit -  248000bit >     65.8 kbit/s  (187pps)

 1:20                 <  128000bit -  204000bit >    157.2 kbit/s  ( 43pps)

```

----------

## nirvek

dzieki , 

ale czemu  tc filter show dev eth0 nic nie pokazuje? Probowalem dodawac filtry do 1:0 i sie udaje natomiast do innych np 100:0 juz nie , probowalem tez zrobic sciezke 1:0 qdisc - 1:1 class - 100:0 qdisc - 100:1 class ale do 100:0 nie udawalo sie podpiac filtrow , tc filter show dev wth0 nic nie pokazywalo , nie wiem wiec czy rozdziela mi na clasy czy nie

----------

## nirvek

./tc-viewer pokazuje mi :

   wto sty 15 21:56:09 2008

        Mode: HTB        ^C to QUIT

        No transfers ...

----------

## deemuzi

sam jestem poczatkujacy w HTB, ale z lartc.org wyczytałem, że filtry w HTB powinno sie podpinac do root'a:

http://lartc.org/howto/lartc.qdisc.filters.html   "with HTB, you should attach all filters to the root!"

----------

## nirvek

Tak , zauwazylem ze udawalo sie podpinac tylko do roota mi , ale na linku jest rysunek i podpinaja do 10: , rozumiem ze wtedy nie mozna do 1: ale jak rozdzielaja na 10: i 12: ? lub czy da sie jakos polaczyc filtry by wejsc do koncowych galezi ? (znaczy filtr na ack + nr. ip itp? ja tylko probowalem skopiowac filtry nie znam sie na ich budowaniu)

----------

## nirvek

zmienilem troche kod, nie dziala jeszcze tak jak powinien ale cos wiecej filtrow sie dodalo i cos widacLast edited by nirvek on Mon Feb 04, 2008 10:25 pm; edited 1 time in total

----------

## deemuzi

 *nirvek wrote:*   

> Tak , zauwazylem ze udawalo sie podpinac tylko do roota mi , ale na linku jest rysunek i podpinaja do 10: , rozumiem ze wtedy nie mozna do 1: ale jak rozdzielaja na 10: i 12: ? lub czy da sie jakos polaczyc filtry by wejsc do koncowych galezi ? (znaczy filtr na ack + nr. ip itp? ja tylko probowalem skopiowac filtry nie znam sie na ich budowaniu)

 

podpinaja do 10: bo to nie jest HTB qdisc, tylko PRIO qdisc

tak swoja droga zastanawiam się czy nie ma graficznych generatorów drzewa HTB, żeby nie bawić się w wpisywanie numerków classid, znacie coś takiego ?

----------

## nirvek

powinien ktos zrobic , widzialem skrypty odnosnie iptables i firewalla , ale htb nei znalazlem

----------

## bartmarian

takie coś znalazłem... http://www.jarod.mpn.pl/htbgui.html

edit

powyższy u mnie nie działa, znalazłem inny http://ktctool.berlios.de/

----------

## mbar

popatrzcie na pakiet htbinit.

----------

## nirvek

mi tez nie udalo sie skompilowac htbgui pod java :/

[troche czasu pozniej]

Udało się  :Very Happy:  , z nie tego dysku co trze probowalem skompilowac kiedy classpatch na dysk c sie odnosily

[troche czasu pozniej]

Niestety tez trzeba sie znac na src dport i innych .... ladnie wyglada ale dalej sie nic nie rozumie i nie umie sie porzadnie stworzyc skryptu , pomijajac fakt ze ma buga i nie da sie przydzielic podklasom ceil wiekszego niz rate w klasach ....

----------

## nirvek

pomimo ze dalej nie udalo sie mi rozdzielic ruchu wychodzacego na poszczegolne ip (podzielilem tylko na prio , www i reszte , znaczy wszystkie 3 kompy widzi jako jeden) udalo sie mi przynajmniej znaleźc w moim skrypcie troche bledow oraz przeliczylem quantum, teraz przynajmniej mam pingi niskie nie wazne ile torrentow sie zapusci i stronki tez szybko chodza , szkoda tylko ze prio w uploadzie duzo zabiera (prawie polowe uploadu , pewnie ack) 

Arfrever: OrtografiaLast edited by nirvek on Mon Feb 04, 2008 9:26 pm; edited 1 time in total

----------

## nirvek

jeszcze sie nei bawilem ale znalazlem cos takiego http://robert.nowotniak.com/htb/

----------

## nirvek

----------- FINALNY SKRYPT------------

Nie wiem czemu nie dało się na tc filter ustawić uploadu , wiec w koncu wrocilem do iptablesow , ponizej znow wklejam skrypt , rozdziela pieknie , sprawdzalem tc-viewerem

```

#### internet --- eth1 (komp) eth0 --- lan ###

################## download (4096kbit) ####################

tc qdisc del root dev eth0

tc qdisc add dev eth0 root handle 1:0 htb r2q 50

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 3850kbit ceil 3850kbit prio 1 quantum 77000

tc qdisc add dev eth0 parent 1:1 handle 3:0 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 1200kbit ceil 3800kbit prio 1 quantum 24000

tc qdisc add dev eth0 parent 1:2 handle 4:0 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:3 htb rate 1200kbit ceil 3800kbit prio 1 quantum 24000

tc qdisc add dev eth0 parent 1:3 handle 5:0 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:4 htb rate 1200kbit ceil 3800kbit prio 1 quantum 24000

tc qdisc add dev eth0 parent 1:4 handle 6:0 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:5 htb rate 80kbit ceil 80kbit prio 5 burst 1kbit quantum 1600

# 1 komp

tc class add dev eth0 parent 1:2 classid 1:6 htb rate 228kbit ceil 3800kbit prio 1 burst 32kbit quantum 4560

tc qdisc add dev eth0 parent 1:6 handle 7:0 sfq perturb 10

tc class add dev eth0 parent 1:2 classid 1:7 htb rate 800kbit ceil 3800kbit prio 3 burst 260kbit quantum 16000

tc qdisc add dev eth0 parent 1:7 handle 8:0 sfq perturb 10

tc class add dev eth0 parent 1:2 classid 1:8 htb rate 200kbit ceil 3800kbit prio 4 burst 8kbit quantum 4000

tc qdisc add dev eth0 parent 1:8 handle 9:0 sfq perturb 10

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.2 match ip sport 53 0xffff flowid 1:6

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.2 match ip protocol 1 0xff flowid 1:6

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.2 match ip tos 0x10 0xff flowid 1:6

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.2 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 1:6

tc filter add dev eth0 protocol ip parent 1: pref 2 u32 match ip dst 192.168.1.2 match ip sport 80 0xffff flowid 1:7

tc filter add dev eth0 protocol ip parent 1: pref 3 u32 match ip dst 192.168.1.2 flowid 1:8

# 2 komp

tc class add dev eth0 parent 1:3 classid 1:9 htb rate 228kbit ceil 3800kbit prio 1 burst 32kbit quantum 4560

tc qdisc add dev eth0 parent 1:9 handle 10:0 sfq perturb 10

tc class add dev eth0 parent 1:3 classid 1:10 htb rate 800kbit ceil 3800kbit prio 3 burst 260kbit quantum 16000

tc qdisc add dev eth0 parent 1:10 handle 11:0 sfq perturb 10

tc class add dev eth0 parent 1:3 classid 1:11 htb rate 200kbit ceil 3800kbit prio 4 burst 8kbit quantum 4000

tc qdisc add dev eth0 parent 1:11 handle 12:0 sfq perturb 10

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.3 match ip sport 53 0xffff flowid 1:9

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.3 match ip protocol 1 0xff flowid 1:9

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.3 match ip tos 0x10 0xff flowid 1:9

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.3 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 1:9

tc filter add dev eth0 protocol ip parent 1: pref 2 u32 match ip dst 192.168.1.3 match ip sport 80 0xffff flowid 1:10

tc filter add dev eth0 protocol ip parent 1: pref 3 u32 match ip dst 192.168.1.3 flowid 1:11

# 3 komp

tc class add dev eth0 parent 1:4 classid 1:12 htb rate 228kbit ceil 3800kbit prio 1 burst 32kbit quantum 4560

tc qdisc add dev eth0 parent 1:12 handle 13:0 sfq perturb 10

tc class add dev eth0 parent 1:4 classid 1:13 htb rate 800kbit ceil 3800kbit prio 3 burst 260kbit quantum 16000

tc qdisc add dev eth0 parent 1:13 handle 14:0 sfq perturb 10

tc class add dev eth0 parent 1:4 classid 1:14 htb rate 200kbit ceil 3800kbit prio 4 burst 8kbit quantum 4000

tc qdisc add dev eth0 parent 1:14 handle 15:0 sfq perturb 10

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.4 match ip sport 53 0xffff flowid 1:12

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.4 match ip protocol 1 0xff flowid 1:12

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.4 match ip tos 0x10 0xff flowid 1:12

tc filter add dev eth0 protocol ip parent 1: pref 1 u32 match ip dst 192.168.1.4 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 1:12

tc filter add dev eth0 protocol ip parent 1: pref 2 u32 match ip dst 192.168.1.4 match ip sport 80 0xffff flowid 1:13

tc filter add dev eth0 protocol ip parent 1: pref 3 u32 match ip dst 192.168.1.4 flowid 1:13

####################### upload (512kbit) ##############

tc qdisc del root dev eth1

tc qdisc add dev eth1 root handle 2:0 htb r2q 25

tc class add dev eth1 parent 2:0 classid 2:1 htb rate 470kbit ceil 470kbit prio 1 burst 27kbit quantum 17200

tc qdisc add dev eth1 parent 2:1 handle 16:0 sfq perturb 10

tc class add dev eth1 parent 2:1 classid 2:2 htb rate 140kbit ceil 460kbit prio 1 burst 9kbit quantum 5600

tc qdisc add dev eth1 parent 2:2 handle 17:0 sfq perturb 10

tc class add dev eth1 parent 2:1 classid 2:3 htb rate 140kbit ceil 460kbit prio 1 burst 9kbit quantum 5600

tc qdisc add dev eth1 parent 2:3 handle 18:0 sfq perturb 10

tc class add dev eth1 parent 2:1 classid 2:4 htb rate 140kbit ceil 460kbit prio 1 burst 9kbit quantum 5600

tc qdisc add dev eth1 parent 2:4 handle 19:0 sfq perturb 10

# 1 komp

tc class add dev eth1 parent 2:2 classid 2:6 htb rate 50kbit ceil 400kbit prio 1 burst 2kbit quantum 2000

tc qdisc add dev eth1 parent 2:6 handle 20:0 sfq perturb 10

tc class add dev eth1 parent 2:2 classid 2:7 htb rate 38kbit ceil 400kbit prio 3 burst 4kbit quantum 1520

tc qdisc add dev eth1 parent 2:7 handle 21:0 sfq perturb 10

tc class add dev eth1 parent 2:2 classid 2:8 htb rate 50kbit ceil 400kbit prio 4 burst 1kbit quantum 2000

tc qdisc add dev eth1 parent 2:8 handle 22:0 sfq perturb 10

iptables -t mangle -A POSTROUTING -s 192.168.1.2 -j MARK --set-mark 73

iptables -t mangle -A POSTROUTING -p tcp -s 192.168.1.2 --dport 80 -j MARK --set-mark 72

iptables -t mangle -A POSTROUTING -p udp -s 192.168.1.2 --dport 80 -j MARK --set-mark 72

iptables -t mangle -A POSTROUTING -p tcp -s 192.168.1.2 --dport 53 -j MARK --set-mark 71

iptables -t mangle -A POSTROUTING -p udp -s 192.168.1.2 --dport 53 -j MARK --set-mark 71

iptables -t mangle -A POSTROUTING -p icmp -s 192.168.1.2 -j MARK --set-mark 71

iptables -t mangle -A POSTROUTING -s 192.168.1.2 -m tos --tos 0x10 -j MARK --set-mark 71

iptables -t mangle -A POSTROUTING -s 192.168.1.2 -p tcp -m length --length 0:64 --tcp-flags ACK ACK -j MARK --set-mark 71

tc filter add dev eth1 protocol ip parent 2: pref 1 handle 71 fw flowid 2:6

tc filter add dev eth1 protocol ip parent 2: pref 2 handle 72 fw flowid 2:7

tc filter add dev eth1 protocol ip parent 2: pref 3 handle 73 fw flowid 2:8

# 2 komp

tc class add dev eth1 parent 2:3 classid 2:9 htb rate 50kbit ceil 400kbit prio 1 burst 2kbit quantum 2000

tc qdisc add dev eth1 parent 2:9 handle 23:0 sfq perturb 10

tc class add dev eth1 parent 2:3 classid 2:10 htb rate 38kbit ceil 400kbit prio 3 burst 4kbit quantum 1520

tc qdisc add dev eth1 parent 2:10 handle 24:0 sfq perturb 10

tc class add dev eth1 parent 2:3 classid 2:11 htb rate 50kbit ceil 400kbit prio 4 burst 1kbit quantum 2000

tc qdisc add dev eth1 parent 2:11 handle 25:0 sfq perturb 10

iptables -t mangle -A POSTROUTING -s 192.168.1.3 -j MARK --set-mark 83

iptables -t mangle -A POSTROUTING -p tcp -s 192.168.1.3 --dport 80 -j MARK --set-mark 82

iptables -t mangle -A POSTROUTING -p udp -s 192.168.1.3 --dport 80 -j MARK --set-mark 82

iptables -t mangle -A POSTROUTING -p tcp -s 192.168.1.3 --dport 53 -j MARK --set-mark 81

iptables -t mangle -A POSTROUTING -p udp -s 192.168.1.3 --dport 53 -j MARK --set-mark 81

iptables -t mangle -A POSTROUTING -p icmp -s 192.168.1.3 -j MARK --set-mark 81

iptables -t mangle -A POSTROUTING -s 192.168.1.3 -m tos --tos 0x10 -j MARK --set-mark 81

iptables -t mangle -A POSTROUTING -s 192.168.1.3 -p tcp -m length --length 0:64 --tcp-flags ACK ACK -j MARK --set-mark 81

tc filter add dev eth1 protocol ip parent 2: pref 1 handle 81 fw flowid 2:9

tc filter add dev eth1 protocol ip parent 2: pref 2 handle 82 fw flowid 2:10

tc filter add dev eth1 protocol ip parent 2: pref 3 handle 83 fw flowid 2:11

# 3 komp

tc class add dev eth1 parent 2:4 classid 2:12 htb rate 50kbit ceil 400kbit prio 1 burst 2kbit quantum 2000

tc qdisc add dev eth1 parent 2:12 handle 26:0 sfq perturb 10

tc class add dev eth1 parent 2:4 classid 2:13 htb rate 38kbit ceil 400kbit prio 3 burst 4kbit quantum 1520

tc qdisc add dev eth1 parent 2:13 handle 27:0 sfq perturb 10

tc class add dev eth1 parent 2:4 classid 2:14 htb rate 50kbit ceil 400kbit prio 4 burst 1kbit quantum 2000

tc qdisc add dev eth1 parent 2:14 handle 28:0 sfq perturb 10

iptables -t mangle -A POSTROUTING -s 192.168.1.4 -j MARK --set-mark 93

iptables -t mangle -A POSTROUTING -p tcp -s 192.168.1.4 --dport 80 -j MARK --set-mark 92

iptables -t mangle -A POSTROUTING -p udp -s 192.168.1.4 --dport 80 -j MARK --set-mark 92

iptables -t mangle -A POSTROUTING -p tcp -s 192.168.1.4 --dport 53 -j MARK --set-mark 91

iptables -t mangle -A POSTROUTING -p udp -s 192.168.1.4 --dport 53 -j MARK --set-mark 91

iptables -t mangle -A POSTROUTING -p icmp -s 192.168.1.4 -j MARK --set-mark 91

iptables -t mangle -A POSTROUTING -s 192.168.1.4 -m tos --tos 0x10 -j MARK --set-mark 91

iptables -t mangle -A POSTROUTING -s 192.168.1.4 -p tcp -m length --length 0:64 --tcp-flags ACK ACK -j MARK --set-mark 91

tc filter add dev eth1 protocol ip parent 2: pref 1 handle 91 fw flowid 2:12

tc filter add dev eth1 protocol ip parent 2: pref 2 handle 92 fw flowid 2:13

tc filter add dev eth1 protocol ip parent 2: pref 3 handle 93 fw flowid 2:14

```

----------

## nirvek

pokasowałem jednak bursty oraz quantumy , lepiej jak sam sobie ustawia

----------

