Μου δίνεις ωραία πάσα για να μιλήσουμε για τα ενδότερα του QoS στο fritz και για κάποια ευρήματα απο προσωπική έρευνα.
Λίγο το thread που μιλάει για το ανεξήγητη πτώση του pppoe όταν υπάρχει bottleneck, λίγο το οτι το bufferbloat test της waveform θάβει τα fritz, άρχισα να ψάχνω και εγώ "πώς το κάνει" το QoS αλλά επίσημα δεν βρήκα κάτι σε KB/forums. Αποτελεί πράγματι blackbox.
Κατεβάζοντας όμως το support diagnostics αρχείο και ψάχνοντας για fq_codel πέφτουμε στο παρακάτω:
WAN QoS: yes
downstream scheduler: fq_codel
upstream scheduler: fq_codel
.. boring αλλά είναι μια πρώτη ένδειξη οτι χρησιμοποιεί fq_codel
Αυτό που είναι not-so-boring είναι το παρακάτω, το οποίο συναντάμε μερικές γραμμές πιο κάτω ...
Κώδικας:tc scripte qdisc add dev net_upstream0 handle 2:0 root stab linklayer ethernet overhead 4 tsize 100 mtu 1600 mpu 64 tbf latency 50ms burst 3200 mtu 1600 mpu 64 rate 1237500kbit qdisc add dev net_upstream0 handle 10:0 parent 2:0 llq minq 1 maxq 255 default 6 class add dev net_upstream0 parent 10:0 classid 10:1 llq prio 0 weight 0 class add dev net_upstream0 parent 10:0 classid 10:2 llq prio 10 weight 0 class add dev net_upstream0 parent 10:0 classid 10:3 llq prio 20 weight 0 class add dev net_upstream0 parent 10:0 classid 10:4 llq prio 30 weight 0 qdisc add dev net_upstream0 handle 104:0 parent 10:4 fq_codel class add dev net_upstream0 parent 10:0 classid 10:5 llq prio 100 weight 0 qdisc add dev net_upstream0 handle 105:0 parent 10:5 fq_codel class add dev net_upstream0 parent 10:0 classid 10:6 llq prio 150 weight 0 qdisc add dev net_upstream0 handle 106:0 parent 10:6 fq_codel class add dev net_upstream0 parent 10:0 classid 10:7 llq prio 200 weight 0 qdisc add dev net_upstream0 handle 107:0 parent 10:7 fq_codel
.. όλο το tc δέντρο για το interface net_upstream0 ! Ας το οπτικοποιήσουμε λίγο καλύτερα και ας το σχολιάσουμε ...
Τι κάνει ο ποιητής?Κώδικας:net_upstream0 `-- 2:0 (1) `-- 10:0 (2) `-- 10:1 `-- 10:2 `-- 10:3 `-- 10:4 | `-- 104:0 `-- 10:5 | `-- 105:0 `-- 10:6 | `-- 106:0 `-- 10:7 `-- 107:0
(1) δημιουργεί την root qdisc 2:0 και της κοτσάρει TBF (Token Bucket Filter) qdisc για να την "δέσει" στα 1.237.500.000 bit/s.
Θυμίζω στο GPON, το nominal link speed στο upload είναι στα 1.244.160.000 bit/s. Αφήνει "αέρα" δηλαδή και 6,66 Mbit/s πιθανόν για το underlying protocol overhead (headers, OMCI, GEM, κλπ)
Εδώ είναι και το πρόβλημα με το QoS στα fiber 55xx. Κανείς μας δεν έχει πακέτο που να του επιτρέπει 1,244Gbit/s στο upload. Καλά θα ήταν
100Mbit/s έχουμε στην καλύτερη (110Mbit/s με το δώρο των παρόχων για να είναι όμορφα τα speedtests) οπότε όλα τα μαθηματικά στο QoS των fritz fiber πάνε κατα διαόλου καθώς το φρένο του παρόχου έρχεται πολύ πιο γρήγορα απο του fritz. Το νούμερο αυτό το βλέπουν οι "απο κάτω" qdiscs και κλάσεις και το χρησιμοποιούν στους αλγόριθμους τους για να υπολογίσουν πότε ήρθε ή έρχεται οσονούπω η ώρα που πρέπει να βάλουν φρένα.
Στα xdsl η παραπάνω τιμή είναι περίπου όσο είναι το sync rate στο upload το οποίο το ανακαλύπτει όταν ολοκληρωθεί το sync.
Ή είναι η τιμή που βάζουμε στο κουτάκι που μας δίνει το UI όταν κάνουμε setup το internet account.
Στα fiber δεν το βγάζει αυτό το κουτάκι αν διαλέξεις το cosmote profile παρα μόνο αν δηλώσεις "Other" provider.
Και *πάλι* όμως θα δουμε να πάει να βάζει 1.237.500 kbit.
Τις δοκιμές αυτές και τα συμπεράσματα τα έκανα προ 6μηνου. Δεν ξέρω αν μέχρι τώρα το έχουν διορθώσει το bug αυτό, από τότε δεν το ξαναδοκίμασα.
(2) αμέσως μετά κοτσάρει LLQ qdisc και από κάτω δημιουργεί 7 κλάσεις. Default class για τα πακέτα για τα οποία δεν υπάρχει συγκεκριμένο tc filter rule που να το κατατάσσει σε άλλη κλάση, είναι η κλάση '6'.
Οι 7 κλάσεις αυτές έχουν το δικό τους prio που φαίνεται παραπάνω. Η κλάση 10:1 έχει την υπέρτατη προτεραιότητα. Τελευταία είναι η κλάση 10:7.
Ειδικά στις κλασεις 10:4 ώς 10:7 εφαρμόζει απο πάνω και την πολυπόθητη fq_codel qdisc: Fair Queuing (FQ) with Controlled Delay (CoDel)
Το support diagnostics περιέχει και το output της 'tc qdisc show' σε λεπτομέρεια. Προσοχή γιατί έχει δεκάδες virtual interface το fritz και είναι τεράστιο το output
Spoiler:
ενώ μεσα στο config βλέπουμε και τις ονομασίες των 7 κλάσεων αυτών που με τη σειρά ονομάζονται: ifacectl, hprio, hrealtime, realtime, important, default, low
Spoiler:
Θα με ρωτήσετε και πως γίνεται το classification των πακέτων. Πού βλέπουμε ποια πακέτα και με ποια κριτήρια πηγαίνουν στα ανωτέρω classes? Δυστηχώς δεν μας δίνει πλήρες output της 'tc filter show'.
Αλλά και να έδινε δεν νομίζω να βγάζαμε άκρη με αυτά που ξέρουμε και είναι γνωστά στην open-source κοινότητα.
To QoS σε αυτές τις πλατφόρμες -σε αντίθεση με τα οικιακά Linux μας που όλη η δουλεία γίνεται απο τον kernel και την CPU μας- είναι δεμένο και με το SoC/το hardware silicon που υπάρχει απο κάτω.
Υπάρχει συνήθως ένας δαίμονας που αναλαμβάνει να δέσει το OS και το control plane της πλατφόρμας (το Web UI, το config, όπως θέλετε πέστε το) που βλέπει το config και προγραμματίζει κατάλληλα τα ολοκληρωμένα κυκλώματα απο κάτω. avmnexusd αν δεν κάνω λάθος λέγεται στην περίπτωση της AVM/των fritz/του fritzOS.
Το classification εκτιμώ οτι το αναλαμβάνει το υποσύστημα "nqos" του Fritz OS.
στο support diagnostics διαβάζουμε:
Spoiler:
προφανώς και δεν μπορώ να το αποκωδικοποιήσω σε λεπτομέρεια καθώς αυτά είναι AVM stuff αλλά στέκομαι στο section results οπού σε μένα τουλάχιστον γίνεται αντιληπτό οτι δημιουργεί 10 κατηγορίες τις οποίες αντιστοιχεί στις προαναφερθέντες 7 κλάσεις (queues τα ονομάζει εδώ). Παρατηρούμε οτι το voip για παράδειγμα το στέλνει στην κατηγορία #8 η οποία αντιστοιχεί στο queue 2, ένα απο τα υψηλότερης προτεραιότητας queue. Επίσης βλέπουμε κάποιες ρυθμίσεις για ratelimit στο icmpv6 και στο dhcp.
επαναλαμβάνω, δεν δουλεύω στην AVM για να ξέρω σε λεπτομέρεια ή με σιγουριά τα παραπάνω οπότε μην τα πάρετε και τοις μετρητοίς. Είναι εκτιμήσεις δικές μου μπακάλικες
To πλέον ενδιαφέρον όμως που μου τράβηξε την προσοχή είναι το llq qdisc. Τι'ν-τούτο? δεν το είχα ξαναδεί ποτέ σε Linux. H cisco έχει LLQ στα προιόντα της. LLQ = Low-latency queuing.
Δεν υπάρχει πουθενά όμως open source implementation του llq qdisc! οσο και να το έψαξα δεν βρήκα κάτι. Υπάρχει το white-paper που το περιγράφει αλλά το LLQ είναι proprietary τεχνολογία/πατέντα και προφανώς έρχεται από το SDK του κατασκευαστή του SoC! (Lantiq). Στα fritz το llq support έρχεται μέσω του module sch_llq.ko:
<4>[ 24.453390][1][module-mem] module 'sch_llq' reserved size 20480 is to great for demand size 12288 - waste 8192 (module_alloc_waste=286720)
<6>[ 24.453420][1][module-mem] give 0x3000 bytes at 9e8e3000 to module 'sch_llq' (0x43d000 bytes left)
Συμπέρασμα: το AQM/QoS στα fritz υπάρχει και μάλιστα είναι μελετημένο και δένει με το SoC. Hardware acceleration και στο QoS δηλαδή και μάλιστα με LLQ. Το fq_codel είναι το default qdisc για την κατάταξη των πακέτων στην LLQ ουρά. Στα fritz fiber υπάρχουν κάποια bug όχι επι της ουσίας αλλά από το UI και θέλει λίγη δουλίτσα ακόμα.
Αυτά
Εμφάνιση 1-15 από 17
-
06-04-24, 00:57 Περί QoS/AQM στα fritz ... #1
Τελευταία επεξεργασία από το μέλος dpap76 : 06-04-24 στις 01:06.
-
06-04-24, 04:10 Απάντηση: Περί QoS/AQM στα fritz ... #2
Ωραία ανάλυση!
-
06-04-24, 08:59 Απάντηση: Περί QoS/AQM στα fritz ... #3
Επιβεβαιώνω και εγώ τα παραπάνω!
Μου είχε κάνει ένα private μάθημα/συζήτηση ο dpap πριν κάτι μήνες..
τότε που είχα μία κόντρα με κάποιους για το εάν έχουν τα Fritz κάποιο QoS ή όχι!
Όπως έλεγα τότε..
αν και ούτε εγώ έχω χρησιμοποιήσει στην πράξη τις ρυθμίσεις περί FRITZ!Box's prioritization
που έχει το Fritz ως QoS.. δεν βρήκα ούτε κάποιον άλλον να έχει δοκιμάσει αυτές τις ρυθμίσεις στην πράξη, για να μας πει συμπεράσματα.
https://en.avm.de/service/knowledge-...the-FRITZ-Box/
Επίσης μάλλον μπορούμε να συμπεράνουμε ότι κάποια Fritz!Box που έχουν ισχυρότερο SoC από άλλα,
μπορεί να έχουν καλύτερο έλεγχο σε αυτό το θέμα..
5590 vs 5530
και 4060..
Σωστές και οι παρατηρήσεις περί Data Throughput που είχα δοκιμάσει στο 4060 και είχα πάρει πολύ καλά αποτελέσματα στην VDSL.
Το έψαξε αυτό και ο dpap στο 5590..
https://www.adslgr.com/forum/threads...E%B5-VDSL-FTTH
Και είδα αντίστοιχες οδηγίες και στο Ιταλικό/Γερμανικό φόρουμ, που εκεί έχουν γραμμές FTTH ελεύθερες κοντά στα όρια του GPON και στο D/L και στο U/L.
- - - Updated - - -
* 4060 πάνω σε ONT..
You should set the real Download/Upload data of your line, as the FRITZ QOS is now set up does not work properly.
https://www.hwupgrade.it/forum/showt...7#post48437287Τελευταία επεξεργασία από το μέλος Iris07 : 06-04-24 στις 12:54.
My AVM Fritz : 7590 AX, 4060 AX, 6850 5G, Repeater 6000, Fon X6, Smart Gateway, Dect 500, Dect 440, Dect 200
Other : ZTE H267A, TP-Link TL-R605, Poynting XPOL-1-5G, Samsung S20 FE & S21 FE, Panasonic KX-TGF310, Cosmote TV Box, MI Box 2
New! : Qnap: QHora-301W - 10GbE
-
06-04-24, 11:44 Απάντηση: Περί QoS/AQM στα fritz ... #4
Παντως το ingress shaping =0 (αυτοματο) ( Fritzbox support), κανει καποια δουλιτσα. (και δεν κοβει και πολυ ταχυτητα, το δουλευω αρκετο καιρο).
Κριμα που δεν εχει κατι αντιστοιχο στο upload.
Τωρα ειμαι σε αναζητηση router με OpenWRT & SQM για να εχω αποτελεσματα σαν το παρακατω: https://forum.openwrt.org/t/howto-op...ry-pi-4/117491
-
06-04-24, 11:55 Απάντηση: Περί QoS/AQM στα fritz ... #5
Πολύ ενδιαφέρον και gratz για την ανάλυση,
και ευχαριστώ για τον κόπο που έκανες να συντάξεις απάντηση/ανάλυση.
Αυτού λεχθέντος, αν κρίνω απ'το export του δικού μου, δεν πρέπει να ισχύει σε όλα τα fritz.
Δεν έχω fritz πάνω στην γραμμή για να ασχοληθώ τώρα,
αλλά ένα παλαιότερο backup που κοίταξα απ'το δικό μου (7590 με την 7.57 labor plus):
Αυτά:
Δεν υπάρχουν καθόλου στο export.
Όπως δεν υπάρχει και το tc scripte.
---
Υπάρχουν οι classifiers,
αναφορά σε qdisc/tbf δεν υπάρχει,
οι ουρές υπάρχουν, αλλά επίσης "with_sfq = no;"
το nqos node υπάρχει,
δεν έχω το fritz εν λειτουργία να δώ τι βγάζει στο diagnostic export.
Αρχικά θα υπέθετα ότι χρησιμοποιεί codel σε κάποια cpe
(ίσως εκεί που έχει spare cpu, ή/και το επιτρέπει το sdk του odm?),
αλλά στο δικό μου (grx/lantiq-based) δεν βλέπω τέτοια εικόνα στο export.
Το ότι χρησιμοποιεί sqm όμως, έστω και αν είναι μόνο σε κάποια cpe, είναι πολύ θετικό.
Θα βάλω το fritz πάνω να κοιτάξω τι βγάζει στο diagnostic και θα επανέλθω.Disclaimer:
Any views or opinions expressed represent the official view of the voices in my head.
-
06-04-24, 12:03 Απάντηση: Περί QoS/AQM στα fritz ... #6
-
06-04-24, 13:01 Απάντηση: Περί QoS/AQM στα fritz ... #7
Oh My... !!
Έκανε κανένα λεπτό για να σώσει το 7590 ΑΧ το Advanced! (@ /#support)
2,5 Mb txt !!
Επιβεβαιώνω εδώ την ύπαρξη του ..
WAN QoS: yes
downstream scheduler: fq_codel
upstream scheduler: fq_codel
- - - Updated - - -
Το 4060 έκανε πιο γρήγορα, (αλλά δεν δουλεύει σαν modem)
2,2 Mb
Υπάρχει και εδώ.
- - - Updated - - -
Μάλλον μπορούμε να πούμε τώρα ότι και στο FTTH θα μπορεί να δουλεύει καλά, εφόσων η σύνδεση γίνεται από ONT πάνω στην WAN..
Γερμανοί και Ιταλοί σαφώς θα έχουν καλύτερη εμπειρία με αυτό..Τελευταία επεξεργασία από το μέλος Iris07 : 06-04-24 στις 15:35.
My AVM Fritz : 7590 AX, 4060 AX, 6850 5G, Repeater 6000, Fon X6, Smart Gateway, Dect 500, Dect 440, Dect 200
Other : ZTE H267A, TP-Link TL-R605, Poynting XPOL-1-5G, Samsung S20 FE & S21 FE, Panasonic KX-TGF310, Cosmote TV Box, MI Box 2
New! : Qnap: QHora-301W - 10GbE
-
06-04-24, 13:08 Απάντηση: Περί QoS/AQM στα fritz ... #8
-
06-04-24, 13:35 Απάντηση: Περί QoS/AQM στα fritz ... #9
Παίζει ρόλο και το Data Throughput στην WAN πάντως..
My AVM Fritz : 7590 AX, 4060 AX, 6850 5G, Repeater 6000, Fon X6, Smart Gateway, Dect 500, Dect 440, Dect 200
Other : ZTE H267A, TP-Link TL-R605, Poynting XPOL-1-5G, Samsung S20 FE & S21 FE, Panasonic KX-TGF310, Cosmote TV Box, MI Box 2
New! : Qnap: QHora-301W - 10GbE
-
06-04-24, 14:17 Απάντηση: Περί QoS/AQM στα fritz ... #10
Το έχω δηλωμένο 100/10 όπως είναι στην πραγματικότητα.
- - - Updated - - -
Από το support info (fritzbox 7590 + fritzos ver# 7.57-11387):
Κώδικας:WAN QoS: yes downstream scheduler: fq_codel upstream scheduler: fq_codel
Κώδικας:dev ppptty handle 2:0 root stab linklayer ethernet overhead 4 tsize 100 mtu 1600 mpu 64 tbf latency 50ms burst 1908 mtu 1600 mpu 64 rate 990000kbit qdisc add dev ppptty handle 10:0 parent 2:0 llq minq 1 maxq 255 default 6 class add dev ppptty parent 10:0 classid 10:1 llq prio 0 weight 0 class add dev ppptty parent 10:0 classid 10:2 llq prio 10 weight 0 class add dev ppptty parent 10:0 classid 10:3 llq prio 20 weight 0 class add dev ppptty parent 10:0 classid 10:4 llq prio 30 weight 0 qdisc add dev ppptty handle 104:0 parent 10:4 fq_codel class add dev ppptty parent 10:0 classid 10:5 llq prio 100 weight 0 qdisc add dev ppptty handle 105:0 parent 10:5 fq_codel class add dev ppptty parent 10:0 classid 10:6 llq prio 150 weight 0 qdisc add dev ppptty handle 106:0 parent 10:6 fq_codel class add dev ppptty parent 10:0 classid 10:7 llq prio 200 weight 0 qdisc add dev ppptty handle 107:0 parent 10:7 fq_codel
Και το nqos ίδιο με το δικό σου παραπάνω.
Θέλει μελέτη το export για να βγάλει κανείς άκρη.
Πάντως, υποθέτωντας ότι τρέχει codel, και στο σωστό iface,
αν δεν είναι δηλωμένο σωστά το data rate, είτε το τρέχει, είτε όχι, το ίδιο κάνει.Disclaimer:
Any views or opinions expressed represent the official view of the voices in my head.
-
06-04-24, 15:12 Απάντηση: Περί QoS/AQM στα fritz ... #11
no έχει μόνο στις πρώτες τρείς (1, 2, 3)
στις 4, 5, 6, 7 βάζει = yes.
το λεκτικό with_sfq μάλλον έχει μείνει από παλιά, η SFQ qdisc ήταν/είναι ο παππούς της fq_codel
προφανώς κάποια στιγμή αλλάξανε από SFQ (Stochastic Fairness Queueing) σε fq_codel αλλά το λεκτικό έμεινε.
οι fq_codel & sfq είναι classless qdiscs -> η δουλειά τους είναι κυρίως να κάνουν delay & drop με κάποιον αλγόριθμο/κριτήρια
η llq qdisc είναι classfull και είναι packet scheduler και μέσω των κλάσεων γίνεται το prioritization των πακέτων
τέλος, η tbf qdisc κάνει bandwidth control/ratelimit
- - - Updated - - -
ακριβώς, εδώ είναι και το bug και σε σένα βλέπω έχει βάλει το rate του ethernet interface (1Gbit/s) μείον κάτιτις για άερα.
λογικό να βγάζει +200ms, δεν μπαίνει σε λειτουργία τo QoS γιατι νομίζει οτι έχει ακόμα χώρο.
μου φαίνεται μεγάλη χοντράδα να μην το έχουν δεί στις lab/beta.
μήπως απλά θέλει reboot? το μονο που δεν έκανα στις δοκιμές είναι reboot γιατί δεν είχα την πολυτέλεια να κάνω επανεκκινήσεις χωρίς γκρίνια απο τους χρήστες
-
06-04-24, 15:28 Απάντηση: Περί QoS/AQM στα fritz ... #12
Οπότε πιθανόν για να δουλέψει κάπως καλά είναι να έχεις γραμμή 1 Gbps, και να ρίξεις την WAN από το Fritz πάνω σε ONT.. (?)
Πιθανόν το καλύτερο (μιας και η 1 Gbps εδώ Ελλάδα πάει ~1040 Mbps) να ρίξεις ένα Fritz με 2,5 WAN πάνω σε ΟΝΤ με 2,5 LAN..
όπως κάνουν κάποιοι στην Ιταλία..
- - - Updated - - -
btw στο #support (7590 ΑΧ) πρέπει να έχετε και αυτή την ρύθμιση αλλά ενώ μου ρυθμίζει σχετικά καλά το D/L το U/L όχι..
Default είναι off.
Η αλλαγή στην ρύθμιση εμφανίζεται και στη αρχική σελίδα του Fritz μετά..
Σε DSL ίσως να παίζει ρόλο και η καταχώρηση.. LAN QoS: no (Default)Τελευταία επεξεργασία από το μέλος Iris07 : 06-04-24 στις 15:39.
My AVM Fritz : 7590 AX, 4060 AX, 6850 5G, Repeater 6000, Fon X6, Smart Gateway, Dect 500, Dect 440, Dect 200
Other : ZTE H267A, TP-Link TL-R605, Poynting XPOL-1-5G, Samsung S20 FE & S21 FE, Panasonic KX-TGF310, Cosmote TV Box, MI Box 2
New! : Qnap: QHora-301W - 10GbE
-
06-04-24, 15:35 Απάντηση: Περί QoS/AQM στα fritz ... #13
Έκανα 3-4 reboot σήμερα που το έβαλα πάνω στο ont και πέρασα την τελευταία lab+
Θα δοκιμάσω κάποια στιγμή (μάλλον όταν βγεί η 7.80)
να του κάνω ένα reset και να το στήσω απ'την αρχή.
Αν υποθέσουμε ότι το έχουν διορθώσει στο default config
αλλά δεν κάνουν migrate το config στα updates, μπορεί και να παίζει.Disclaimer:
Any views or opinions expressed represent the official view of the voices in my head.
-
06-04-24, 16:04 Απάντηση: Περί QoS/AQM στα fritz ... #14
Προσπαθώ να βρω πως μπορεί να γίνει το LAN QoS: no.. yes..
Πήγα στο Prioritization και έφτιαξα κάποιους γενικούς κανόνες, αλλά δεν άλλαξε..
Δεν έκανα Reboot..
Πάντως το Support Information από 2,5 Mb πήγε στα 2,8!My AVM Fritz : 7590 AX, 4060 AX, 6850 5G, Repeater 6000, Fon X6, Smart Gateway, Dect 500, Dect 440, Dect 200
Other : ZTE H267A, TP-Link TL-R605, Poynting XPOL-1-5G, Samsung S20 FE & S21 FE, Panasonic KX-TGF310, Cosmote TV Box, MI Box 2
New! : Qnap: QHora-301W - 10GbE
-
06-04-24, 19:24 Απάντηση: Περί QoS/AQM στα fritz ... #15
Λοιπόν, δοκίμασα να ορίσω τις δικές μου ρυθμίσεις
(@ internet->acc. information->internet connection->internet service provider->other internet service provider)
Εδώ^, αν επιλέξεις "Connection to an external modem or router"
σε αφήνει να ορίσεις τις δικές σου ρυθμίσεις ppp/vlan/etc,
σε αφήνει να ορίσεις και downstream/upstream throughput (100/10 Mbps στην περίπτωση μου).
Θα περίμενε κάποιος ότι διορθώθηκε...
μπουρμπούτσαλα:
Κώδικας:qdisc change dev ppptty handle 2:0 root stab linklayer ethernet overhead 4 tsize 100 mtu 1600 mpu 64 tbf latency 50ms burst 1908 mtu 1600 mpu 64 rate 990000kbit
Το επόμενο βήμα να δοκιμάσω την lab που υποτίθεται βγαίνει ακριβώς για να λύσει τα θέματα με το fiber.Disclaimer:
Any views or opinions expressed represent the official view of the voices in my head.
Bookmarks