Simple QoS Konfig

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

 

 

   
   
   
Samuel Heinrich
Senior Network Engineer at Selution AG (Switzerland)
Arbeitet in Raum Basel (Switzerland) als Senior Network Engineer mit über 15 Jahren Erfahrung im Bereich Netzwerk

2 thoughts on “Simple QoS Konfig

  1. 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?

    1. 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:

      lab_access#show access-lists

      Extended IP access list MARKIER_AUDIO-TRAFFIC
      10 permit udp any range 16384 32767 any range 16384 32767
      Extended IP access list MARKIER_CALL-CONTROLL
      10 permit tcp any range 2000 2002 any range 2000 2002
      20 permit tcp any eq 2443 any eq 2443
      30 permit tcp any range 5060 5061 any range 5060 5061
      40 permit udp any range 5060 5061 any range 5060 5061

      lab_access#show class-map
      Class Map match-all HIGH_PRIO_TRAFFIC (id 3)
      Match access-group name MARKIER_VOICE-TRAFFIC

      Class Map match-all MEDIUM_PRIO_TRAFFIC (id 2)
      Match access-group name MARKIER_CALL-CONTROLL

      lab_access#show policy-map
      Policy Map TRAFFIC_KATEGORISIERER
      Class MEDIUM_PRIO_TRAFFIC
      set dscp cs3
      Class HIGH_PRIO_TRAFFIC
      set dscp ef

      lab_access#sh run int fa0/1
      interface FastEthernet0/1
      description LAB-VOICE
      switchport access vlan 11
      switchport mode access
      service-policy input TRAFFIC_KATEGORISIERER

      lab_access#show mls qos interface fa0/1
      FastEthernet0/1
      Attached policy-map for Ingress: TRAFFIC_KATEGORISIERER
      trust state: not trusted
      trust mode: not trusted
      trust enabled flag: ena
      COS override: dis
      default COS: 0
      DSCP Mutation Map: Default DSCP Mutation Map
      Trust device: none
      qos mode: port-based

      Gruss

Schreibe einen Kommentar zu Samuel Heinrich Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.