Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-01-23 16:02:39

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

[SOLVED] Priorytet pakietów sieciowych

W cgroups jest coś co się nazywa net_prio i przy jego pomocy można ustawić priorytet pakietom generowanym przez aplikacje korzystających z sieci. Przynajmniej tyle wywnioskowałem czytając https://www.kernel.org/doc/Documentation/cgroups/net_prio.txt . Załóżmy, że mam ustawionego qbittorrenta na full upload/download i mam tam sporo obrazów iso do pobrania/wysyłania, gdy odpalę qbittorrenta, ten zjada całe łącze tak, że pingi na wp są ~800, po wyłączeniu, ping wraca na ~20. Ustawiłem priorytet dla wszystkich procesów na 3 przez :

Kod:

echo "eth0 3" > $CGDIR/net_prio/net_prio.ifpriomap

i dla qbittorrenta:

Kod:

    mkdir -p $CGDIR/net_prio/users/qbittorrent
    echo '1' > $CGDIR/net_prio/users/qbittorrent/cgroup.clone_children
    echo "eth0 1" > $CGDIR/net_prio/users/qbittorrent/net_prio.ifpriomap

Teoretycznie wszystko jest w porządku:

Kod:

$ cat /cgroups/net_prio/net_prio.ifpriomap
lo 0
eth0 3
$ cat /cgroups/net_prio/users/qbittorrent/net_prio.ifpriomap
lo 0
eth0 1
$ cat /cgroups/net_prio/users/qbittorrent/tasks
4475
4586
4597
4617
4618
$ cat /cgroups/net_prio/tasks
1
2
3
5
6
7
8
9
10
11
12
13
15
16
17
18
19
20
21
22
25
26
27
28
29
30
35
36
83
113
131
133
144
149
172
221
222
223
224
225
233
234
236
237
241
242
247
248
273
280
281
448
575
1268
1270
1271
1272
1273
1341
1342
1343
1344
1345
1412
1413
1414
1415
1416
1481
1482
1483
1484
1485
1830
1831
1832
1833
1834
1835
1836
1837
1838
1842
1843
1844
1845
1846
1847
2331
2359
2364
2366
2373
2763
2888
2932
2944
2945
2946
2947
2999
3026
3037
3143
3196
3292
3344
3378
3398
3486
3518
3589
3778
3780
3781
3817
3818
3819
3820
3821
3844
3860
3861
3874
3876
3877
3879
3881
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3947
3951
3966
3967
3969
3970
3972
3973
3974
3976
3977
3984
3991
4006
4007
4018
4044
4047
4048
4067
4069
4070
4071
4079
4080
4082
4084
4086
4087
4096
4098
4101
4108
4109
4112
4113
4114
4115
4117
4127
4128
4129
4133
4188
4193
4194
4195
4197
4199
4200
4221
4222
4223
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4249
4266
4267
4268
4269
4270
4271
4272
4307
4407
4433
4438
4634
4796
4797
4798
4799
4800
4801
4806
4809
4811
4911
5057
5100
5368
5714
6446
7359
7958
8056
8057
8058
8059
8060
8061
8062
8065
8080
8081
8083
8084
8086
8087
8088
8091
8168
8183
8188
8207
8208
8224
8240
8248
8260
8275
8293
8307
8372
8373
8388
8456
9040
9139
9154
9331
9643
9644
9646
9647
9750
9967
10524
14620
14739
14740
16611
16643
17096
17182
17183
17200
17201
17202
17221
17223
18020
18021
18657
18696
20039
27388

Ale gdy ustawię qbittorrenta na full to dalej mam ping 800 i net się ślamazarni. To tak powinno być?

Ostatnio edytowany przez morfik (2014-02-01 01:31:16)

Offline

 

#2  2014-01-23 16:37:21

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Nic podobnego w cgroups nie widziałem, net_prio jest głównie do systemów typu iscsi, czyli dysków sieciowych.

Do pakietów internetowych masz [b]tc[/b] (iproute) kolejkę [b]prio[/b], musisz tylko jakoś oznaczyć pakiety,żeby wpadały do poszczególnych kolejek.

Tu możesz np qbittorrenta odpalić jako innego usera i oznaczyć modułem [b]owner[/b] firewalla,  albo użyć innego modułu cgroup, mianowicie net_cls, jeśli chcesz to robić przez cgroup.

Jeśli uda Ci się z net_cls, to się pochwal, bo mnie się na razie nie udało tego wdrożyć, choć specjalnie nie szalałem z tego powodu.

Jak chcesz (i powinieneś) limitować także pakiety przychodzące, to musisz użyć mechanizmu conntrack do identyfikacji połączenia, z którego pochodzi dany pakiet.
Do tego masz moduły connmark (2 szt - filtr i cel) w firewallu.

Brakuje tylko możliwości prostego ożenienia modułu net_cls
z modułem connmark firewalla, w ten sposób net_cls nie uchwyci pakietów przychodzących (albo na oczy nie widziałem sposobu, jak to zrobić).
Więc chyba najprościej będzie jednak  [b]-m owner[/b].

To by było na tyle
;-)

Ostatnio edytowany przez Jacekalex (2014-01-23 16:45:23)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2014-01-23 16:49:17

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Czyli olać ten net_prio ? Choć to trochę dziwne, bo pisze tam:

The Network priority cgroup provides an interface to allow an administrator to
dynamically set the priority of network traffic generated by various
applications[/quote]
No to powinno działać. :]

Samego qbittorenta-nox to mogę odpalić bez większych problemów jako inny user, ale ja wolałbym to zrobić przez cgroup ale i tak sobie zobaczę ten -m owner .

Mi generalnie zależy na tym, że gdy nie korzystam z łącza to żeby qbittorrent mógł je zapchać.

Ostatnio edytowany przez morfik (2014-01-23 16:50:36)

Offline

 

#4  2014-01-23 17:00:23

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

A jak zamierzasz pakiety przychodzące łapać przez cgroup?
Bo moduł connmark oznacza pakiety wg przynależności do konkretnego połączenia, potem ten znacznik widać w każdym pakiecie lecącym w dowolną stronę, należącym do danego  połączenia.
Te znaczniki widać w /proc/net/ip_conntrack

Ale jakoś musisz oznaczyć pakiety wychodzące markiem  connmark, żeby miały osobne marki w tablicy conntrack.
Do tego musisz je rozpoznać firewallem, nie widzialem nigdzie opcji, zeby to zrobić przez cgroup.
Chyba, żeby robić osobny podsystem sieciowy dla jakiegoś programu, uzytkodnikubuntu naskrobał takie howto, ale u mnie za bardzo nie chciało działać.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2014-01-23 17:24:41

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

No tam pisze coś takiego:

Nominally, an application would set the priority of its traffic via the
SO_PRIORITY socket option.  This however, is not always possible because:

1) The application may not have been coded to set this value
2) The priority of application traffic is often a site-specific administrative
   decision rather than an application defined one.

This cgroup allows an administrator to assign a process to a group which defines
the priority of egress traffic on a given interface. Network priority groups can
be created by first mounting the cgroup filesystem.[/quote]
Czyli to jest tylko dla ruchu wychodzącego ?

Offline

 

#6  2014-01-28 15:05:09

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Jacekalex wiesz może co oznacza 0xffff w poniższym zapisie?

Kod:

tc filter add dev eth0 parent 1:0 protocol ip u32 match ip dport 22 0xffff \
  match ip dst 192.168.0.70/32 classid 1:20

Można jakoś przy pomocy tego tc filter sprecyzować zakres portów?

Offline

 

#7  2014-01-28 15:20:14

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Jacekalex wiesz może co oznacza 0xffff w poniższym zapisie?[/quote]
[url=http://pl.wikipedia.org/wiki/Szesnastkowy_system_liczbowy]Zapis szesnastkowy[/url].

Jak zakres portów w filtrach tc zrobić, nie wiem.
Ale na wszelki wypadek w iptables są cele MARK - markowanie w stylu zjadliwym dla iproute2, i CLASSIFY - bezpośrednie wrzucanie do kolejek iproute2 o określonym identyfikatorze kolejki.

Jak oznaczać zakres portów w firewallu, to chyba nie tylko ja tu wiem.....;)

Gdzieś tu w starych postach będzie, jak kiedyś walczyłem z kolejkami layer7, imq i CLASSIFY, ze stosownymi przykładami.

Ostatnio edytowany przez Jacekalex (2014-01-28 15:26:57)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8  2014-01-28 15:59:05

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

No ja tych sposobów to chyba 4 czy 5 znalazłem póki co. Ale tak się zastanawiam czy idzie to jakoś łatwo zrobić przez tc filter.

Wiem co to zapis hexalny ale co oznacza dport 22 0xffff , po co jest to 0xffff bo inaczej tc filter nie przyjmuje samego dport 22

Offline

 

#9  2014-01-29 03:35:01

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Już wiem co to znaczy, to 0xffff to maska, coś jak w przypadku adresów ip, z tym, że tu jest 16^4=65536 czyli tyle ile jest portów, i przez ustawienie maski się ustawia zakres portów czyli np:

4096 0xf000 = sport 4096-8191
8192 0xe000 = sport 8192-16383

Ten kto projektował to ustawianie zakresów w tc, był sadystą. xD

Ostatnio edytowany przez morfik (2014-01-29 03:35:58)

Offline

 

#10  2014-01-29 11:40:13

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Kod:

iptables -j CLASSIFY --help

Kod:

iptables -j MARK --help

Dlatego klasyfikatory w tc operujące na portach i adresach nie są dla nikogo niezbędne.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#11  2014-01-29 16:33:54

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Ja wiem. Tylko mnie zastanawiał sam ten tc filter -- ja nie potrafię tak przejść obok czegoś niewyjaśnionego bo mi się to potem po nocach śni. xD Ogarnąłem go przez cgroups póki co.

Problem z iptables w przypadku qbittorrenta jest taki, że on nie złapie go. Bo może i mam ustawione w qbittorrencie porty 20000-23000 ale on i tak używa losowych z przedziału 10000-60000 więc tego nie ogarnę sobie przez iptables, chyba że jest jakiś sposób na to?.  Cgroup ładnie oznacza procesy i porty nie mają chyba żadnego znaczenia już. Można to zobaczyć zresztą po pingu. Jak dałem max upload na qbittorrencie to pingi miałem około 600, to przy oznaczaniu przy iptables, (narazie mam tylko ruch wychodzący, później popatrzę jak oznaczać ruch przychodzący). W przypadku cgroups ping mam 20, przy max obciążeniu łącza. Także jest spora różnica.

Łącze póki co podzieliłem na 3 części 450 250 i 250kbit, -- 450 jest na qbittorrenta, 250 na ff i minitube póki co, a na drugie 250 idzie cały pozostały ruch. Jeśli nie są wykorzystywane 1:3 i 1:4, wtedy qbittorrent (1:2) zjada całe łącze, przynajmniej upload. Dzięki takiemu rozwiązaniu dziennie będę mógł wysłać około 10GiB obrazów z linuxem i to nawet nie zauważając tego.  xD

Kod:

Interfaces                     | RX bps       pps     %| TX bps       pps     %
->lo                           |    573B        9      |    573B        9
  eth0                         |  98.28KiB    161      | 117.93KiB    202
    qdisc 1: (htb)             |      0         0      | 117.92KiB    202
      class 1:1 (htb)          |      0         0      | 117.92KiB    202   102%
        class 1:2 (htb)        |      0         0      | 117.81KiB    200   214%
        class 1:3 (htb)        |      0         0      |      0         0    0%
        class 1:4 (htb)        |      0         0      |    117B        1    0%
      cls :1 (cgroup)          |      0         0      |      0         0

I tak wygląda ping obecnie:

Kod:

$ ping wp.pl
PING wp.pl (212.77.100.101) 56(84) bytes of data.
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=1 ttl=247 time=23.5 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=2 ttl=247 time=21.9 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=3 ttl=247 time=22.5 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=4 ttl=247 time=22.1 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=5 ttl=247 time=32.5 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=6 ttl=247 time=21.2 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=7 ttl=247 time=21.2 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=8 ttl=247 time=22.5 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=9 ttl=247 time=23.2 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=10 ttl=247 time=22.7 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=11 ttl=247 time=24.5 ms
^C
--- wp.pl ping statistics ---
11 packets transmitted, 11 received, 0% packet loss, time 9997ms
rtt min/avg/max/mdev = 21.206/23.486/32.565/3.022 ms

Jest jakieś narzędzie co zapisuje ten podział łącza? Czy to trzeba za każdym razem przy starcie maszyny ładować ze skryptu?

To jest generalnie jedno z dwóch celów czyli podział łącza tak by w przypadku obciążenia przez qbittorrenta, pozostały ruch nie miał pingów 600, ale jeszcze jeszcze druga część czyli priorytet. Bo obecnie to jakbym wysyłał coś przez ff to ten zje swój przydział i qbittorrent swój (tak dla uproszczenia). Da radę nadać priorytet paśmie firefoxa tak by w przypadku gdy firefox chciał więcej zasobów, to by je sobie pożyczył z pasma qbittorrenta ograniczając tym dostępne zasoby qbittorrentowi?

Offline

 

#12  2014-01-29 17:38:36

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Qbittorrenta puść z innego pacjenta, złapiesz go wtedy modułem owner firewalla i gotowe.
Przy okazji chroot wyjdzie torrentom na zdrowie - bezpieczeństwo.

RTFM:

Kod:

iptables -m owner --help

W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#13  2014-01-29 18:14:46

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Czyli połączyć ten -m owner  z -j CLASSIFY i na to samo wyjdzie co w przypadku zaprzęgnięcia cgroups?

A co z pozostałymi pytaniami?

Offline

 

#14  2014-01-29 18:25:43

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

owner to dopasowanie, CLASSIFY to cel.
Ja bym jednak oznaczył pakiety dopasowane ownerem przez CONNMARK
a potem pakiety oznaczone connmarkiem pakował do kolejek w obu kierunkach.
CONNMARK nadaje znacznik dla połączenia, widać ten mark w tablicy conntrack, dlatego pozwala regulować pasmo dla połączenia w obie strony.

Tu masz przykład - jeszcze z czasów, jak istniało L7:
http://wampir.mroczna-zaloga.org/archives/21-o-ksztaltowaniu-ruchu.html

Ostatnio edytowany przez Jacekalex (2014-01-29 18:27:30)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#15  2014-01-29 20:52:30

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Przetestowałem ten -m owner z -j CLASSIFY,

Kod:

# iptables -t mangle -A POSTROUTING -o eth0 -m owner --uid-owner p2p -j CLASSIFY --set-class 1:2
# iptables -t mangle -A POSTROUTING -o eth0 -m owner --uid-owner morfik -j CLASSIFY --set-class 1:3

nawet rozdziela po userach:

Kod:

Every 1.0s: iptables -t mangle -nvL                                                                                                                           Wed Jan 29 20:50:08 2014

Chain PREROUTING (policy ACCEPT 61638 packets, 7766K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 61214 packets, 7697K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 74377 packets, 85M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 75003 packets, 85M bytes)
 pkts bytes target     prot opt in     out     source               destination
82338   97M CLASSIFY   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 1001 CLASSIFY set 1:2
 1951  192K CLASSIFY   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CLASSIFY set 1:3

Choć trochę ten qbittorrent na osobnym userze ssie. Niby można go bez problemu na nox podpiąć, tylko trzeba przegrać całą konfigurację, a graficznie to już nie wiem jak go odpalić jako user p2p, raczej nie ma żadnego sposobu by kliknąć w ikonkę i by się odpalił jako user p2p? xD

Zaraz sobie jeszcze rzucę okiem na ten CONNMARK

Offline

 

#16  2014-01-29 21:11:11

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Drugie konto musisz dodać do grupy video, i innych, które potrzebne.
Potem w sudoers ustawić odpalanie poleceń z uprawieniami usera (u ciebie p2p), i do kompletu skrypt:

Kod:

#!/bin/bash
sudo -u pies HOME=/home/pies qbittorrent $*

SOA#1 i nic nie ssie - odpalane skryptem.
Nie chciało mi się tylko rzeźbić, zeby ziarenka kopiował do /home/pies i automatycznie odpalał.
Ale sznurki w FF działają, jak je zapiąłem do skrypta.

User:

Kod:

pies:x:1004:1004::/home/pies:/bin/false

Grupy:

Kod:

groups pies
audio video pies

Ostatnio edytowany przez Jacekalex (2014-01-29 21:14:49)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#17  2014-01-29 22:30:41

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Ok, tym się zajmę później. Czytam teraz ten text co podesłałeś ale się trochę pogubiłem:

Obecnie mam takie ustawie tc:

Kod:

root:/# tc qdisc add dev eth0 parent root handle 1:0 htb default 4
root:/# tc class add dev eth0 parent 1:0 classid 1:1 htb rate 950kbit ceil 950kbit
root:/# tc class add dev eth0 parent 1:1 classid 1:2 htb rate 450kbit ceil 950kbit
root:/# tc class add dev eth0 parent 1:1 classid 1:3 htb rate 250kbit ceil 950kbit
root:/# tc class add dev eth0 parent 1:1 classid 1:4 htb rate 250kbit ceil 950kbit

I do tego wpisy w iptables.

Do markowania:

Kod:

root:~# iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner p2p -j CONNMARK --set-mark 2
root:~# iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner morfik -j CONNMARK --set-mark 3
root:~# iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner root -j CONNMARK --set-mark 3

i do przesyłania zmarkowanych do odpowiedniej klasy w tc

Kod:

root:~# iptables -t mangle -A POSTROUTING -o eth0 -m connmark --mark 2 -j CLASSIFY --set-class 1:2
root:~# iptables -t mangle -A POSTROUTING -o eth0 -m connmark --mark 3 -j CLASSIFY --set-class 1:3

Z tego co widzę to nawet działa

Kod:

Every 1.0s: iptables -t mangle -nvL                                                                                                                           Wed Jan 29 22:27:28 2014

Chain PREROUTING (policy ACCEPT 211K packets, 126M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 210K packets, 126M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 190K packets, 200M bytes)
 pkts bytes target     prot opt in     out     source               destination
 164K  224M CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 1001 CONNMARK set 0x2
39924 1749K CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3
  308  160K CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 0 CONNMARK set 0x3

Chain POSTROUTING (policy ACCEPT 191K packets, 200M bytes)
 pkts bytes target     prot opt in     out     source               destination
 148K  199M CLASSIFY   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            connmark match  0x2 CLASSIFY set 1:2
39963 1875K CLASSIFY   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3

ale to dalej jest tylko ruch wychodzący. Mam łącze 10/1mbit i jak to ogarnąć? Stworzyć mu kolejkę 10mbit zamiast 950kbit? On już w tej chwili łapie pakiety przychodzące do kolejek w tc?

Offline

 

#18  2014-01-29 23:07:01

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Musisz zrobić też klasyfikację dla przychodzących.
Chyba najlepiej zrobić sobie wirtualny interfejs ifb, i na nim kolejki przychodzące.

Np tak:

Kod:

#!/bin/sh

INTERFACE="eth0"
#UPLOAD - ifb0
tc qdisc del dev $INTERFACE root
ip link set ifb0 up
tc qdisc add dev $INTERFACE root handle 1: htb default 11
tc filter add dev $INTERFACE parent 1:0 protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:1 action mirred egress redirect dev ifb0

#DONWLOAD - ifb1
tc qdisc del dev $INTERFACE handle ffff: ingress
ip link set ifb1 up
tc qdisc add dev $INTERFACE handle ffff: ingress
tc filter add dev $INTERFACE parent ffff: protocol ip prio 10 u32 match ip src  0.0.0.0/0 flowid 1:1 action mirred egress redirect dev ifb1

Rzuć też okiem na to:
https://wiki.gentoo.org/wiki/Traffic_shaping
http://wampir.mroczna-zaloga.org/archives/77-ifb-zamiast-imq.html

Ostatnio edytowany przez Jacekalex (2014-01-29 23:19:52)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#19  2014-01-30 01:57:21

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Jak mam przekierować pakiety przychodzące do odpowiedniej klasy w iptables? Bo ten -j CLASSIFY nie działa na łańcuchach ruchu przychodzącego. xD

Generalnie to teraz wygląda tak:

Kod:

Interfaces                     | RX bps       pps     %| TX bps       pps     %
  lo                           |      2B        0      |      2B        0
->eth0                         |   1.14MiB    792      |  29.25KiB    480
    qdisc 1: (htb)             |      0         0      |  27.34KiB    480
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
    qdisc ffff: (ingress)      |      0         0      |   1.13MiB    792
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
  ifb0                         |  27.34KiB    480      |  27.34KiB    480
    qdisc 1: (htb)             |      0         0      |  27.34KiB    480
      class 1:1 (htb)          |      0         0      |  27.30KiB    480    2%
        class 1:2 (htb)        |      0         0      |      0         0    0%
        class 1:3 (htb)        |      0         0      |  27.30KiB    480    9%
        class 1:4 (htb)        |      0         0      |      0         0    0%
  ifb1                         |   1.13MiB    783      |   1.13MiB    783
    qdisc 1: (htb)             |      0         0      |   1.13MiB    783
      class 1:1 (htb)          |      0         0      |   1.13MiB    783   998%
        class 1:2 (htb)        |      0         0      |      0         0    0%
        class 1:3 (htb)        |      0         0      |      0         0    0%
        class 1:4 (htb)        |      0         0      |   1.13MiB    783   3793%

Czy to normlane, że ten ruch przychodzący ma takie wielkie %?
Te klasy w tych interfejsach powinny się różnić czy mogą być tak jak wyżej?

I to jeszcze:

Kod:

tc qdisc add dev $INTERFACE root handle 1: htb default 11

Do czego się odnosie ten default 11?

Ostatnio edytowany przez morfik (2014-01-30 02:00:54)

Offline

 

#20  2014-01-30 03:07:20

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Kod:

cat /etc/ppp/ip-up.d/60-ifb.sh 
#!/bin/sh

INTERFACE="$1"
#UPLOAD - ifb0
tc qdisc del dev $INTERFACE root
ip link set ifb0 up
tc qdisc add dev $INTERFACE root handle 1: htb default 11
tc filter add dev $INTERFACE parent 1:0 protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:1 action mirred egress redirect dev ifb0
tc qdisc add dev ifb0 root handle 1: sfq  2>/dev/null

#DONWLOAD - ifb1
tc qdisc del dev $INTERFACE handle ffff: ingress
ip link set ifb1 up
tc qdisc add dev $INTERFACE handle ffff: ingress
tc filter add dev $INTERFACE parent ffff: protocol ip prio 10 u32 match ip src  0.0.0.0/0 flowid 1:1 action mirred egress redirect dev ifb1
tc qdisc add dev ifb1 root handle 1: sfq

Na desktopie, automatycznie powstaje przy podnoszeniu demona pppd.
Nic niczego nie blokuje, podzialem pasma zajmuje się moduł/kolejka  sfq
I grzecznie idzie przez karty ifb.
Dowód rzeczowy:
http://postimg.org/image/68qdr2tyl/

Ruch przychodzący? łańcuch PREROUTING - tam nie wchodzi?
POSTROUTING na interfejsie ifb - nie wchodzi?

Tu masz na obrazku tor pakietów przez netfiltera:
http://jacekalex.sh.dug.net.pl/Iptables-packet-flow.png

Kod:

iptables -t mangle -A OUTPUT -o ifb0 -m owner --uid-owner pies -j CONNMARK --set-mark 2
iptables -t mangle -A POSTROUTING -o ifb0 -m connmark --mark 2 -j CLASSIFY --set-class 1:2

Takie reguły weszły czysto, zobacz, czy działają.
Oczywiście kolejki będą w takim przypadku na [b]ifb0[/b].

Kolejki zawsze działają na wyjściu, dlatego do kolejkowania wejścia  na desktopie musisz mieć wirtualny interfejs, na którym zrobisz kolejki, imq albo ifb.

Ostatnio edytowany przez Jacekalex (2014-01-30 03:23:43)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#21  2014-01-30 03:20:21

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

No ja mam obecnie coś takiego:

Kod:

ip link set ifb0 up
tc qdisc add dev eth0 parent root handle 1:0 htb default 4
tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:1 action mirred egress redirect dev ifb0

ip link set ifb1 up
tc qdisc add dev eth0 handle ffff: ingress
tc filter add dev eth0 parent ffff: protocol ip prio 10 u32 match ip src  0.0.0.0/0 flowid 1:1 action mirred egress redirect dev ifb1

tc qdisc add dev ifb1 root handle 1: htb default 4
tc class add dev ifb1 parent 1:0 classid 1:1 htb rate 9500kbit ceil 9500kbit
tc class add dev ifb1 parent 1:1 classid 1:2 htb rate 4500kbit ceil 9500kbit
tc class add dev ifb1 parent 1:1 classid 1:3 htb rate 2500kbit ceil 9500kbit
tc class add dev ifb1 parent 1:1 classid 1:4 htb rate 2500kbit ceil 9500kbit

tc qdisc add dev ifb0 root handle 1: htb default 4
tc class add dev ifb0 parent 1:0 classid 1:1 htb rate 950kbit ceil 950kbit
tc class add dev ifb0 parent 1:1 classid 1:2 htb rate 450kbit ceil 950kbit
tc class add dev ifb0 parent 1:1 classid 1:3 htb rate 250kbit ceil 950kbit
tc class add dev ifb0 parent 1:1 classid 1:4 htb rate 250kbit ceil 950kbit

I do tego mam w iptables:

Kod:

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner p2p -j CONNMARK --set-mark 2
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner morfik -j CONNMARK --set-mark 3
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner root -j CONNMARK --set-mark 3

iptables -t mangle -A POSTROUTING -o eth0 -m connmark --mark 2 -j CLASSIFY --set-class 1:2
iptables -t mangle -A POSTROUTING -o eth0 -m connmark --mark 3 -j CLASSIFY --set-class 1:3

No i jak patrze w bmon to ruch wychodzący jest klasyfikowany tak jak powinien ale przychodzący leci na 1:4 czyli domyślny. I pytanie jest jak to puścić na 1:2 i 1:3 ?

Offline

 

#22  2014-01-30 03:26:30

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

POSTROUTING możesz zrobić dla karty ifb0 albo ifb1, pisałem o tym wyżej, tylko za szybko odpowiedziałeś.
Przeczytaj jeszcze raz mój poprzedni post.

Może wystarczy:

Kod:

iptables -t mangle -A POSTROUTING -o ifb1 -m connmark --mark 2 -j CLASSIFY --set-class 1:2
iptables -t mangle -A POSTROUTING -o ifb1 -m connmark --mark 3 -j CLASSIFY --set-class 1:3

albo:

Kod:

iptables -t mangle -A OUTPUT  -o ifb1 -m connmark --mark 2 -j CLASSIFY --set-class 1:2
iptables -t mangle -A OUTPUT  -o ifb1 -m connmark --mark 3 -j CLASSIFY --set-class 1:3

Ostatnio edytowany przez Jacekalex (2014-01-30 03:45:24)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#23  2014-01-30 03:30:11

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Zrobiłem właśnie ale nic nie leci do tych reguł:

Kod:

Every 1.0s: iptables -t mangle -nvL                                                                                                                           Thu Jan 30 03:26:51 2014

Chain PREROUTING (policy ACCEPT 280 packets, 99904 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 280 packets, 99904 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 274 packets, 31187 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 CONNMARK   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            owner UID match 1001 CONNMARK set 0x2
    0     0 CONNMARK   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3
    0     0 CONNMARK   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            owner UID match 0 CONNMARK set 0x3
    0     0 CONNMARK   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            owner UID match 1001 CONNMARK set 0x2
    0     0 CONNMARK   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3
    0     0 CONNMARK   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            owner UID match 0 CONNMARK set 0x3

Chain POSTROUTING (policy ACCEPT 274 packets, 31187 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 CLASSIFY   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            connmark match  0x2 CLASSIFY set 1:2
    0     0 CLASSIFY   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3
    0     0 CLASSIFY   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            connmark match  0x2 CLASSIFY set 1:2
    0     0 CLASSIFY   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3

A tu reguły:

Kod:

# iptables -t mangle -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A OUTPUT -o ifb0 -m owner --uid-owner 1001 -j CONNMARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o ifb0 -m owner --uid-owner 1000 -j CONNMARK --set-xmark 0x3/0xffffffff
-A OUTPUT -o ifb0 -m owner --uid-owner 0 -j CONNMARK --set-xmark 0x3/0xffffffff
-A OUTPUT -o ifb1 -m owner --uid-owner 1001 -j CONNMARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o ifb1 -m owner --uid-owner 1000 -j CONNMARK --set-xmark 0x3/0xffffffff
-A OUTPUT -o ifb1 -m owner --uid-owner 0 -j CONNMARK --set-xmark 0x3/0xffffffff
-A POSTROUTING -o ifb0 -m connmark --mark 0x2 -j CLASSIFY --set-class 0001:0002
-A POSTROUTING -o ifb0 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003
-A POSTROUTING -o ifb1 -m connmark --mark 0x2 -j CLASSIFY --set-class 0001:0002
-A POSTROUTING -o ifb1 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003

Offline

 

#24  2014-01-30 03:48:17

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Spróbuj na ifb OUTPUT zamiast POSTROUTING.

U mnie weszły obie wersje czysto:

Kod:

iptables -t mangle -S | grep ifb1
-A OUTPUT -o ifb1 -m connmark --mark 0x2 -j CLASSIFY --set-class 0001:0002
-A OUTPUT -o ifb1 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003
-A POSTROUTING -o ifb1 -m connmark --mark 0x2 -j CLASSIFY --set-class 0001:0002
-A POSTROUTING -o ifb1 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003

Jak nie leci przy OUTPUT ani POSTROUTING, to ja bym jeszcze spróbował opcji save-mark i restore-mark CONNMARKA.
Sznurek:
http://www.lug.or.kr/docs/iptables-tutorial/chunkyhtml/x9125.htm

Ostatnio edytowany przez Jacekalex (2014-01-30 04:03:48)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#25  2014-01-30 04:04:27

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Czym ty to oznaczyłeś? Bo ja tam widzę tylko klasyfikację, a na podstawie czego? Poza tym, co rozumiesz pod pojęciem weszło? Zlicza bi pakiety? Idę spać, jutro może coś lepiej pójdzie. xD

Ostatnio edytowany przez morfik (2014-01-30 04:44:27)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.013 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00014 SET CHARSET latin2
0.00009 SET NAMES latin2
0.00131 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.39.144' WHERE u.id=1
0.00086 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.39.144', 1728278542)
0.00062 SELECT * FROM punbb_online WHERE logged<1728278242
0.00045 SELECT topic_id FROM punbb_posts WHERE id=253869
0.00008 SELECT id FROM punbb_posts WHERE topic_id=25070 ORDER BY posted
0.00037 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25070 AND t.moved_to IS NULL
0.00038 SELECT search_for, replace_with FROM punbb_censoring
0.00184 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25070 ORDER BY p.id LIMIT 0,25
0.00084 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25070
Total query time: 0.00698 s