VoIP Einstellungen · 4 min read · Jan 22, 2026

QoS und Traffic Shaping für VoIP-Nutzer mit iproute2 und Asterisk

QoS und Traffic Shaping für VoIP-Nutzer mit iproute2 und Asterisk

Die Qualität meiner VoIP-Telefonate litt, wann immer ich etwas herunter- oder hochlud. Das war ärgerlich, besonders für die, die mich anriefen (ich hörte sie besser, als sie mich hörten). Also habe ich mit Iproute2 und anderen Anleitungen experimentiert, insbesondere in Bezug auf VoIP-Verkehr, aber ich konnte nichts finden, das gut funktionierte. Nach einigem Herumspielen habe ich Einstellungen gefunden, die für mich richtig waren: konsistente VoIP-Qualität, unabhängig von Aktivitäten im Netzwerk.

Eine Anmerkung zu meinem VoIP-System: Ich benutze Asterisk auf einem alten Laptop (IBM T20), und mein VoIP-Anbieter ist das hervorragende Unlimitel in Kanada. Da ich meine eigene Asterisk-Box hoste, kann ich sie so konfigurieren, wie ich möchte. Ich habe auch ein IAX-Hardphone gekauft, das sich in meinem Intranet befindet.

Einrichtung

Ich gehe davon aus, dass Sie bereits Ihre Linux-Firewall eingerichtet haben. VoIP-Pakete durchqueren Ihre Firewall und Ihr NAT ist bereits eingerichtet und funktioniert. Wir werden Ihre Firewall mit diesem Setup nicht berühren. Alles, was Sie tun müssen, ist, die richtigen qdisc, Klassen und Filter zu erstellen, um Ihre VoIP-Pakete zu priorisieren. Der Befehl tc von Iproute2 ist dafür zuständig.

Nehmen wir an, Ihr Netzwerk sieht folgendermaßen aus:

Internet <------> Kabelmodem <-------> Linux-Firewall <-----> Intranet <-----> VoIP-Telefon

Da ich Asterisk mit IAX verwende, ist der relevante Port der Port 4569. Wenn Sie SIP verwenden, passen Sie den Port in den folgenden Zeilen an.

Einige Hintergrundinformationen

IP-Pakete haben einen Bereich, in dem Sie QoS (Quality of Service) vordefinieren können. Während Ihr ISP sie wahrscheinlich ignoriert, können Sie sie in Ihrem lokalen Netzwerk für ein gewisses Traffic Shaping nutzen. Die 4 QoS-Bits sind:

0x02: Monetäre Kosten minimieren

0x04: Zuverlässigkeit maximieren

0x08: Durchsatz maximieren

0x10: Verzögerung minimieren

Offiziell dürfen Sie höchstens eines dieser Bits aktivieren. Ihre Firewall kann dann die Pakete überprüfen, während sie ankommen, und entscheiden, welche zuerst weitergeleitet werden, normalerweise Minimierung der Verzögerung.

Inoffiziell können Sie alle diese Bits gleichzeitig aktivieren. Sie könnten also ein Paket mit sowohl Minimierung der Verzögerung als auch Maximierung des Durchsatzes haben. Vor diesem Hintergrund schauen wir uns einige der Funktionen von Iproute2 an.

Iproute2 und tc

Standardmäßig werden Pakete nach dem First In-First Out-Prinzip gesendet. Mit tc können Sie das drastisch ändern. Lassen Sie uns ein sehr einfaches Warteschlangensystem verwenden: Lassen Sie uns 3 “Rohre” (oder Warteschlangen) haben und ihnen eine Priorität zuweisen. Das heißt, solange etwas in Warteschlange 1 ist, leeren wir nicht (oder dequeue) Warteschlange 2, und solange etwas in Warteschlange 2 ist, leeren wir nicht Warteschlange 3.

Dies geschieht mit dem folgenden Befehl (Hinweis: eth1 ist das externe Interface):

tc qdisc add dev eth1 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0

Die 16 Werte für priomap sind wichtig. Es besagt im Grunde, dass die meisten Pakete in der 3. Warteschlange landen (da wir bei null beginnen, wird sie “2” genannt), außer die Pakete mit QoS Minimierung der Verzögerung, die in die 2. Warteschlange gelegt werden, außer die Pakete mit allen QoS-Bits aktiv, die in die 1. Warteschlange gelegt werden. (die prio-Warteschlangendisziplin setzt standardmäßig 3 Warteschlangen)

Die 16 Werte sind in der Reihenfolge für die folgende QoS:

1: 0x00: keine QoS ist gesetzt -> in die 3. Warteschlange (2)

2: 0x02: Monetäre Kosten minimieren (MMC) (2)

3: 0x04: Zuverlässigkeit maximieren (MR) (2)

4: 0x06: MMC + MR (2)

5: 0x08: Durchsatz maximieren (MT) (2)

6: 0x0a: MT + MMC (2)

7: 0x0c: MT + MR (2)

8: 0x0e: MT + MR + MMC (2)

9: 0x10: Verzögerung minimieren (MD) (1)

10: 0x12: MD + MMC (1)

11: 0x14: MD + MR (1)

12: 0x16: MD + MMC + MR (1)

13: 0x18: MD + MT (1)

14: 0x1a: MD + MT + MMC (1)

15: 0x1c: MD + MT + MR (1)

16: 0x1e: MD + MT + MR + MMC (0)

Das war unser erster Schritt.

Als nächstes werden wir jede Warteschlange so anpassen, dass sie selbst eine Warteschlangendisziplin hat:

tc qdisc add dev eth1 parent 1:1 handle 10: sfq limit 3000
tc qdisc add dev eth1 parent 1:2 handle 20: sfq
tc qdisc add dev eth1 parent 1:3 handle 30: sfq

Dies gibt der ersten Warteschlange eine angebliche Kapazität von 3000 Paketen. In Wirklichkeit wird die Größe auf 128 Pakete begrenzt, da sie im tc-Programm als maximale Größe festgelegt ist.

An diesem Punkt werden die meisten Pakete durch die 3. Warteschlange geleitet, außer denen mit dem QoS-Bit zur Minimierung der Verzögerung.

Wenn Sie Ihre iax.conf auf Ihrer Asterisk-Box so anpassen, dass Folgendes gesagt wird, können einige Pakete in der ersten Warteschlange landen:

tos=0x1e

Da dies jedoch keine Garantie ist, werden wir sie mit einem weiteren Trick in tcs Ärmel, Filtern, in die Warteschlange 1 zwingen.

Denken Sie daran, dass IAX Port 4569 verwendet, also werden wir jedes Paket zu und von diesem Port zwingen, durch die erste Warteschlange zu gehen:

tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip dport 4569 0xffff flowid 1:1
tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip sport 4569 0xffff flowid 1:1
tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip tos 0x10 0xff flowid 1:2

Technisch gesehen ist die letzte Zeile nicht erforderlich, aber es schadet nicht, sie drin zu lassen.

Und jetzt sind Sie fertig! Alle Ihre VoIP-Pakete werden zuerst dequeued. Selbst während eines intensiven Downloads oder Uploads verlieren Sie nicht die Interaktivität Ihrer Telefonate.

Um einige Statistiken zu sehen, führen Sie den folgenden Befehl aus:

tc -s qdisc ls dev eth1

Um Ihre Warteschlangen zu entfernen und zum normalen Zustand zurückzukehren, führen Sie aus:

tc qdisc del dev eth1 root

Es liegt nun an Ihnen, die entsprechenden Befehle beim Booten automatisch auszuführen.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.