QoS auf IOS Switchen konfiguriert man im Grunde in 4 Schritten
1) QoS aktivieren
2) Trusted Boundary definieren
3) Translation Maps definieren
4) Traffic markieren und entsprechenden Klassen zuweisen
QoS aktivieren:
CAT1(config)#mls qos ? aggregate-policer Named aggregate policer map qos map keyword queue-set Choose a queue set for this queue rewrite Rewrite Packet/Frame srr-queue Configure SRR receive queues <cr> CAT1(config)#mls qos
Prüfen ob bereits QoS mässig etwas konfiguriert ist:
CAT1(config)#do sh run | in mls
mls qos map cos-dscp 0 8 16 26 32 40 48 56
mls qos
mls qos trust dscp
CAT1(config)#
In diesem Beispiel wurde bereits das COS-DSCP Mapping angepasst und vermutlich auf einem Interface ein Trust DSCP konfiguriert, ansonsten wäre der Output leer.
COS-DSCP Mapping für Cisco Voice best Practise anpassen:
CAT1(config)#mls qos map dscp-cos ?
<0-63> DSCP values separated by spaces (up to 8 values total)
CAT1(config)#mls qos map cos-dscp 0 8 16 24 32 46 48 56
Verifizieren:
CAT1(config)#do sh mls qos map Policed-dscp map: d1 : d2 0 1 2 3 4 5 6 7 8 9 --------------------------------------- 0 : 00 01 02 03 04 05 06 07 08 09 1 : 10 11 12 13 14 15 16 17 18 19 2 : 20 21 22 23 24 25 26 27 28 29 3 : 30 31 32 33 34 35 36 37 38 39 4 : 40 41 42 43 44 45 46 47 48 49 5 : 50 51 52 53 54 55 56 57 58 59 6 : 60 61 62 63 Dscp-cos map: d1 : d2 0 1 2 3 4 5 6 7 8 9 --------------------------------------- 0 : 00 00 00 00 00 00 00 00 01 01 1 : 01 01 01 01 01 01 02 02 02 02 2 : 02 02 02 02 03 03 03 03 03 03 3 : 03 03 04 04 04 04 04 04 04 04 4 : 05 05 05 05 05 05 05 05 06 06 5 : 06 06 06 06 06 06 07 07 07 07 6 : 07 07 07 07 Cos-dscp map: cos: 0 1 2 3 4 5 6 7 -------------------------------- dscp: 0 8 16 24 32 46 48 56
DSCP Match nun auf COS5 und umgekehrt.
Traffic markieren:
CAT1(config)#ip access-list extended MARKIER_FTP CAT1(config-ext-nacl)#10 permit tcp any any eq ftp CAT1(config-ext-nacl)#11 permit tcp any any eq ftp-data CAT1(config)#ip access-list extended MARKIER_HTTP CAT1(config-ext-nacl)# permit tcp any any eq http CAT1(config)#ip access-list extended MARKIER_AUDIO-TRAFFIC CAT1(config-ext-nacl)# permit udp any range 16384 32767 any range 16384 32767 CAT1(config)#ip access-list extended MARKIER_CALL-CONTROLL CAT1(config-ext-nacl)# permit tcp any range 2000 2002 any range 2000 2002 CAT1(config-ext-nacl)# permit tcp any eq 2443 any eq 2443 CAT1(config-ext-nacl)# permit tcp any range 5060 5061 any range 5060 5061 CAT1(config-ext-nacl)# permit udp any range 5060 5061 any range 5060 5061 CAT1(config-ext-nacl)# permit tcp any eq 1720 any eq 1720
Class-maps erstellen und den markieren Traffic den Klassen zuweisen.
CAT1(config)#class-map LOW_PRIO_TRAFFIC CAT1(config-cmap)#match ? access-group Access group input-interface Select one or more input interfaces to match ip IP specific values protocol Protocol CAT1(config)#class-map LOW_PRIO_TRAFFIC CAT1(config-cmap)#match access-group name MARKIER_HTTP CAT1(config-cmap)#match access-group name MARKIER_FTP CAT1(config-cmap)#class-map MEDIUM_PRIO_TRAFFIC CAT1(config-cmap)#match access-group name MARKIER_CALL-CONTROLL CAT1(config-cmap)#class-map HIGH_PRIO_TRAFFIC CAT1(config-cmap)#match access-group name MARKIER_VOICE-TRAFFIC
Policy-map erstellen, welche die selbst erstellen Klassen den jeweiligen QoS Klassen zuweist:
CAT1(config)#policy-map TRAFFIC_KATEGORISIERER CAT1(config-pmap)#? QoS policy-map configuration commands: class policy criteria description Policy-Map description exit Exit from QoS policy-map configuration mode no Negate or set default values of a command <cr> CAT1(config-pmap)# CAT1(config-pmap)#class LOW_PRIO_TRAFFIC CAT1(config-pmap-c)#? QoS policy-map class configuration commands: exit Exit from QoS class action configuration mode no Negate or set default values of a command police Police service-policy Configure QoS Service Policy set Set QoS values trust Set trust value for the class <cr> CAT1(config-pmap)#class LOW_PRIO_TRAFFIC CAT1(config-pmap-c)#set dscp default CAT1(config-pmap-c)# CAT1(config-pmap-c)# CAT1(config-pmap-c)#class MEDIUM_PRIO_TRAFFIC CAT1(config-pmap-c)#set dscp 24 CAT1(config-pmap-c)# CAT1(config-pmap-c)# CAT1(config-pmap-c)#class HIGH_PRIO_TRAFFIC CAT1(config-pmap-c)#set dscp 46 CAT1(config-pmap-c)# CAT1(config-pmap-c)#
Policy-map auf einem Interface anziehen:
CAT1(config-cmap)#int fa0/15 CAT1(config-if)#service-policy input TRAFFIC_KATEGORISIERER
Was könnte man noch ausser DSCP an Werten setzen?
CAT1(config-pmap-c)#set ? dscp Set DSCP in IP(v4) and IPv6 packets ip Set IP specific values precedence Set precedence in IP(v4) and IPv6 packets CAT1(config-pmap-c)#set ip ? dscp Set IP DSCP (DiffServ CodePoint) precedence Set IP precedence CAT1(config-pmap-c)#set ip ds CAT1(config-pmap-c)#set ip dscp ? <0-63> Differentiated services codepoint value af11 Match packets with AF11 dscp (001010) af12 Match packets with AF12 dscp (001100) af13 Match packets with AF13 dscp (001110) af21 Match packets with AF21 dscp (010010) af22 Match packets with AF22 dscp (010100) af23 Match packets with AF23 dscp (010110) af31 Match packets with AF31 dscp (011010) af32 Match packets with AF32 dscp (011100) af33 Match packets with AF33 dscp (011110) af41 Match packets with AF41 dscp (100010) af42 Match packets with AF42 dscp (100100) af43 Match packets with AF43 dscp (100110) cs1 Match packets with CS1(precedence 1) dscp (001000) cs2 Match packets with CS2(precedence 2) dscp (010000) cs3 Match packets with CS3(precedence 3) dscp (011000) cs4 Match packets with CS4(precedence 4) dscp (100000) cs5 Match packets with CS5(precedence 5) dscp (101000) cs6 Match packets with CS6(precedence 6) dscp (110000) cs7 Match packets with CS7(precedence 7) dscp (111000) default Match packets with default dscp (000000) ef Match packets with EF dscp (101110)
Wann verwende ich was?
Als Faustregel kann man sagen:
COS = 802.1Q Trunk (Layer2!) „0-7 Higher = better*“
DSCP = Diff Service Field (Layer3/ Non Trunk) „0-63 Higher = better“
*Ausnahme bei „higher = better“:
0 = default (keine Markierung / Best effort)
1 = scavenger Klasse (Schlechter als Best effort)
3 = call Controll
5 = Voice Audio
Das macht man damit man Traffic, explizit schlechter als werten kann als best effort, ohne sämtlichen Traffic markieren zu müssen.
Typ | Trust? |
Autonomous AP (Trunk) | COS |
Lightwight AP (Access Port) | DSCP |
Lightwight Flexconnect AP (Trunk) | COS |
Switch to Switch Trunk | COS or DSCP |
WLC (Trunk) | COS |
VoIP Phone | DSCP |
Umrechnung:
CS to DSCP = CS# *8
CS2 = 2*8 DSCP16
CS4 = 4*8 DSCP32
AF to DSCP = (X *8) + (Y*2)
AF31 = (3*8) + (1*2) = 26
AF42 = (4*8) + (2*2) = 36
Hallo Samuel
Gute Anleitung. Frage: Ich möchte auf einem Switchuplink den Voice Traffic via QoS priorisieren. Meine Switches sind 2960er (also Layer2), dann kann ich ja nicht wie du mit Ports arbeiten(da Layer) oder?
HI Simomn
Auch ein Cisco 2960 Switch ist in der Lage mittels TCP/UDP Port eine Klassifizierung zu machen. Der Switch kann zwar kein IP-Routing, jedoch ist er trotzdem in der Lage die Pakete bis Layer 4 anzuschauen.
Siehe:
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960/software/release/12-2_40_se/configuration/guide/scg.pdf
Kapitel 28: Configuring QoS
Generell gesagt, gibt es drei Möglichkeiten:
1) Auto QoS: Erkennt Cisco Soft und Hardphones und priorisiert Voice Traffic
2) Trusted: Vertraut DSCP oder COS Tags
3) Standard QoS: Markierung mittels ACL / Class-map / Policy-Maps.
Ich habe das hier schnell auf einem 2960 getestet:
Gruss