Kezdőlap › Fórumok › Vegyes gondok › Sávszélesség korlátozása
- This topic has 5 hozzászólás, 3 résztvevő, and was last updated 17 years, 11 months telt el by
lada2105.
-
SzerzőBejegyzés
-
2007-07-11-14:57 #2122027
Mivel mindenki ilyen aktívan tudott segíteni (persze ne vegye senki se sértésnek), ezért folytattam a próbálkozásokat.
Az alábbi megoldással nagyjából elértem amit akartam:
Code:#!/bin/bashDEV=eth0
start () {
ip link set dev $DEV qlen 30
#ip link set dev $DEV mtu 1000
echo -n „.”
tc qdisc add dev $DEV root handle 1: htb default 21tc class add dev $DEV parent 1: classid 1:1 htb rate 6000kbps
echo -n „.”
tc class add dev $DEV parent 1:1 classid 1:20 htb rate 1500kbit ceil 4200kbit pr
io 0
tc class add dev $DEV parent 1:1 classid 1:30 htb rate 1200kbit ceil 1500kbit pr
io 1
tc class add dev $DEV parent 1:1 classid 1:40 htb rate 30kbit ceil 60kbit prio 2
echo -n „.”
tc qdisc add dev $DEV parent 1:20 handle 21: sfq perturb 10
tc qdisc add dev $DEV parent 1:30 handle 31: sfq perturb 10 limit 12
tc qdisc add dev $DEV parent 1:40 handle 41: sfq perturb 10 limit 4
echo -n „.”
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:20
tc filter add dev $DEV parent 1:0 prio 1 protocol ip handle 31 fw flowid 1:30
tc filter add dev $DEV parent 1:0 prio 2 protocol ip handle 41 fw flowid 1:40
echo -n „.”
#iptables -t mangle -A OUTPUT -p tcp -d 10.0.0.0/8 -j MARK –set-mark 20
#iptables -t mangle -A INPUT -p tcp -s ! 10.0.0.0/8 -j MARK –set-mark 30
iptables -t mangle -A OUTPUT -p tcp -o eth0 -d ! 10.1.10.0/16 –sport 22 -j MARK
–set-mark 31
iptables -t mangle -A OUTPUT -p tcp -o eth0 -d ! 10.1.10.0/16 -j MARK –set-mark
41
#iptables -t mangle -A INPUT -p tcp -i eth0 -s ! 10.0.0.0/8 -j LOG –log-level i
nfo
iptables -t mangle -A INPUT -p tcp -i eth0 -s ! 10.1.10.0/16 -j MARK –set-mark
31
echo „”
}stop() {
echo -n „.”
tc qdisc del dev $DEV root
echo -n „.”
iptables -t mangle -F
}case „$1” in
start)
echo „Starting”
start
echo „done”
;;
stop)
echo „Stopping”
stop
echo „done”
;;
*)
echo „usage: start | stop”
;;
esacexit 0
Tehát összefoglalva semmiféle burst/cburst nem szükséges, hanem (helyette) az sfq szürön átmenö vagy átadandó csomagok számát limitáltam, ha jól értelmeztem a leírást.
Csak azért írtam le a megoldást, hogy hátha segítek azoknak, akik hasonló korlátozásban gondolkodnak.
Persze ez a megoldás, mint már említettem biztosan finomítható még, de egyelöre megtetszi nekem. Legalább addig sem fogy el a sávszélességem 🙂2007-07-11-15:16 #2122028Egyébként szerintem felesleges korlátoznod, mert itthon álltalában 3 gép megy egyszerre, amiből egyiket tesóm, másikat apum, harmadikat meg én használom. Nekem állandóan megy a BT vagy a DC++ és a többi gépen sem lassul be a net.
De te tudod, de szerintem felesleges a korlátozás…2007-07-11-15:34 #2122029Ha felesleges lenne akkor ne gürcölnék vele ennyit. 😛
Nem akartam leírni, de akkor leírom nálunk hogy van.
Van 1 gép ami routerkedik meg firewallkodik. (ez most érdektelen, de be van löve és már megy több éve és ehhez lusta vagyok hozzányúlni)
Van 1 másik gép ami DHCP, Samba, Nyomtató, és letöltöszerver.
Ez utóbbin mennek a bittorrent letöltéseim, ami sokszor 5-10 eltöltendö dolog is.
Mindegyik jön kb 30-40k-val (vagy többel) jó esetben, rosszabban, csak 5-6al felfelé.A problémám az, hogy hiába a fent említett értékeket írja ki a progi, a többi 4-5-6 gép nem tud netezni, mert alig van szabad sávszél.
Ha lecsekkolom pl a datanet sebességméröjével akkor 50-100k szabad sávszélt mutat.
Így most a korlátozás bevezetése után még ha egy iso-t is húzok avval a géppel, akkor is marad kb 2Mbit szabad sávszél.Annó nekem is jó volt korlát nélkül, söt a napok 95%-án nem is kellene korlátozni. Viszont ha nem vagyok itthon vagy hirtelen minden le/feltöltés begyorsul, akkor aztán aki itthon van és szeretne netezni akkor az finoman szólva megszívta…
Eddig ilyen csak 2-3 alkalommal volt, de elég volt arra, hogy belássam, tenni kell ellene valamit.ui: amíg nekem is a desktop gépen ment a letöltés (dc, torrent, edonkey stb…), addig én is könnyebben be tudtam állítani a korlátot a grafikusan üzemelö progikban.
De így (lehet csak túl régi a konzolos kliens) már nem olyan egyértelmü/egyszerü, hiába állítom is be a maximális le/feltöltési sebességet minden egyes letöltésnél a progiban…2007-07-11-15:41 #2122030De a szolgáltatód is korlátoz!!! 😀
Érdemes ezt: elolvasni: http://www.sg.hu/cikkek/51278Egyébként a routergépen nem lehet, hogy egyszerűbb lenne még is a korlátozás?
Igaz nekem itthon nem router gép üzemel, hanem egy sima router, azzal meg tudnám oldani…ha akarnám :P:D
2007-07-11-19:28 #2122031Tudom illetve gondoltam hogy korlátoz, hisz gondolom ö sem akarja megosztani a több száz megabites netét velünk 😛
Lehet egyszerübb lenne, de nem akartam a többi gépnek „bekavarni”.
Így jobb, saját magát korlátozza.
Így ha elb…tam valamit, akkor csak ez a gép lassul be, a többi nem.
Egyébként meg akkor is ennyit szenvedtem volna míg legalább eddig eljutok, csakhát akkor a többi gép is látja ennek a kárát 😛2009-12-04-20:01 #1886695Sziasztok!
A következö a problémám, amivel már több hete szenvedek.
Adott egy „szerver” gépem, ami otthon file, nyomtató, és letöltö szerverként üzemel.
Szeretném megoldani, hogy a letöltések/feltöltések – föleg ha többet indítok pl bittorrent-el -, ne „egyék meg” a teljes NET-es sávszélességemet. (4Mbit) Ráadásul mindezt úgy, hogy ez a gép korlátozza önmagát. Nem akarok a router géphez nyúlni ilyen dolog miatt.Létrehoztam egy tc alapú korlátozást, ami részben müködik is, de nem minden esetben úgy, ahogy azt szeretném.
A következöket szeretném elérni:
belsö hálózat SAMBA vagy bármilyen elérés -> teljes sávszélesség (bár ez ugye nem netes úgyhogy mindegy…)
Maximális NET-röl letöltés -> kb 2Mbit/sec (a 4Mbit fele)
Maximális NET-re feltöltés -> kb 10k/sec (a 128kbit bizonyos része)A kódom:
Code:#!/bin/bashDEV=eth0
start () {
#ip link set dev $DEV qlen 30
#ip link set dev $DEV mtu 1000
echo -n „.”
tc qdisc add dev $DEV root handle 1: htb default 21tc class add dev $DEV parent 1: classid 1:1 htb rate 6000kbps
echo -n „.”
#belso halozat
tc class add dev $DEV parent 1:1 classid 1:20 htb rate 4000kbit ceil 6000kbit pr
io 0
#net letoltes
tc class add dev $DEV parent 1:1 classid 1:30 htb rate 1500kbit ceil 2000kbit prio
1 #burst 15k cburst 70k
#net feltoltes
tc class add dev $DEV parent 1:1 classid 1:40 htb rate 20kbit ceil 50kbit prio 2
echo -n „.”
tc qdisc add dev $DEV parent 1:20 handle 21: sfq perturb 10
tc qdisc add dev $DEV parent 1:30 handle 31: sfq perturb 10
tc qdisc add dev $DEV parent 1:40 handle 41: sfq perturb 10
echo -n „.”
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:20
tc filter add dev $DEV parent 1:0 prio 1 protocol ip handle 31 fw flowid 1:30
tc filter add dev $DEV parent 1:0 prio 2 protocol ip handle 41 fw flowid 1:40
echo -n „.”
#iptables -t mangle -A OUTPUT -p tcp -d 10.0.0.0/8 -j MARK –set-mark 20
#iptables -t mangle -A INPUT -p tcp -s ! 10.0.0.0/8 -j MARK –set-mark 30
iptables -t mangle -A OUTPUT -p tcp -o eth0 -d ! 10.1.10.0/24 -j MARK –set-mark 4
1
#iptables -t mangle -A INPUT -p tcp -i eth0 -s ! 10.1.10.0/24 -j LOG –log-level i
nfo
iptables -t mangle -A INPUT -p tcp -i eth0 -s ! 10.1.10.0/24 -j MARK –set-mark 31
echo „”
}stop() {
echo -n „.”
tc qdisc del dev $DEV root
echo -n „.”
iptables -t mangle -F
}case „$1” in
start)
echo „Starting”
start
echo „done”
;;
stop)
echo „Stopping”
stop
echo „done”
;;
*)A kódot sok-sok leírásból ollóztam össze és próbáltam a logikáját kitalálva elöállítani.
A problémám konkrétan a következö:
LANirányból le/feltöltés tökéletes.
NET-irányból letöltés: töredéke a beállítottnak
pl: 250 helyett kb 15/30k. Ha beállítom a kikommentezett burst-oket, akkor valamivel feljebb megy, de az is olyan 70/80k-ig csak.
Hiába állítom a burst-oket 100k fölé, inkább csak lassulni látszik…
Egy iso fájl letöltésével próbálgatom a korlátozást, ami korlát nélkül olyan 400k körül simán jön.Lehet (söt biztos) valamilyen szinten elszámolgatom magam a kapkodásban meg estefelé a fáradtságtól is, de jó lenne mostmár ha menne rendesen.
Hol rontottam el?
Hogyan állítsam be a burst/cburst-öt, hogy menjen minden rendesen?
A bittorrent (bittornado) konzolosan 4-5 jobb esetben, jó „szerver” esetén 50-60k-kat ír ki, mint letöltési sebesség ha nincs korlát, de ha van akkor gyakorlatilag 0-t vagy alig 2-t. Ez miért van?Szóval úgy általánosságban szeretnék egy kis segítséget kérni ez ügyben, miután már az összes szabilinuxos meg google-s leírások garmadáját olvastam el.
Elöre is köszönöm.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz