CBQ scheduler in Freetz 1.1.3 mit iproute

xentric

Neuer User
Mitglied seit
19 Jun 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
hey!

ich probiere Traffic-Shaping bei meinem ADSL anschluss auf einer 7270v3 Fritzbox.

Der Freetz Buildvorgang war wirklich gut erklärt, und einfach. Nach feststellung, das kein cbq und u32 vorhanden ist um per 'tc' meine Bandbreite auf verschiedene IP adressen zu verteilen habe ich die passenden Kernelmodule neukompiliert. Jedoch findet mein tc die scheduler nicht, nur die standardmäßig installierten.

Meine Frage, woran liegt das? ist das mitgelieferte tc hardcoded, wo sucht es die module, oder wieso geht das nicht? Ich meine, der kernel läd sie, aber das ist alles :(
ich habe lange zeit gar nichts mehr mit QoS gemacht. Oder sind die kernel module nur fürs iptables brauchbar, und braucht iproute eigene?

Bin für jeden Tipp wies weitergehen kann dankbar!

Output:
Code:
/var/mod/root # lsmod 
Module                  Size  Used by    Tainted: P  
cls_u32                 7450  0 
sch_cbq                16898  0 
rtc_sysfs               2704  0 
rtc_proc                3847  0 
rtc_dev                 5493  1 
sch_sfq                 5619  4 
sch_llq                 9102  1 
sch_tbf                 5664  1 
userman                33702  2 
wlan_scan_ap            8481  1 
wlan_acl                4090  1 
wlan_wep                6114  0 
wlan_tkip              12521  2 
wlan_ccmp               8524  2 
wlan_xauth              1182  0 
ath_pci               152567  0 
ath_rate_atheros       61891  1 ath_pci
wlan                  229944  9 wlan_scan_ap,wlan_acl,wlan_wep,wlan_tkip,wlan_ccmp,wlan_xauth,ath_pci,ath_rate_atheros
ath_dfs                39236  2 ath_pci,wlan
ath_hal               237540  4 ath_pci,ath_rate_atheros,ath_dfs
avm_ath_extensions     41518  4 ath_pci,ath_rate_atheros,wlan,ath_hal
kdsldmod              873597  7 userman
musb_hdrc              36999  0 
usbcore               126440  2 musb_hdrc
dect_io                21126  2 
avm_dect              390881  1 dect_io
capi_codec            142935  0 
isdn_fbox_fon5        761750  0 
pcmlink               262925  3 avm_dect,capi_codec,isdn_fbox_fon5
rtc_avm                 6573  2 pcmlink
rtc_core                7083  4 rtc_sysfs,rtc_proc,rtc_dev,rtc_avm
rtc_lib                 2712  3 rtc_sysfs,rtc_avm,rtc_core
dsl_ur8               173781  1 
jffs2                 115345  1 
Piglet_noemif          36534  0 
led_modul_Fritz_Box_7270plus    63229  7 ath_hal


/var/mod/root # tc qdisc add dev adsl root handle 1: cbq avpkt 1000 bandwidth 6m
bit
Unknown qdisc "cbq", hence option "avpkt" is unparsable


/var/mod/root # tc qdisc show dev adsl
qdisc tbf 2: rate 633600bit burst 3199b lat 10.3ms 
qdisc llq 10: parent 2: minq 1 maxq 255 default 6
qdisc sfq 104: parent 10:4 limit 32p quantum 100b perturb 10sec 
qdisc sfq 105: parent 10:5 limit 32p quantum 100b perturb 10sec 
qdisc sfq 106: parent 10:6 limit 32p quantum 100b perturb 10sec 
qdisc sfq 107: parent 10:7 limit 32p quantum 100b perturb 10sec 


/var/mod/root #
 
Es kann schon sein, dass AVM das tc "kastriert" hat. Haben wir das in Freetz nicht auch als Paket?

MfG Oliver
 
hey!

Danke für die antwort, und das ist auch die richtige ;)

Wusste gar nicht, dass das tc von AVM ist. ich hab mir jetzt einfach die iproute2 src gezogen und die kompiliert, jetzt gehts genau wies soll =). Jeder client auf ungefähr n mbit begrenzt,..

Code:
 $ wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.35-rc3.tar.bz2
--2010-06-20 01:17:06--  http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.35-rc3.tar.bz2
Resolving www.kernel.org... 199.6.1.164, 130.239.17.4
Connecting to www.kernel.org|199.6.1.164|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 69527672 (66M) [application/x-bzip2]
Saving to: “linux-2.6.35-rc3.tar.bz2”

 0% [                                                 ] 585,768     98.7K/s  eta 11m 27s

ich hab im make menuconfig nichts von iproute2 gefunden, deshalb dachte ich, das ist einfach irgednwie n standard package, das immer mitkommt, ..
Ich hatte nur n ticket vom Bugtracker gefunden.

Jedenfalls, mit den richtigen iproute2 läufs, ..

Code:
/var/flash # tc class show dev wifi0 
class cbq 1: root rate 6000Kbit (bounded,isolated) prio no-transmit
class cbq 1:1 parent 1: rate 768000bit (bounded,isolated) prio 5

/var/flash # tc qdisc show dev wifi0 
qdisc cbq 1: rate 6000Kbit (bounded,isolated) prio no-transmit

danke!
 
Kannst du bitte eine kleine Anleitung schreiben? Welche Freetz Version hast du benutzt? Was hast du jetzt genau gemacht? Und wofür ist das ganze gut?
Hört sich für mich interessant an.

Mfg Oliver
 
Gib mir 1-2 Tage, dann paste ich hier den patch auf die aktuelle src, und schreib was ich gemacht hab.

Ich hab das aktuelle freetz 1.1.3, und jetzt eben um 2 scheduler die ich wollte erweitert, und iproute2 geadded, ..


Muss noch mit den regeln bisschen rumbauen, aber eigentlich will ich pro computer einfach die bandbreite begrenzen, .. nachdem ich ernüchternd festgestellt hab, dass alles was die fritzbox kann diese komischen prioritäten sind.

Mehr zu cbq:
http://en.wikipedia.org/wiki/Class-based_queueing

Oder 2 Beispiele:
http://www.wlug.org.nz/TrafficShaping
http://lartc.org/howto/lartc.ratelimit.single.html


ich werd dran denken, ..
 
Es wäre nett, würdest du dies gegen den trunk noch einmal gegenchecken, und vllt. einen Patch dazu zu veröffentlichen, das spart das Portieren von uns, um das evtl. in den trunk einzuchecken.
 
@olistudent
Also, hier ist n gutes Bild, was CBQ ist: Aber das weißt du ja sicher, .. scheinst ja mit das freetz hier aufrecht zu halten.

http://ace-host.stuart.id.au/russell/files/tc/doc/sch_cbq.txt

@olistudent, Silent-Tears
Patch ist dran. Musste nur beim iproute die loadlibs weglassen, weil er probleme mit der 'libresolv' hatte. Sonst lief das eigentlich ohne Anstand durch. Wobei ich gerade beim portieren auf den aktuellen trunk gesehen hab, dass ihr die in dem external zweig drin habt (scheint bei.1.1.3 noch nicht zu sein) Weiß nicht, ob ihr das jetzt gebrauchen könnt, und was extenal überhaupt ist (Zu groß deshalb auf external storgae?)? Habe seit 3 Tagen freetz Kontakt ;)

Der 1.1.3 patch geht, hab ich ausprobiert.
Dann hab einfach das ziemlich 1:1 auf den trunk übertragen, zumal ich da auch nur die gleichen 4 standard Scheduler von AVM gefunden hab, und in der Config.in auch kein iproute2 zum auswählen war. Deshalb dachte ich: Okay, machen wirs einfach wie bei der 1.1.3.
Der Patch im trunk läuft auch durch, ..
 

Anhänge

  • freetz-1.1.3.patch.gz
    1.5 KB · Aufrufe: 33
  • freetz-trunk21062010.patch.gz
    1.5 KB · Aufrufe: 35
Läuft auch im neuesten Trunk freetz-devel-6419M durch.
Abgesehen davon, das im Trunk "iproute2" fehlte.
Hab dann einfach die config angepasst und Dateien aus Stable genommen.
Jetzt würde mich nur noch interessieren wie man den Upload begrenzen kann...
 
Man, ich krieg doch echt ne email, weil hier wer auf meinen 6 Monate alten Thread geantwortet hat :p.


Einfach mal nach 'cbq limit download upload' suchen, da findest genügend Beispiele.
Es gibt auch fertige ScriptSammlungen, wo du nur die Upload/Download-Rate und die IP anpassen musst, ..

Beispiele:

zu emfehlen:
http://sourceforge.net/projects/cbqinit/

oder:
http://sp9wun.republika.pl/linux/shaperd_cbq_en_old.html
http://www.wlug.org.nz/TrafficShaping

Wenn du schon den patch eingebaut hast, und Freetz compilieren konntest, kriegst du schon hin.
Aber gut zu wissen, dass es auch bei der aktuellen Version noch geht, ..
 
Man, ich krieg doch echt ne email, weil hier wer auf meinen 6 Monate alten Thread geantwortet hat :p.
jo, weil ich erst jetzt, für einige Zeit einen Wlan Klienten (DAU) ertragen muß, der leider ein Fan von diversen Movie-Streaming Seiten ist.:roll:
Naja, mal sehen wie weit er mit 400 K/Bit kommt.
Ich wollte es ja nicht zu auffällig gestalten, ansonsten hätte ich ihm nur 200 Kbit zugeteilt..:cool:

EDIT: Habe mir die Links mal angesehen, scheint recht kompliziert zu sein, bzw überdimensioniert.
Ich habe jetzt auch, wie in deinem Beispiel "wifi0" als Device benutzt, allerdings wird dann wohl auch die Geschwindigkeit im internen WLan begrenzt. Das sollte eigentlich nicht sein.
Welches Device der 7270 muß ich benutzen, wenn es NUR um den Internet-Traffic gehen soll?
Folgendes steht zur Auswahl:
Code:
root@fritz:/var/mod/root# ifconfig
adsl      
ath0      
cpmac0    
dsl       
eth0      
guest     
lan       
lan:0     
lo        
wifi0
EDIT2: Habs rausgefunden, es ist "ath0"
 
Zuletzt bearbeitet:
7390

Hi,
da dieser Thread ja schon uralt ist und die Patches nicht mehr funktionieren, habe ich im Anhang einen Patch inkl. iproute2 v3.0.6

Habe das ganze mit meiner 7390 getestet und es funktioniert bei mir zumindest im Download. Vielleicht kanns jemand gebrauchen und findet noch heraus wie das im Upload funktioniert...

Für iproute2 musste ich einiges in der Source patchen, damit er überhaupt kompiliert. z.B. gibt es in der Freetz Umgebung kein "unshare".

Ich hoffe es nimmt sich jemand dem an :)

[Edit1]
Achso, das Skript was ich zum download "throttlen" nutze, ist das von "xentric" erwähnte:
http://www.wlug.org.nz/TrafficShaping

Als device nutze ich "cpmac0".


[Edit2]
Und jetzt ist im Anhang auch noch die entsprechende Config für den Kernel + Box von mir zu finden.
 

Anhänge

  • trafficcontrol_off.png
    trafficcontrol_off.png
    17 KB · Aufrufe: 31
  • trafficcontrol_on.png
    trafficcontrol_on.png
    17.7 KB · Aufrufe: 26
  • 0001-added-iproute2.zip
    3.3 KB · Aufrufe: 42
  • kernel_und_menuconfig.zip
    18.1 KB · Aufrufe: 28
Zuletzt bearbeitet:
Sorry wenn ich nach so langer Zeit den Thread nochmal hochhole, aber ich hab ebenfalls Interesse an iproute bzw. tc. Nur leider läuft der Compiliervorgang nicht mehr durch, nachdem ich den Patch benutzt und iproute2 der Kernel-Config hinzugefügt habe.

Die Fehlermeldung:
Code:
o  -lresolv ../lib/libnetlink.a ../lib/libutil.a -ldl -o rtmon
/home/freetz/freetz-trunk/toolchain/build/mips_gcc-4.8.3_uClibc-0.9.33.2-nptl/mips-linux-uclibc/bin/../lib/gcc/mips-linux-uclibc/4.8.3/../../../../mips-linux-uclibc/bin/ld: cannot find -lresolv
collect2: error: ld returned 1 exit status
make[2]: *** [rtmon] Fehler 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
/home/freetz/freetz-trunk/toolchain/build/mips_gcc-4.8.3_uClibc-0.9.33.2-nptl/mips-linux-uclibc/bin/../lib/gcc/mips-linux-uclibc/4.8.3/../../../../mips-linux-uclibc/bin/ld: cannot find -lresolv
collect2: error: ld returned 1 exit status
make[2]: *** [ip] Fehler 1
make[2]: Verlasse Verzeichnis '/home/freetz/freetz-trunk/source/target-mips_gcc-4.8.3_uClibc-0.9.33.2-nptl/iproute2-3.6.0/ip'
make[1]: *** [all] Fehler 2
make[1]: Verlasse Verzeichnis '/home/freetz/freetz-trunk/source/target-mips_gcc-4.8.3_uClibc-0.9.33.2-nptl/iproute2-3.6.0'
make: *** [source/target-mips_gcc-4.8.3_uClibc-0.9.33.2-nptl/iproute2-3.6.0/tc/tc] Fehler 2

PS: Ich habe eine FB7360v2.
PPS: Nach dem Patchen habe ich zwar ein Verzeichnis b/make/iproute2/, aber kein b/make/Config.in. Ist das soweit richtig?
 
Hat das inzwischen jemand hinbekommen im trunk?
stehe vor dem gleichen Problem

Anscheinend ist es inzwischen im trunk eingepflegt. Iproute2 sollte out of the box funktionieren. Manche kernel Module scheinen allerdings zu fehlen (z.B. advanced routing für ip rule).
 
Zuletzt bearbeitet:
Ich habe mir mal die Patches geschnappt und versucht sie auf die aktuelle freetz Version zu heben. Noch ist nichts getestet aber alles kompiliert schonmal. Falls jemand eine Box zum rumspielen hat kann er gerne schonmal testen: https://github.com/hvoigt/freetz/tree/hv/tc-rebase
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,696
Beiträge
2,216,700
Mitglieder
371,316
Neuestes Mitglied
realbluethunder
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.