QOS / Traffic Shaping mit der Fritzbox

shadow000

Mitglied
Mitglied seit
25 Apr 2005
Beiträge
653
Punkte für Reaktionen
0
Punkte
16
Das Trafficshaping auf der Box ist leider sehr rudimentär...
Aus diesem Grund will ich das Trafficshaping selbst anpassen.

Hier der betreffende Teil aus der ar7.cfg
shapers {
name = "globalshaper"; Der Shaper
OutFragmentWhenVoIP = 0; Was bedeutet dieser Wert?
shaperconnection {
enabled = yes; Shaping aktiviert
targets = ""; Keine Targets? Interfaces? Andere Klassen?...
name = "Fritz!Box";
limiters {
name = "default-out"; Klasse für den Upload
bps_limit {
limit_total = 100; 100%
limit_p0 = 0; Bedeutung von p0, ..., p4?
limit_p1 = 95; 95%
limit_p2 = 95;
limit_p3 = 0; 0 = Kein Limit?
}
pps_limit { Packets pro Sekunde, offensichtlich ungenutzt
limit_total = 0;
limit_p0 = 0;
limit_p1 = 0;
limit_p2 = 0;
limit_p3 = 0;
}
min_priority = 0; Prio 0-3
max_priority = 3;
grouping_by_source_ip = no; Bedeutung?
grouping_by_dest_ip = no; Bedeutung?
grouping_by_source_port = no; Bedeutung?
grouping_by_dest_port = no; Bedeutung?
dynamic_balancing = no; Bedeutung?
bps_child_limit { Unterklasse, für was? Wie definiert?
limit_total = 0;
limit_p0 = 0;
limit_p1 = 0;
limit_p2 = 0;
limit_p3 = 0;
}
pps_child_limit {
limit_total = 0;
limit_p0 = 0;
limit_p1 = 0;
limit_p2 = 0;
limit_p3 = 0;
}
shapeOutgoingOnIncomingCounters = no; Bedeutung?
} {
name = "default-in"; Klasse für Download
bps_limit { Keinerlei Shaping-Funktion
limit_total = 0;
limit_p0 = 0;
limit_p1 = 0;
limit_p2 = 0;
limit_p3 = 0;
}
pps_limit {
limit_total = 0;
limit_p0 = 0;
limit_p1 = 0;
limit_p2 = 0;
limit_p3 = 0;
}
min_priority = 0;
max_priority = 0;
grouping_by_source_ip = no;
grouping_by_dest_ip = no;
grouping_by_source_port = no;
grouping_by_dest_port = no;
dynamic_balancing = no;
bps_child_limit {
limit_total = 0;
limit_p0 = 0;
limit_p1 = 0;
limit_p2 = 0;
limit_p3 = 0;
}
pps_child_limit {
limit_total = 0;
limit_p0 = 0;
limit_p1 = 0;
limit_p2 = 0;
limit_p3 = 0;
}
shapeOutgoingOnIncomingCounters = no;
}
out_rules { Regeln für Upload
name = "download-tcp-ack";
filter = "tcp and len <= 64"; ACK
priority = 3; Original: 2
limiters = "default-out"; Zielklasse
} {
name = "dns";
filter = "udp port 53"; DNS
priority = 1;
limiters = "default-out";
} {
name = "fon-rtp"; VoIP
filter = "udp[8] = 0x80 or udp port 5060"; udp[8]: Packet Filter für VoIP?
priority = 3;
limiters = "default-out";
} {
name = "http-requests";
filter = "(tcp dst port 80 or dst port 8080 or dst port 3128) and (len <= 800)";
priority = 1;
limiters = "default-out";
} {
name = "pri-out"; Pings etc. werden Priorisiert
filter = "icmp";
priority = 1;
limiters = "default-out";
} {
name = "default";
filter = "";
priority = 0;
limiters = "default-out";
}
in_rules { Download: Keine Regeln
name = "default";
filter = "";
priority = 0;
limiters = "default-in";
}
demasquerade = no; Bedeutung?
}
}

So weit so gut...
Erst mal einiges von dem ich keine Ahnung habe, was aber Leuten mit Linuxerfahrung etwas sagen könnte.
Ich bin mir nicht sicher wie das mit den Unterklassen funktionieren soll, bin mir aber relativ sicher dass man ausser der vorhandenen Uploadklasse weitere anlegen kann.
Limits kann man scheinbar nur nach oben setzen, d.h. die Klassen beschränken. Die Klassen haben wohl auch keine eigenen Prioritäten.
Nicht schön das Ganze aber besser als nichts...

Ich würde jetzt gerne den Traffic noch feiner filtern, z.B. nach TOS bits.
Weiis jemand wo im TCP Header sich das Ding versteckt?
Ein Filter analog "udp[8] = 0x80" sollte dann machbar sein.
Hat jemand weitere Bastelideen, besonders was den fehlenden Minimalwert der Klassen angeht?
 
Newsflash:

Das mit TOS funktioniert, und um einiges einfacher als ich dachte!

{
name = "p2p";
filter = "ip[1] = 2";
priority = 0;
limiters = "default-out";
}


Da bei meinem P2P Upload das TOS Bit gesetzt ist kriege ich den Upload so relativ gut unter Kontrolle.
Schade nur dass ein Programm fast die gesamte Bendbreite abbekommt und das andere fast nichts...

Noch ne Frage zur Firewall:
reject udp any any range 137 139
Weiss jemand was die beiden any bedeuten?
 
dm41 schrieb:
reject udp any any range 137 139
Nur ein Tipp: lokale IP und remote IP?

Nicht nur...
Auch Ausdrücke wie "host 255.255.255.255", "149.1.1.0 255.255.255.0", "host 202.106.185.127" sind zugelassen...
Weiss jemand die genaue Semantik?
Und auf was ist der Port bezogen?
Wie sperre ich beispielsweise einzig und allein eingehende Ports?
Also z.B. Sperren aller Verbindungen auf den lokalen Port 80.
Wie wäre es dann mit Verbindungen die vom entfernten Port xy kommen?


P.S.:
Die default Shaper Klasse lässt sich nicht via "limit_p4 = ..." erweitern, das gefällt der Box gar nicht ;-)
 
Wie kann man nun jetzt die FBF dazu veranlassen den VOIP- Verkehr besser zu bevorzugen ?

Kann man z.B. einstellen, daß bei VOIP- Verkehr der normale Download nur noch eine Rate von 90kb/s bekommt, oder Upload nur noch 6kb/s ?
Kann man dem VOIP- Verkehr Mindest Up-/Download Raten geben ?
oder IP- Pakete vom VOIP priorisieren ( Type of Service- Feld ) ?
 
Für Leute die kein Filesharing betreiben ist die Box eigentlich schon recht gut konfiguriert.

Die Original-AVM Konfiguration teilt den Upload in 4 Klassen:
3 (100%) - VoIP
2 ( 95%) - TCP ACK
1 ( 95%) - DNS, ICMP, HTTP/PROXY Requests
0 (100%) - Rest...


VoIP wird priorisiert, nicht nach TOS sondern nach Port / Packets.
Ob man Unterklassen einrichten oder gar einen Mindestupload festlegen kann weiss ich nicht. Dazu kenn ich zu wenige der Variablen in der Config.
dynamic_balancing dürfte ein guter Ansatz für dein Vorhaben sein.
edit: "dynamic balancing" funktioniert nicht. Auch wenn "ShapeIncomingOnOutgoingCounters" aktiviert wird zeigen die Regeln keine Wirkung mehr :-(
Wäre toll wenn noch jemand durch ein bisschen herumprobieren herausfindet was die fehlenden Variablen bedeuten!

Naja, nun zum spaßigen Teil ;-)
Da das für Filesharing nicht unbedingt gut genug ist hab ich das Ganze etwas umgebaut...
3 (100%) - VoIP, TCP ACK
2 ( 90%) - DNS, ICMP, HTTP Requests, PORT 21, 22, 23, 25, 587, 5900
1 ( 95%) - Rest...
0 ( 50%) - TOS 0x02 > 1024


Meine Regeln sehen übrigens so aus:
-"ip[1] = 0x02 and len > 1024" (TOS 0x02 gesetzt in Azureus & eMule, >1024 um nur den Datenupload zu erwischen)
-"(tcp dst port 21 or dst port 22 or dst port 23 or dst port 25 or dst port 587 or src port 5900) and ( ip[1] != 0x02)"; (587: gmail smtp)

Im Moment läuft nur Azureus und der reale Upload gemessen von der Fritzbox pendelt zwischen 10k und 15k.
Wenn ich mir den Graphen von Azureus so anschaue sind aber entweder meine Regeln verbesserungswürdig oder aber der Shaper auf der Fritzbox ;-)
 

Anhänge

  • azu-shape40.jpg
    azu-shape40.jpg
    12.3 KB · Aufrufe: 779
Und hier der erste Testbericht:

Start von Azureus
Azureus steigert sich bei den richtigen Files auf ca. 200k und bleibt nach 10min relativ stabil.
Der Upload fällt von anfangs ca. 12k auf ca. 4k.

Start von eMule
Der Download von Azureus bricht auf ca. 100k ein.
Der Upload sinkt weiter auf ca. 2k.

Stabiler Zustand
Azureus hat wieder stabile 140-160k Download. Kein Download bei eMule, Quellen werden aber abgefragt.
Der Azureus Upload liegt bei ca. 1-3k. Kein Upload bei eMule!

Deaktivieren von TOS in eMule
Azureus belegt ca. 110k Downstream. eMule Downloads schlagen zu 85% fehl, dennoch bis zu 20k.
Azureus bei unter 2, teilweise unter 1k Upload, eMule zwischen 0.5 und 5k schwankend.

VoIP Telefonat ausgehend
Die Verbindungsqualität ist ok, keine Aussetzer oder andere Probleme.
Der Download im Azureus bricht auf 50k ein, im eMule verschwindet er schlagartig ins Nichts.
Der Azureus Upload bleibt bei 1-2k, im eMule bricht er wie der Doenload total zusammen.

Nach dem Hangup
Der Bittorrent Download geht so schnell wieder hoch wie er gekommen ist, der Upload bleibt weiterhin bei 2-3k.
Der Esel liegt 5 Minuten später immer noch am Boden, langsam zeigen sich wieder erste Transfers.

Fazit
Es scheint zumindest möglich zu sein, beide Filesharing Programme gleichzeitig zu betreiben, wenn auch nur mehr oder minder erfolgreich.
Wenn es um Unterbrechungen geht ist Bittorrent klar im Vorteil. Azureus scheint auch allgemein etwas durchsetzungsfähiger als eMule, wenn es um die Netzwerkresourcen geht.
Der tatsächliche Upload über die Box lag übrigens nachdem beide Programme gestartet waren ständig bei 10-15k, der Download zwischen 90 und 150k.
Surfen war die ganze Zeit über nebenbei prima möglich, auch wenn die DNS-Anfragen teilweise etwas lange gedauert haben.

P.S.:
Kann das mal jemand mit der Standard-Config von AVM probieren? ;-)
 
also ich kann auf jeden Fall schonmal sagen, dass bei 'alles Standard' und emule auf 20up/80down/50Connections gesetzt die fbf nicht wirklich 'formt'...

merkwürdigerweise tauchen Aussetzer erst nach ca. 1-2 Min Gespräch auf - dann aber teilweise recht übel... :?
 
bitte schick mir die feritge image datei

kannst du mir bitte deine fertige image datei schicken damit ich nur noch firmware update machen brauche hab nämlich nich so die ahnung von dem ganzen telnet kram und kann die ar7.cfg selbst nich ändern.
[email protected]

wäre wirklich nett
 
Hi.
Die ar7.cfg ist in der Firmware nicht gespeichert, die ist im Flash.
Da musst du leider selbst hand anlgegen...

MfG Oliver
 
wie sieht das aus mit dem tos bit also ich hab das jetzt soweit da alles eingetragen und müsste theoretisch funktionieren praktisch allerdings noch nicht ich kann immer noch nicht störungsfrei telen wenn mein emule an is...ja der tos bit wie setz ich den beim emule.
 
ach übrigens brauch ich doch gar keine telnet session mehr zu machen bei der neuen firmwaer die am ende 66 heisst da kann ich die einstellung aus dem fritzmenü in ner textdatei speichern die da bequem ändern und dann die einstellungen wieder auf der box übernehmen...sagt mir wenn ich mich irre
 
Du irrst Dich. Die Datei ist mit einer Checksumme versehen und wirft ein Fehlermeldung aus beim Importversuch.

Edit: Die Prüfung der Checksumme kann man aber ausschalten, indem man "NoChecks=yes" in die Datei schreibt.
Einfach über der Zeile "**** CFGFILE:ar7.cfg" einfügen.
 
...ja der tos bit wie setz ich den beim emule

Beim normalen eMule lässt sich das Bit leider nicht setzen!
Dazu müsstest du dir eine eigene Version kompilieren. Mehr Infos und Sources findest du hier:
http://groups-beta.google.com/group/spline.fli4l.filesharing/browse_frm/thread/99f4c8f985ff729e/5ce32f5771880501?tvc=1hl=en#5ce32f5771880501

Bis dahin kannst du dir mit folgendem Filter helfen:
filter = "tcp port 4662";
Oder wenn du einen anderen Port verwendest eben "tcp port 4662 or port YX"

Wenn du Glück hast kompilier ich dir am Wochenende schnell eine aktuelle Version ;-)
 
Hi !

Hat jemand mal versucht, andere Begriffe in eine Traffic Shaping Rule einzutragen als die die von avm benutzt werden? Ich fänds klasse wenn man was schreiben könnte ala

filter = "tcp src host {ip}"

Hat das schon jemand probiert? Evtl. mit einer anderen Syntax und kann von dem Ergebnis berichten?

Weiss jemand was passiert, wenn es 2 Regeln gibt die sich teilweise überlappen. Welche Regel wird dann genommen?

Sind diese strings evtl. irgendwem aus Linux Software bekannt? Könnte mir vorstellen dass da die Traffic Shaping Regeln ähnlich definiert werden und man davon Syntax besser schätzen könnte.

Hat schon jemand versucht rauszufinden wie die checksumme beim export file berechnet wird? Ist da ectl. ein script auf der fritzbox drauf dass die berechnet und runterladbar wäre um selber sein modifiziertes file mit einer zu versehen?
 
Die Syntax ist die vom Berkley Packet Filter / tcpdump / libpcap
Sagt zumindest der freundliche AVM Support ;-)
 
ja danke aber wie zur hölle ändere ich dann den kram in der ar7.cfg wenn ich die checksumme noch verändern muss, muss das ja gewiss mit ner software passieren weil ausdenken :) is bissl schwierig...

sagt mir bitte wie es funktioniert so rasst ich aus fahr nach montabaur zu 1und1 und schmeiss 2 handgranaten in den laden

danke
 
telnet image runterladen, per update installieren,
dann per telnet die ar7.cfg auf der box editieren.
 
Donfisch schrieb:
sagt mir bitte wie es funktioniert so rasst ich aus fahr nach montabaur zu 1und1 und schmeiss 2 handgranaten in den laden
Eigentlich sollte ich es Dir erst sagen, nachdem Du den Laden in die Luft gesprengt hast, aber ich bin ja nicht so. :)
Ich verweise mal wieder auf die Schritt-für-Schritt Anleitung von abergdolt:
http://www.ip-phone-forum.de/forum/viewtopic.php?p=143275&highlight=#143275

Dort geht es um die Änderung der ENUM-Funktion in der voip.cfg. Du mußt die Anleitung nur auf die ar7.cfg enstprechend anwenden (ist im selben Verzeichnis wie die voip.cfg)
 
;-) alles klar aber mal ne andere frage also ich hab das ja schonmal geändert mit telnet weiss halt nur nich ob das wirksam geworden is weils halt immernoch nicht funzt und wenn ich dann hingeh und in dem interface von der fritzbox einstellungen speicher und der das in der textdatei ablegt und ich öffne die dann und da sind die einstellungen immer noch so wie ichs eingetragen hab dann müsst das doch korrekt sein oder?
 
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.