Dlaczego ten skrypt NW nie działa
W naszej aplikacji istnieją trzy klasy ruchu, a każdy typ ruchu obejmuje trzy porty. Chcemy ograniczyć ruch przez numer portu przez TC, więc zrobiłem prosty skrypt TC do przetestowania, jednak skrypt nie działa tak, jak się spodziewałem.
Poniżej znajdują się polecenia powłoki, których używam do instalowania TC. Oczekiwany wynik jest taki, że prędkość pobierania SecureCRT i Apache (SecureCRT używa 22 portów, podczas gdy Apache używa 80) będzie ograniczona do 100KB/s, ale rzeczywisty wynik, jaki otrzymaliśmy, jest taki: prędkość pobierania pozostaje taka sama - około 5 MB/s ...
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 cbq bandwidth 1Mbit avpkt 1000 cell 8 tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 1Mbit rate 1Mbit
weight 100kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded tc class add dev eth0 parent 1:0 classid 1:2 cbq bandwidth 1Mbit rate 1Mbit
weight 100kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded tc class add dev eth0 parent 1:0 classid 1:3 cbq bandwidth 1Mbit rate 1Mbit
weight 100kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
tc class add dev eth0 parent 1:1 classid 1:1001 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:1001 handle 1001: sfq tc class add dev eth0 parent 1:1 classid 1:1002 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:1002 handle 1002: sfq tc class add dev eth0 parent 1:1 classid 1:1003 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:1003 handle 1003: sfq
tc class add dev eth0 parent 1:2 classid 1:2001 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:2001 handle 2001: sfq tc class add dev eth0 parent 1:2 classid 1:2002 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:2002 handle 2002: sfq tc class add dev eth0 parent 1:2 classid 1:2003 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:2003 handle 2003: sfq
tc class add dev eth0 parent 1:3 classid 1:3001 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:3001 handle 3001: sfq tc class add dev eth0 parent 1:3 classid 1:3002 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:3002 handle 3002: sfq tc class add dev eth0 parent 1:3 classid 1:3003 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:3003 handle 3003: sfq tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport
80 0xffff flowid 1:3001
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport
22 0xffff flowid 1:3002
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
ruch „przychodzący” lub do
https://serverfault.com/q/537983/182140
jak to się często nazywa. Ten diagram został zapożyczony z
Dokument LARTC
http://www.lartc.org/lartc.html
:
Linux ma prostą kolejkę Ingres, ale jej możliwości są bardzo ograniczone, ponieważ nie ma kolejki wejściowej. Ale możesz to obejść za pomocą
(InterMediate Queuing device), które „symuluje” kolejkowanie przy wejściu.
Co więcej, możesz kształtować/opóźniać ruch przychodzący, gdy twój serwer działa jako router (z włączonym przekazywaniem IP). Jeśli serwer ma dwa interfejsy sieciowe - na przykład eth0 dla dostępu do Internetu i eth1 dla dostępu do sieci lokalnej - jeśli klient pobierze coś z sieci lokalnej, to ruch ten jest wchodzący/wychodzący na interfejsie eth0 i wychodzi/na interfejsie eth1 ... Tak więc, jeśli zdefiniujesz swoją politykę QoS na eth1, zadziała.
Na koniec polecam uaktualnienie do
qdisc z
jako dokładniejsze (używa
lub Token Bucket Filter, który nie zależy od właściwości interfejsu).