QoS: Bandbreite, Priorisierung und CAC
Sprache über LAN/WAN-Netzwerke zu übertragen, stellt neue Herausforderungen an die Netzwerkadministratoren. Damit meine ich nun wirklich die Personen, die für das physikalische Netzwerk, d.h. Router, Switches, WAN-Verbindungen etc., zuständig sind und nicht etwa der Windows „Netzwerk“-Administrator. VoIP belegt zwar nicht viel Bandbreite, aber stellt besondere Anforderungen an die Übertragung. Wer bisher sein LAN nur für „Daten“ genutzt hat, hat oftmals nicht die nun erforderlichen Kenntnisse. Dem möchte ich hier abhelfen.
Unterschiedliche Anforderungen
Die nun neu gestellten Anforderungen haben einen technischen Hintergrund: Sprache z.B. darf nicht zu lange warten, damit die Latenzzeit nicht zu lange wird aber in Überlastsituationen kann der Router schon mal ein paar Pakete „unter den Tisch“ fallen lassen. Paketverluste bei VoIP (UDP) sind bis zu einem bestimmten Maß durchaus erlaubt.
Bei interaktiven (Telnet, SAP-Gui, etc.) hingegen bedeutet ein Datenverlust, dass die Daten erneut angefragt werden (TCP Retransmit) und damit die Situation sogar verschlechtert wird. Die Latenzzeit sollte aber zumindest niedrig bleiben. Beide Lasten belegen aber meist wenig Bandbreite.
Anders ist es bei Datenübertragungen (SMB, FTP, http). Auch hier sollten keine Pakete verloren gehen aber es ist kein Echtzeit-Verkehr. In Überlastsituationen ist es aber besser, hier etwas zu „warten“ anstatt ein Telefonat zu stören. Zudem gibt es Lasten, die untergeordnet werden können wie z.B. Backup. Diese können meist „verlangsamt“ werden, um Platz für wichtigere Pakete zu machen. Wenngleich irgendwann natürlich auch ein Backup fertig werden muss. Bei der Steuerung von Netzwerkverkehr gibt es drei wesentliche Dinge zu regeln:
- Bandbreite Die Übertragung von Informationen über eine Verbindung ist in der Regel „Sequentiell“, d.h. wenn wir von Bandbreite sprechend, dann ist dies keine Aussage über die Spuren einer Fahrbahn, sondern die Geschwindigkeit mit der gefahren werden kann. Technisch fahren aber alle immer „hintereinander“ und gleich schnell. Und da durch die Geschwindigkeit vorgegeben ist, wie viele Informationen pro Sekunde übertragen werden können, kann über Bandbreitenrichtlinien dafür gesorgt werden, dass alle mindestens das zugewiesene Stück von dem Kuchen bekommen.
- Priorität Über eine Priorisierung kann aber einem Übergangspunkt gesteuert werden, welche Lasten vorgezogen werden und welche verzögert müssen. Da alle Pakete nacheinander über die gleiche Leitung unterwegs sind, kann ein „dickes“ Paket schon eine merkliche Verzögerung mitbringen. Ein 1500kByte SMB Paket blockiert über 2 Megabit die Leitung für ca. 7ms. Es macht also Sinn hier zwischen große Pakete entsprechend kleine RTP-Pakete einzubauen.
- Paket Loss
Es wird immer zu "Überlast"-Situationen kommen und selbst wenn ein Router eine Queue aufbaut und diese sehr lang sein könnte, macht es aber keinen Sinn, Pakete längere Zeit dort zu puffern. Es gibt Daten wie VoIP, die bis zu einem gewissen Prozentsatz Paketverluste sogar einfach kompensieren. Andere Daten, speziell per TCP gesichert, werden einen Verlust mit einem Retransmit heilen, der unterm Strich noch mehr Bandbreite belegt.
Aus diesen Vorgaben muss ein Router nun entscheiden, welche Pakete er wie für die Übertragung einreiht. All diese Überlegungen sind natürlich hinfällig, wenn einfach „genug“ Bandbreite vorhanden ist. In einem geswitchten LAN mit entsprechenden dimensionierten Trunks ist QoS möglich aber oft auch gar nicht erforderlich. Interessanter wird es auf langsameren Verbindungen oder z.B. Funkstrecken, die per Definition ein „Shared Medium“ sind. Wobei langsam immer auch eine Frage der Firmengröße ist. Selbst Gigabit kann wenig sind, wenn 250 Personen in einer Video-Konferenz sind.
Und so könnte dann eine Umsetzung der verschiedenen Anwendungen auf die entsprechenden Serviceklassen aussehen:
Anwendung | Delay | Bandbreite | Loss | Serviceklassen CoS |
---|---|---|---|---|
Sprache |
min |
wenig |
wenig |
Voice Class |
Video |
min |
viel |
wenig |
Realtime Class |
RDP, ICA, SAP, VT220 |
min |
wenig |
kein |
Applikation |
WWW, FTP, SMTP |
unkritisch |
hoch |
kein |
Unkritisch |
SIP-Signalling |
normal |
gering |
kein |
kein |
SNMP, BGP, OSPF |
min |
gering |
kein |
kein |
Überlegen Sie einmal selbst, welche Transportleitung ihr Ethernet bereit stellt und wie Sie dieses priorisieren und reglementieren wollen. Denn die Grenzen sind durch die Physik vorgegeben. In Überlastsituationen ist ein effizientes "Mangel"-Management ein wesentlicher Faktor einer erfolgreichen VoIP Umgebung.
Definition der Bandbreite
Bandbreite sind „numerische“ Werte und entsprechend könnte man ein Maximum und/oder ein Minimum definieren. Beide Optionen sind denkbar und wenn sie ansonsten einen „freien Zugang“ zu ihrem Netzwerk gewähren aber eine Überlastung durch wenige Dienste (z.B. Surfen etc.) verhindern wollen, dann kann die Definition eines „Maximum“ für diese Last durchaus gangbar sein. Dies ist der einfachste Weg, wenn Sie die anderen Lasten nicht können oder nicht definieren können. Allerdings könnte es dabei passieren, dass bei einem unbelasteten Medium sie den Dienst völlig überflüssig einschränken.
Sinnvoller ist aber der umgekehrte Weg, indem die interessanten Lasten definiert und mit einer Mindestbandbreite versehen werden. Das bedeutet aber, dass Sie nicht nur VoIP sondern eben auch andere wichtige Dienste klassifizieren müssen, damit die Router eine entsprechende Entscheidung treffen können. Jeder Dienst kann dann ohne Einschränkung seine Bandbreite verwenden und über eventuell vorhandene Restbandbreite zumindest teilweise verfügen. Es soll Router geben, die bei der Vorgabe einer Mindestbandbreite diese auch statisch reservieren und damit Kapazität ungenutzt liegen lassen.
Definition der Priorität mit DiffServ (Layer 3)
Kniffliger wird es nun bei der Priorität. Eine einfache Einstufung von niedrig bis hoch ist zu kurz gedacht, weil dann nur noch die Bandbreite als „Schutz“ wirken würde, dass nicht eine Anwendung mit höherer Priorität alle anderen niedrigeren Kommunikationen quasi Ausblocken würde. Und weder Priorität noch Bandbreite sag an sich etwas über die Erlaubnis zum „verwerfen“ von Paketen aus. Im QoS Umfeld gibt es z.B. die Kennzeichnung „Expedited Forwarding (EF)“ um Pakete mit minimaler Verzögerung, Verlusten und Laufzeitunterschieden weiter zu geben. Um noch „Luft“ für andere Pakete zu lassen, sollte die Verwendung von EF-gekennzeichnetem Verkehr reglementiert werden. für Voice wird besser die Klassifizierung Voice Admit (VA) genutzt, die aus Netzwerksicht mit EF vergleichbar ist.
Alle anderen Verkehre werden mit verschiedenen Klassen unter Assured Forwarding (AF) übertragen, die unterschiedliche Bewertungen bezüglich Priorität und Drop-Verhalten haben. Die Bezeichnung Class Selector (CS) wird als Rückwärtskompatibilität zu früheren "Type of Service" (TOS) Werten genutzt.
Klasse |
CS |
DSCP |
TOS Name |
Priorität |
Drop |
Einsatz |
---|---|---|---|---|---|---|
EF |
|
46 |
Class 5(Höchst) |
0 |
Lync Audio |
|
VA |
44 |
Class 5(Höchst) |
0 |
|||
AF41 |
34 |
Class 4 |
Niedrig |
Lync Video |
||
AF42 |
36 |
Class 4 |
Mittel |
|||
AF43 |
CS7 |
38 |
Network Control |
Class 4 |
Hoch |
IP Routing Protokolle |
AF33 |
CS6 |
30 |
Internetwork Control |
Class 3 |
Hoch |
IP Routing Protokolle |
AF32 |
CS5 |
28 |
CRITIC/ECP |
Class 3 |
Mittel |
|
AF31 |
26 |
Class 3 |
Niedrig |
|||
AF23 |
22 |
Class 2 |
Hoch |
|||
AF22 |
CS4 |
20 |
Flash Override |
Class 2 |
Mittel |
|
AF21 |
CS3 |
18 |
Flash |
Class 2 |
Niedrig |
Lync SIP Signalling |
|
CS2 |
16 |
Immediate |
- |
Hoch |
|
AF13 |
14 |
Class 1 |
Hoch |
|||
AF12 |
12 |
Class 1 |
Mittel |
|||
AF11 |
10 |
Class 1 |
Niedrig |
|||
|
CS1 |
8 |
Priority |
- |
Hoch |
|
Default |
Default |
0 |
Routine |
Unklassifiziert |
Unklassifiziert |
- RFC 4594 Configuration Guidelines für DiffServ Service
Classes
http://tools.ietf.org/html/rfc4594 - Lync Quality of Service Behavior
http://blog.schertz.name/2011/08/lync-qos-behavior/ - Quality of Service (QoS) für Lync 2010 and Lync 2013
http://blog.kloud.com.au/2012/10/31/quality-of-service-qos-for-lync-2010-and-lync-2013/ - Differentiated Services Code Point (DSCP) (Übersicht)
http://technet.microsoft.com/de-de/library/cc787218(v=ws.10).aspx - New Terminology and Clarifications für Diffserv
http://tools.ietf.org/html/rfc3260 - Differentiated services
http://en.wikipedia.org/wiki/Differentiated_services - Commonly Used DSCP Values
http://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus1000/sw/4_0/qos/configuration/guide/nexus1000v_qos/qos_6dscp_val.pdf - DiffServ (DSCP)
http://de.wikipedia.org/wiki/Differentiated_Services_Code_Point - Class of Service
http://de.wikipedia.org/wiki/Class_of_Service
Priorität mit IEEE 802.1p (Layer 2)
DiffServ mit DSCP-Feldern bauen auf Layer 3 auf und werden von einfachen Switches nicht erfasst. Auf Layer2 hingegen arbeitet IEEE 802.1p. Allerdings gibt es hier nur 7 Klassen, die in dem 3-bit PCP Feld folgendermaßen unterteilt werden:
PCP |
Netzwerkpriorität |
Kürzel |
Eigenschaften |
---|---|---|---|
1 |
0 (niedrigste) |
BK |
Hintergrund |
0 |
1 |
BE |
Best Effort |
2 |
2 |
EE |
Excellent Effort |
3 |
3 |
CA |
Kritische Anwendungen |
4 |
4 |
VI |
Video, < 100 ms Verzögerung |
5 |
5 |
VO |
Sprache, < 10 ms Verzögerung |
6 |
6 |
IC |
Internetwork Control |
7 |
7 (höchste) |
NC |
Network Control |
Die 3 Bits werden als Teil des VLAN-Taggings verwendet, welches nur 12 Bits (4096 VLANs) verwendet und direkt nach dem Ethernet-Frametype codiert ist. Diese Priorisierung sind auf Ethernet-Level (Layer 2) und damit auch protokollunabhängig.
Erst Windows 2012 unterstützt auch die Kennzeichnung mit 802.1p
http://technet.microsoft.com/en-us/library/hh831679
- IEEE 802.1p
http://de.wikipedia.org/wiki/IEEE_802.1p
http://en.wikipedia.org/wiki/IEEE_P802.1p - IEEE 802.1p: LAN Layer 2 QoS/CoS
Protocol für Traffic
Prioritization
http://www.javvin.com/protocol8021P.html
Lync Beispiele für QoS
Bringt man nun die Lync Protokolle in eine Tabelle, dann sieht dies in etwa so aus:
Medien | QoS Klasse pro Hop | Queuengi und Drop | Notizen |
---|---|---|---|
Audio |
EF |
Priority Queue |
Niedrige Verluste, Wenig Latenz, geringer Jitter, gesicherte Bandbreite. Abstimmung mit WAN-Reservierungen |
Video |
AF41 |
BW Queue und DSCP WRED |
Klasse 4 mit
wenig Verlust
(Low Drop Policy) |
SIP Signalisierung |
CS3 |
BW Queue |
Klasse 3 |
App Sharing |
AF21 |
BW Queue und DSCP WRED |
Klasse 2 mit
wenig Verlust
(Low Drop Policy) |
Dateitransfer |
AF11 |
BW Queue und DSCP WRED |
Klasse 1 mit
wenig Verlust
(Low Drop Policy) |
Hier werden fünf Dienste unterschieden und es ist klar, dass das empfindliche Ohr mit "Audio" die höchste Bedeutung hat. Wenn wir mit Lync das Telefon ersetzen wollen, dann muss zumindest die gleiche oder bessere Qualität geboten werden. Bislang waren TK-Übertragungswege eigene (teure) Leitungen und durch VoIP müssen die Pakete priorisiert werden.
Klassifizierung
Nachdem wir nun so viel über die verschiedenen QoS und 802.1p Klassen gelesen haben und die Router gerne anhand dieser Kennzeichnungen die Pakete weiterleiten würden, muss natürlich eine entsprechende Kennzeichnung erfolgen. Auf dem Weg von Client über ClientSwitch, Trunk zum Coreswitch und Router werden mehrere Stationen durchlaufen. Je früher ein Paket klassifiziert wird, desto eher können Vermittlungssysteme dies nutzen. Zwei Stellen sind hierbei üblich:
Stelle | Vorteil | Nachteil |
---|---|---|
Client |
|
|
Switch |
|
|
Router |
|
|
Im Bezug auf Lync kann der Client z.B. über Gruppenrichtlinien entsprechende angewiesen werden, Pakete von "communicator.exe" (OCS2007/Lync2010) bzw. Lync.exe (Lync 2013) entsprechende Tags zu verpassen. Wenn der Netzwerkadministrator auf Portebene selbst taggen möchte, dann kann er dies immer noch tun. Allerdings sollte dann der Lync Administrator den Lync Client die zu verwendende Portbereiche vorgeben.
Hinweis: Einige "QoS"-Features
von günstigen Switches haben nichts mit echtem
QoS zu tun sondern priorisieren pauschal einen
Ethernet Port.
In some ports that need to have a high priority
to manage the data transfer, QoS should be
change. Set the port’s QoS to high to determine
the port will always transfer their data first.
Quelle: DLink DGS-1224T-Handbuch
Natürlich kann jeder gute Switch oder Router immer wieder die vorgefundene Einstufung eines eingehenden Paketes durch eigene Werte ersetzen. So sich ein Netzbetreiber zumindest partiell gegen Missbrauch schützen. Dies ersetzt aber nicht ein effektives Monitoring und Reporting der Bandbreitenverwendung.
Scheduler
Jede Netzwerkkomponente, die Daten von einer Schnittstelle auf eine andere Schnittstelle überträgt, muss daher entscheiden, welches Paket als nächstes auf die Reise geschickt wird In der Regel bauen die Geräte dazu mehrere Queues auf z.B. anhand der Priorität) und sortieren Pakete dort ein. Es ist die Aufgabe des Schedulers, das nächste Paket zu bestimmen. Es gibt statische Ansätze, bei der immer die Queue in der höher der Priorität zuerst abgearbeitet wird was dazu führen kann, dass niedrig priorisierte Pakete gar nicht mehr übertragen werden. Andere gewichten die Priorität, so dass niedrigere Queues auch, wenngleich seltener, an die Reihe kommen. Der Scheduler sollte nun aber auch die Gesamtbandbreiten die pro Nutzlast zugewiesen wurden und die erlaubten Loss-Raten berücksichtigen. Sie können sich vorstellen, dass dies kompliziert werden kann und neben der eigentlichen Konfiguration auch das Monitoring und die Auswertung ein wichtiger Faktor sind, um so ein System zu tunen
- Fair queuing
http://en.wikipedia.org/wiki/Fair_queuing - Weighted fair queuing
http://en.wikipedia.org/wiki/Weighted_fair_queuing
CAC mit VoIP
Ein wesentlicher Aspekt aller Bandbreitensteuerung ist die Begrenzung auf Seiten des Clients. Bei einer klassischen Telefonanlage gibt es nur eine konkrete Anzahl an Leitungen. Sind alle Leitungen belegt, dann erhält der nächste Anrufer ein besetzt. Bei einem paketvermittelten Netz gibt es keine „Leitungen“ die belegt sind aber eben überlastete Leitungen. Daher muss es ein Ziel sein die Nutzung von vor der eigentlichen Verbindung zu steuern. Dies kann z.B. Lync über die Funktion „Call Admission Control“. Der Administrator bestimmt, wie viel Bandbreite pro Verbindung und gesamt auf einem Netzwerklink durch Lync verwendet werden darf. Damit wird die maximal durch Lync genutzte Bandbreite seitens der Applikation vorgegeben. Wenn sich alle Clients daran halten, dann kann QoS auf dem Netzwerk bezüglich VoIP aber nicht verzichtet werden. Denn ohne entsprechende Kennzeichnung könnten andere Datenverkehre selbst die nun nach oben begrenzte durch Lync verwendete Bandbreite einschränken.
Der Einsatz von CAC schützt die Anwender eher vor der Problematik, dass die Qualität nicht gehalten werden kann. Ohne CAC können selbst mit QoS die Anwender weiter neue Verbindungen aufbauen. Zwar sichert QoS den Paketen die gewünschte Priorität zu aber eben nur bis zu den Grenzen der erlaubten Bandbreite. Lync wird dann anfangen den Codec zu wechseln (z.B. von Wideband auf Narrowband) oder die Videoauflösung reduzieren. Ganz so wie Lync es in einem nicht verwalteten Netzwerk (z.B. Internet) macht. Dies wird aber sehr bald Auswirkungen auf die Zufriedenheit der Anwender haben. Die Qualität stimmt einfach nicht mehr.
- QoS priorisiert Pakete bzw. reserviert Bandbreite
- CAC beschränkt die Bandbreite auf Software, d.h. verhindert Überschreitung der maximalen Bandbreite
Insofern sollte bei allem QoS auf dem Netzwerk auch die Anwendung limitiert werden, damit eine aufgebaute Verbindung auch eine „gute Verbindung“ bleibt und nicht die nächste zusätzliche Verbindung bei den bestehenden Verbindungen zum Codec-Wechsel führt, der sich sogar aufschwingen kann. Wenn viele Verbindungen die Bandbreite reduzieren, dann ist plötzlich wieder mehr Bandbreite verfügbar und der Codec wird wieder gewechselt. Solch eine Welle sollten Sie vermeiden.
- Call Admission Control
- Call Admission Control
http://en.wikipedia.org/wiki/Call_Admission_Control
Weitere Links
- Implementing Quality of
Service Policies with DSCP
http://www.cisco.com/en/US/tech/tk543/tk757/technologies_tech_note09186a00800949f2.shtml - Class of Service (CoS)
http://de.wikipedia.org/wiki/Class_of_Service - RFC 2474 – Definition of the
Differentiated Services Field
(DS Field) in the IPv4 and IPv6
Headers
http://tools.ietf.org/html/rfc2474 - RFC 2475 – An Architecture für Differentiated Services
http://tools.ietf.org/html/rfc2475