Belliash wrote:Bawiles sie kiedys przez dluzszy czas HTB?
Bawię się z mniejszymi lub większymi przerwami od około 10 lat. Zabawy nie ograniczam do domowego routera, ale do małych sieci ISP (ponad 1 tys. użytkowników pewnie w tym będzie).
1) Z moich osobistych obserwacji moge powiedziec, ze jak nie ustawisz priorytetow, nawet takich samych, to nie zawsze efekt jest taki jak bysmy sie spodziewali. Wyglada to tak, jakby HTB domyslnie nie przyznawal takich samych priorytetow, mimo ze powinien.
Spróbujmy:
Code: Select all
# tc class add dev eth0 parent 1:0 classid 1:1 htb rate 10Mbit
# tc class add dev eth0 parent 1: classid 1:10 htb rate 5Mbit
# tc class add dev eth0 parent 1: classid 1:11 htb rate 5Mbit prio 0
I teraz sprawdźmy:
Code: Select all
# tc -s class show dev eth0
class htb 1:11 root prio 0 rate 5000Kbit ceil 5000Kbit burst 1600b cburst 1600b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 40000 ctokens: 40000
class htb 1:10 root prio 0 rate 5000Kbit ceil 5000Kbit burst 1600b cburst 1600b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 40000 ctokens: 40000
[...]
Widzisz jakąś różnicę? Bo ja nie. Obie klasy mają ten sam priorytet (0).
Bo jak wytlumaczysz fakt, ze 1 host pobiera dane z predkoscia 200KB/s a inny z predkoscia 30KB/s? Natomiast po dodaniu priorytetow oba pobieraja dane z porownywalna predkoscia (czyt. zmniejszaja sie dysproporcje).
Przypadek? Placebo? Plamy na słońcu? Ruchy tektoniczne?
Spedzilem nad tym troche czasu i cos jest na rzeczy, a wszystko rozbija sie wlasnie o te priorytety.
Fascynujące...
2) Jak pisalem w jednej ze swoich wczesniejszych wypowiedzi, skrypt pochodzi z mojego domowego rutera. Skopiowalem go i wkleilem, a autor watku zrobil ponownie to samo, calkowicie bezmyslnie, wprowadzajac jakies dziwne negacje, w ogole nie dostosowane do wlasnych realiow (a raczej zostawiajac te ode mnie). Bylo to na tyle bezmyslne, ze skopiowal wszystko, wraz z pustymi znakami na koncach linii, ktore jak widac byly powodem problemow. Malo tego, polaczyl fragment mojego skryptu i fragment tego co skopiowal prawdopodobnie z jakiejs strony.
I to jest powód żeby się na nim wyżywać? Jeśli tak, to można powiedzieć, że trafiła kosa na kamień...
3) Owszem. masz racje co do jednostek i wielkosci. Autor jednak nie pisze nic o internecie, ani o jego braku.
Co ma internet lub jego brak do jednostek?
Mniejsza jednak z tym. Jak slusznie zauwazyles sieciowki sa 10/100/1000Mbps; nie 1024 tylko rowny 1000. Jednak w odniesieniu do uslugi powszechnego dostepu do internetu, zaklada sie ze 1M = 1024K. Masz 1mega i pobierasz dane z predkoscia 128KB/s. Reszte mysle sobie przeliczysz.
a dlaczego akurat 128 a nie 125? 1Mbit to zawsze 1000kbit. Tak nawet tc sobie przelicza domyślnie (popatrz na mój listing - jest 5000kbit zamiast 5120, a ja przecież wpisałem kolejki o wielkości 5Mbit).
4) Proponuje abys poczytal o wykorzystaniu iptables przy konfiguracji htb. Najwyrazniej masz jakies braki.
To że można wykorzystać netfilter w warstwie 3 i wyższych do kształtowania ruchu, wiem i stosuję zapewne znacznie dłużej niż ty. I nie odsyłaj mnie proszę do lektury, bo po twoich kompromitujących tekstach widać, że przydałoby ci się poczytać to wszystko jeszcze raz, tym razem ze zrozumieniem...
Czy do podliczenia trzeciej potęgi liczby dwa też będziesz sięgał do klastra obliczeniowego?
Używanie iptables w tak banalnej konfiguracji tylko ją komplikuje. To co załatwia jeden filtr u32, ty na siłę próbujesz zrobić filtrem (w teorii wolniej działającym niż u32) + regułą netfiltra. Pytanie - po co sobie komplikować życie? Sikać też można pod wiatr. Efekt będzie ten sam jak sikanie z wiatrem - pusty pęcherz. Ale sikając pod wiatr obsikasz sobie przy okazji spodnie...
Pomijam juz kwestie wygody, a autor raczej nie chcialby sie bawic z U32, ktory jest bardziej skomplikowany.
Porównując
Code: Select all
# tc filter add dev eth0 parent 1: protocol ip u32 match ip src 192.168.0.1 flowid 1:10
z
Code: Select all
# iptables -t mangle -A POSTROUTING -s 192.168.0.1 -j MARK --set-mark 1
# tc filter add dev eth0 parent 1: protocol ip handle 1 fw flowid 1:11
rzeczywiście, zwykły filtr u32 jest o wiele bardziej skomplikowany.
Trzeba wiedziec i rozumiec co sie robi, czego raczej nie moge powiedziec o lukpio3.
Ja tego powiedzieć nie mogę o tobie. Fajne uczucie zostać publicznie zjechanym?
A tak pozatym, zastanow sie dlaczego wszedzie wykorzystywany jest do tego celu iptables (np. w *wrt) i na prawde pomijam kwestie wygody.
Wszystko zależy od stopnia komplikacji rozwiązania QoS. Ja też w jednym z moich rozwiązań korzystałem z markowania pakietów, modułów ipp2p, layer7 i innych cudów. Tylko po co to robić w tak prostym zadaniu, które wygląda na jakiś projekt? (choć to dziwne, bo sierpień mamy). Cud że nie KAZAŁEŚ koledze użyć filtrów haszujących
DD-WRT korzysta z layer7, więc tu musi być stosowany filtr fw, bo kryteriami wyboru pakietów w u32 są adresy IP i numery portów (a więc okolice warstwy 3).
Ponadto napisales:
Code: Select all
użycie ceil=rate nie jest błędem. Jeśli podasz samo rate, to tc z góry zakłada, że ceil ma mieć identyczną wartość (i sobie uzupełni). Wytykanie tego komuś jako błąd i czepianie się świadczy wyłącznie o zupełnym braku zrozumienia tematu...
A wiesz do czego odnioslem swoje slowa? Dokladnie do tej linii (podpowiem, to 3 linia w calym skrypcie):
Code: Select all
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit ceil 90mbit
Jaki jest jej cel? Zalozyc glowna klase na glownej kolejce z maksymalna przepustowoscia jaka mamy do dyspozycji. W praktyce podawac tutaj jednoczesnie rate i ceil jest kompletna pozbawiona sensu bzdura.
Dokładnie tak samą jak pisać parent 1:0 zamiast parent 1:
Obie rzeczy znaczą dokładnie to samo. Więc twój skrypt jest tak samo bzdurny...
Nie rozumiesz, że czepiasz się KOSMETYKI, jakby to były śmiertelne grzechy? Nie wiesz do czego dopier... to się czepiasz, że zając znowu bez czapki chodzi...
Wiec Twoje uwagi maja sie jak tu jak kij w oko. Poza tym nie chodzi chyba tylko o to by dzialalo na jakichs prowizorkach. Porownam to do innej sytuacji. Bedziesz chcial zlaczyc 2 przewody to je ze soba skrecisz czy zastosujesz tzw. "kostke"?
Użyję twojej metody: wezmę największą spawarkę, jaką świat stworzył i zespawam je. Tłumacząc, żebyś zrozumiał: użyję narzędzi nieadekwatnych do wagi problemu.
aha - i przypierdzielę się do twórcy tych przewodów, ze izolacja ma niepotrzebny nadruk i brzydki kolor...