fli4l QoS mit Entertain und IP Telefonie
Einleitung
Aufgrund der "Zwangsmigration" auf einen IP Anschluss habe ich mich mit dem opt_qos auseinandergesetzt.
Ja Entertain lief auch ohne QoS ganz gut, aber wenn man den Upload auszeizt und Fotos hochlädt, ruckelt das Bild.
Ein Howto zu Entertain und fli4l gibt es ja bereits.
Die Grundkonfiguration habe ich in den fli4l NGs gefunden und für mich angepasst.
Vorbereitung
Bevor du dich mit qos auseinandersetzt, solltest du folgendes beherrschen:
- Dein fli4l sollte mit Entertain laufen.
- Es sollte ein Wartungsfenster geben, in dem du in Ruhe den fli4l neu betanken kannst und keine "Kunden" sich beschweren, dass im Fernseher nichts zu sehen ist.
Theorie der Funktionsweise
Durch opt_qos wird das Queueing-Verhalten im fli4l optimiert, wodurch wir insbesondere den Upstream unserer Internetverbindung beeinflussen können.
Kurzgesagt, was priorisieren wir:
- TCP-ACK Pakete
- TOSMD markierte Pakete (nicht notwendig, da kein direkter Anwendungsfall für Entertain. Schadet aber nicht; Markiert überhaupt noch eine Anwendung nach altem TOS Standard?)
- DNS Pakete
- SIP und RTP für die IP Telefonie
- IGMP und RTP für Entertain
Das habe ich im OPT_QOS zusätzlich schon erweitert: (FFL-732):
- HTTP Requests vom LAN die kleiner 800 Byte sind. (abgeguckt aus der Fritzbox QoS Config)
- Filterung auf IGMP Messages
Was wäre noch sinnvoll, kann aber (noch) nicht realisiert werden (Feature Requests an opt_qos?):
- Filtering aufgrund der DSCP Markierungen der Pakete. (z.B. CS2, CS3 bei Entertain)
- Setzen von DSCP Markierungen von ausgehenden Paketen, die einem Filter entsprechen. (/sbin/iptables -A OUTPUT -t mangle -p udp -m udp --sport 4569 -j DSCP --set-dscp-class ef)
Konfiguration
Ich gehe von einem VDSL50 Anschluss aus.
OPT_QOS='yes' QOS_INTERNET_DEV_N='1' QOS_INTERNET_DEV_1='ppp0' QOS_INTERNET_BAND_DOWN='51392Kibit/s' QOS_INTERNET_BAND_UP='10048Kibit/s' QOS_INTERNET_DEFAULT_DOWN='4' QOS_INTERNET_DEFAULT_UP='2' QOS_CLASS_N='4' QOS_CLASS_1_PARENT='0' # hoch priorisierter Upstream QOS_CLASS_1_MINBANDWIDTH='2000Kibit/s' QOS_CLASS_1_MAXBANDWIDTH='2000Kibit/s' QOS_CLASS_1_DIRECTION='up' QOS_CLASS_1_PRIO='1' QOS_CLASS_2_PARENT='0' # niedrig priorisierter Upstream QOS_CLASS_2_MINBANDWIDTH='2000Kibit/s' QOS_CLASS_2_MAXBANDWIDTH='7500Kibit/s' # Simple Regel: max 75-80% der Gesamtbandbreite Upstream QOS_CLASS_2_DIRECTION='up' QOS_CLASS_2_PRIO='2' QOS_CLASS_3_PARENT='0' # hoch priorisierter Downstream QOS_CLASS_3_MINBANDWIDTH='20000Kibit/s' QOS_CLASS_3_MAXBANDWIDTH='25000Kibit/s' QOS_CLASS_3_DIRECTION='down' QOS_CLASS_3_PRIO='1' QOS_CLASS_4_PARENT='0' # niedrig priorisierter Downstream QOS_CLASS_4_MINBANDWIDTH='5000Kibit/s' QOS_CLASS_4_MAXBANDWIDTH='40000Kibit/s' QOS_CLASS_4_DIRECTION='down' QOS_CLASS_4_PRIO='2' QOS_FILTER_N='6' QOS_FILTER_1_CLASS='1' # ACK-Pakete sind wichtig QOS_FILTER_1_IP_INTERN='' QOS_FILTER_1_IP_EXTERN='' QOS_FILTER_1_PORT='' QOS_FILTER_1_PORT_TYPE='' QOS_FILTER_1_OPTION='ACK' QOS_FILTER_2_CLASS='1' # TOS Minumum Delay QOS_FILTER_2_IP_INTERN='' QOS_FILTER_2_IP_EXTERN='' QOS_FILTER_2_PORT='' QOS_FILTER_2_PORT_TYPE='' QOS_FILTER_2_OPTION='TOSMD' QOS_FILTER_3_CLASS='1 3' # VOIP-Pakete sind wichtig QOS_FILTER_3_IP_INTERN='192.168.1.1' # IP Fritzbox/Asterisk/SIP-Telefon QOS_FILTER_3_IP_EXTERN='' QOS_FILTER_3_PORT='5060 10000-10060' QOS_FILTER_3_PORT_TYPE='client server' QOS_FILTER_3_OPTION='UDP' QOS_FILTER_4_CLASS='1 3' # VOIP-Pakete sind wichtig QOS_FILTER_4_IP_INTERN='192.168.1.1' # IP Fritzbox/Asterisk/SIP-Telefon QOS_FILTER_4_IP_EXTERN='' QOS_FILTER_4_PORT='5060 10000-10060' QOS_FILTER_4_PORT_TYPE='client server' QOS_FILTER_4_OPTION='TCP' QOS_FILTER_5_CLASS='1 3' # Priorisiere IGMP und co! QOS_FILTER_5_IP_INTERN='192.168.6.0/24' # IP Range der Media-receiver QOS_FILTER_5_IP_EXTERN='' QOS_FILTER_5_PORT='' QOS_FILTER_5_PORT_TYPE='' QOS_FILTER_5_OPTION='UDP' QOS_FILTER_6_CLASS='1 3'# Priorisiere DNS QOS_FILTER_6_IP_INTERN='' QOS_FILTER_6_IP_EXTERN='' QOS_FILTER_6_PORT='53' QOS_FILTER_6_PORT_TYPE='client server' QOS_FILTER_6_OPTION='UDP'
Wer noch Tipps, Ideen oder Erfahrungen hat, kann sich gerne melden. Die Werte sind jetz auch nicht bis aufs letzte Bit errechnet, aber ein guter Ansatz.