Questo documento descrive come risolvere i problemi di perdite di output dovute a QoS (Quality of Service) sugli switch Cisco Catalyst serie 2960, 3750, 3750G, 3750X e 3560.
Cisco raccomanda la conoscenza base di QoS.
Le informazioni fornite in questo documento si basano sulle seguenti piattaforme: Switch Cisco Catalyst serie 2960, 3750, 3750G, 3750X, 3560.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
QoS viene utilizzato per assegnare la priorità ai dati più importanti durante i periodi di congestione. Di conseguenza, dopo l'abilitazione di QoS, è possibile che si verifichino cali nei dati di massa meno importanti.
Gli switch Cisco Access Layer implementano le funzionalità QoS nell'hardware. Questo documento aiuta a stabilire se le perdite sono causate da QoS e descrive varie opzioni di coda e ottimizzazione del buffer per mitigarle.
Coda predefinita in ingresso
Coda predefinita in uscita
Switch#show int gi1/0/1
!-- Some output omitted.
GigabitEthernet0/1 is up, line protocol is up (connected)
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
Full-duplex, 1000Mb/s, media type is 10/100/1000BaseTX
input flow-control is off, output flow-control is unsupported
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1089
Queueing strategy: fifo
Output queue: 0/40 (size/max)
5 minute input rate 4000 bits/sec, 6 packets/sec
5 minute output rate 3009880 bits/sec, 963 packets/sec
Switch#show mls qos
QoS is enabled
QoS ip packet dscp rewrite is enabled
Switch#show mls qos int gi1/0/1 statistics
GigabitEthernet1/0/1 (All statistics are in packets)
dscp: incoming
-------------------------------
0 - 4 : 0 0 0 0 0
5 - 9 : 0 0 0 0 0
10 - 14 : 0 0 0 0 0
15 - 19 : 0 0 0 0 0
20 - 24 : 0 0 0 0 0
25 - 29 : 0 0 0 0 0
30 - 34 : 0 0 0 0 0
35 - 39 : 0 0 0 0 0
40 - 44 : 0 0 0 0 0
45 - 49 : 0 198910 0 0 0
50 - 54 : 0 0 0 0 0
55 - 59 : 0 0 0 0 0
60 - 64 : 0 0 0 0
dscp: outgoing
-------------------------------
0 - 4 : 0 0 0 0 0
5 - 9 : 0 0 0 0 0
10 - 14 : 0 0 0 0 0
15 - 19 : 0 0 0 0 0
20 - 24 : 0 0 0 0 0
25 - 29 : 0 0 0 0 0
30 - 34 : 0 0 0 0 0
35 - 39 : 0 0 0 0 0
40 - 44 : 0 0 0 0 0
45 - 49 : 0 248484 0 0 0
50 - 54 : 0 0 0 0 0
55 - 59 : 0 0 0 0 0
60 - 64 : 0 0 0 0
cos: incoming
-------------------------------
0 - 4 : 2 0 0 0 0
5 - 7 : 0 0 0
cos: outgoing
-------------------------------
0 - 4 : 0 0 0 0 0
5 - 7 : 0 0 0
output queues enqueued:
queue: threshold1 threshold2 threshold3
-----------------------------------------------
queue 0: 248484 0 0
queue 1: 0 0 0
queue 2: 0 0 0
queue 3: 0 0 0
output queues dropped:
queue: threshold1 threshold2 threshold3
-----------------------------------------------
queue 0: 1089 0 0
queue 1: 0 0 0
queue 2: 0 0 0
queue 3: 0 0 0
Policer: Inprofile: 0 OutofProfile: 0Nota: In questo esempio vengono mostrati i pacchetti ignorati nella coda 0/soglia1 che ignorano i pacchetti. In altri esempi nel documento, la numerazione delle code è 1 - 4; pertanto, questo valore sarà la coda 1.
Switch#show mls qos maps dscp-output-q
Dscp-outputq-threshold map:
d1 :d2 0 1 2 3 4 5 6 7 8 9
------------------------------------------------------------
0 : 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01
1 : 02-01 02-01 02-01 02-01 02-01 02-01 03-01 03-01 03-01 03-01
2 : 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01
3 : 03-01 03-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01
4 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 04-01 04-01
5 : 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01
6 : 04-01 04-01 04-01 04-01
Nota: Ogni set di code dispone dell'opzione per configurare le dimensioni del buffer e il valore di soglia per le quattro code in uscita. Quindi, è possibile applicare uno qualsiasi dei set di code a una qualsiasi delle porte. Per impostazione predefinita, tutte le interfacce utilizzano il set di code 1 per le code di output, a meno che non siano configurate in modo esplicito per utilizzare il set di code 2.
In questo scenario, la coda 1 nel set di code 1 ha il 25% dello spazio totale del buffer e la soglia 1 è impostata su 100%
Switch#show mls qos queue-set
Queueset: 1
Queue : 1 2 3 4
----------------------------------------------
buffers : 25 25 25 25
threshold1: 100 200 100 100
threshold2: 100 200 100 100
reserved : 50 50 50 50
maximum : 400 400 400 400
Queueset: 2
Queue : 1 2 3 4
----------------------------------------------
buffers : 25 25 25 25
threshold1: 100 200 100 100
threshold2: 100 200 100 100
reserved : 50 50 50 50
maximum : 400 400 400 400
Nota: È possibile modificare anche il set di code 1; tuttavia, poiché per impostazione predefinita tutte le interfacce utilizzano il set di code 1, la modifica viene applicata a tutte le interfacce.
In questo esempio, il set di code 2 viene modificato in modo che la coda 1 riceva il 70% del buffer totale.
Switch(config)#mls qos queue-set output 2 buffers 70 10 10 10In questo esempio vengono modificate le soglie del set di code 2 e della coda 1. Sia la soglia 1 che la soglia 2 vengono mappate a 3100 in modo che possano estrarre il buffer dal pool riservato, se necessario.
Switch(config)#mls qos queue-set output 2 threshold 1 3100 3100 100 3200
Switch#show mls qos queue-set
Queueset: 1
Queue : 1 2 3 4
----------------------------------------------
buffers : 25 25 25 25
threshold1: 100 200 100 100
threshold2: 100 200 100 100
reserved : 50 50 50 50
maximum : 400 400 400 400
Queueset: 2
Queue : 1 2 3 4
----------------------------------------------
buffers : 70 10 10 10
threshold1: 3100 100 100 100
threshold2: 3100 100 100 100
reserved : 100 50 50 50
maximum : 3200 400 400 400
Switch(config)#int gi1/0/1
Switch(config-if)#queue-set 2
Switch(config-if)#endVerificare che l'interfaccia sia mappata al set di code 2.
Switch#show run int gi1/0/1
interface GigabitEthernet1/0/1
switchport mode access
mls qos trust dscp
queue-set 2
endVerificare se l'interfaccia continua a rilasciare i pacchetti.
Switch(config-if)#srr-queue bandwidth share 1 75 25 5
Switch(config-if)#srr-queue bandwidth shape 2 0 0 0Verificare se l'interfaccia continua a rilasciare i pacchetti.
Nota: La coda di priorità viene servita fino a quando non è vuota prima che vengano servite le altre code. Per impostazione predefinita, sugli switch serie 2960/3560/3750, la coda 1 è la coda di priorità.
Switch(config)#int gi1/0/1
Switch(config-if)#priority-queue out
Switch(config-if)#endÈ possibile mappare il contrassegno del pacchetto scartato sull'interfaccia in modo che vada alla coda 1 (coda di priorità). Questa azione assicura che il traffico con questo contrassegno venga sempre elaborato prima di ogni altra operazione.
Switch(config)#mls qos srr-queue output dscp-map queue 1 threshold 1
Di seguito sono riportati alcuni problemi comuni:
D: Quando modificare il set di code e quando utilizzare la condivisione e il shaping?
A: La decisione dipende dalla natura delle gocce. Se le cadute aumentano in modo intermittente, questo problema è probabilmente dovuto a traffico bursty. Al contrario, se le perdite aumentano continuamente a una velocità costante, la coda che scarta i pacchetti probabilmente riceve più dati di quanti possa inviare.
Per le cadute intermittenti, la coda deve disporre di un buffer di grandi dimensioni in grado di contenere burst occasionali. Per implementare questa soluzione, è necessario modificare il set di code e allocare più buffer alla coda interessata, nonché aumentare i valori di soglia.
Per i rilasci continui, è necessario configurare lo scheduler in modo che serva la coda interessata più spesso e che estragga dalla coda più pacchetti per ciclo di CPU. Per implementare questa soluzione, è necessario configurare la condivisione o il shaping sulle code in uscita.
D: Qual è la differenza tra modalità condivisa e modalità forma?
A: Nella modalità con forma, alle code in uscita viene garantita una percentuale della larghezza di banda e la loro velocità è limitata a tale quantità. Il traffico con forma non utilizza più della larghezza di banda allocata anche se il collegamento è inattivo. La modalità Shaped offre un flusso del traffico più uniforme nel tempo e riduce i picchi e le valli del traffico bursty. Con il shaping, il valore assoluto di ciascun peso viene utilizzato per calcolare la larghezza di banda disponibile per le code.
forma larghezza di banda coda srr peso1 peso2 peso3 peso4
Il rapporto inverso (1/peso) controlla la larghezza di banda di shaping per questa coda. In altre parole, queue1 è riservato 1/weight1 percento della larghezza di banda totale e così via. Se si configura un peso pari a 0, la coda corrispondente funziona in modalità condivisa. Il peso specificato con il comando srr-queue bandwidth shape viene ignorato e i pesi specificati con il comando di configurazione srr-queue bandwidth share interface per una coda vengono applicati.
In modalità condivisa, le code condividono la larghezza di banda tra di esse in base ai pesi configurati. La larghezza di banda è garantita a questo livello ma non limitata. Se ad esempio una coda è vuota e non richiede più una condivisione del collegamento, le code rimanenti possono espandersi nella larghezza di banda inutilizzata e condividerla tra di esse.
condivisione larghezza di banda della coda srr peso1 peso2 peso3 peso4
queue1 è garantito un minimo di weight1/(weight1 + weight2 + weight3 + weight4) percentuale della larghezza di banda, ma può anche occupare la larghezza di banda di altre code senza forma, se necessario.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
18-May-2013 |
Versione iniziale |