La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
Questo documento descrive come prevedere l'allocazione del buffer delle code alle code del traffico sugli switch Catalyst serie 9000.
Cisco raccomanda la conoscenza dei seguenti argomenti:
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
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.
Il presente documento può essere utilizzato anche per le seguenti versioni hardware e software:
Nota: questo documento non si applica agli switch 9500X o 9600X poiché utilizzano un'architettura ASIC e QoS diversa.
Per una panoramica tecnica della funzionalità QoS sugli switch Catalyst serie 9000, fare riferimento al white paper su Catalyst 9000 QoS e code.
Spesso è necessario regolare l'allocazione dei buffer in risposta a cali di output indesiderati per una particolare classe di traffico. Per ulteriori informazioni su come diagnosticare e risolvere i problemi di output sugli switch Catalyst serie 9000, fare riferimento a questo articolo: Risoluzione dei problemi di output sugli switch Catalyst 9000
QoS |
Quality of Service (QoS) |
Concetto/gruppo di funzionalità correlate relative alla classificazione, alla contrassegno, alla coda e alla pianificazione del traffico in entrata e in uscita da un dispositivo di rete |
DSCP |
Valore DSCP |
Meccanismo di classificazione del traffico contenuto nell'intestazione IP di un pacchetto |
CoS |
Class of Service |
Meccanismo di classificazione del traffico contenuto nell'intestazione frame Ethernet di un pacchetto |
ASSO |
Voce di controllo di accesso |
Una singola regola o riga in un Access Control List (ACL) |
ACL |
Lista dei controlli di accesso |
Gruppo di voci di controllo di accesso (ACE, Access Control Entries) utilizzate da diverse funzionalità per associare il traffico e intraprendere un'azione |
ASIC |
Circuito integrato specifico dell'applicazione |
Chip per computer progettato per eseguire un'attività o una serie di attività specifiche con efficienza elevata. |
UADP |
Unified Access Data Plane |
Cisco ASIC è stato usato negli switch Catalyst serie 9000 per eseguire molte attività di elaborazione dei pacchetti di rete. |
PBC |
Complesso buffer di pacchetto |
Sottosistema Cisco UADP ASIC, che funge da buffer di pacchetto centrale per elaborare, mettere in coda e pianificare i pacchetti. |
AQM |
Gestione code attive |
Sottosistema Cisco UADP ASIC che gestisce le code del traffico e pianifica le azioni per le porte di rete. |
DTS |
Soglia e scala dinamiche |
Tecnologia Cisco UADP ASIC che adatta e adatta dinamicamente i buffer su più porte per ottimizzare l'utilizzo dell'hardware |
In teoria, i buffer sono memoria utilizzata per assorbire burst transitori di dati, quando i dati scambiati o instradati a una porta superano la capacità delle porte di caricare i dati sul cavo. Una porta ha una velocità fissa alla quale trasmette e rimuove i dati dalla coda. Un buffer, a livello concettuale, è semplicemente un luogo in cui memorizzare, o accodare, i dati fino a quando non vengono trasmessi fuori dall'interfaccia.
Sugli switch Catalyst serie 9000, la parola buffer può essere utilizzata in due modi. Il buffer di sistema nel suo complesso è noto anche come PBC (Packet Buffer Complex) dell'ASIC. La parola buffer può anche riferirsi a una piccola unità della PBC. Un buffer viene allocato alle porte in base alla coda. In altre parole, a una coda di porta viene allocata una quantità di singoli buffer di piccole dimensioni dal buffer di sistema complessivo.
Sulle piattaforme Cisco UADP basate su ASIC, un buffer contiene fino a 256 byte di dati e i buffer sono collegati tra loro per rappresentare frame più grandi di 256 byte.
Il calcolo finale del buffer disponibile per coda è influenzato da questi fattori:
I soft buffer sono buffer condivisi tra più porte. Questi buffer sono chiamati soft perché non sono garantiti per la porta.
Il sistema sovrascrive intenzionalmente i soft buffer. Ciò consente a una porta di utilizzare un numero elevato di buffer, se necessario, ma poiché più porte richiedono buffer, tutte le porte e le code vengono ridotte in modo dinamico e corretto come parte del processo Cisco UADP ASIC DTS.
In sintesi, i soft buffer - definiti negli output come softmax, sono un valore massimo opportunistico. Una porta utilizza il valore softmax completo solo se la quantità di buffer è disponibile nel buffer di sistema complessivo. Quando la richiesta di buffer aumenta attraverso altre porte e code, il buffer massimo disponibile per la porta è inferiore.
I buffer hardware sono buffer riservati in modo esplicito a una porta e non sono influenzati dal processo DTS. Poiché i buffer rigidi sono garantiti, la somma dei buffer rigidi totali allocati alle porte non supera mai il segmento PBC dedicato a questi buffer rigidi.
I meccanismi che governano la scala attiva del soft buffer sono noti come DTS (Dynamic Threshold and Scale), descritti nel white paper sulla QoS di Catalyst serie 9000.
Le dimensioni dei segmenti PBC dedicati ai buffer hardware e soft della coda cambiano in modo dinamico durante la configurazione del sistema e possono essere visualizzati come AQM GlobalSoftLimit e GlobalHardLimit in questo output:
C9500#show platform hardware fed active qos queue stats interface twe1/0/1
----------------------------------------------------------------------------------------------
AQM Global counters
GlobalHardLimit: 18072 | GlobalHardBufCount: 0
GlobalSoftLimit: 37224 | GlobalSoftBufCount: 0
C9500#show platform hardware fed active qos queue config interface tw1/0/1 Asic:0 Core:1 DATA Port:20 GPN:101 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 160 - 167 DrainFast:Disabled PortSoftStart:2 - 4320 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 2 480 3 1920 16 960 0 0 4 5760 En <--- default configuration has a mix of hard buffer and soft buffer in queue 0 1 1 0 0 4 2880 16 1440 8 720 4 5760 En <--- default configuration has two queues so some buffers are seen in queue 1
<snip>
C9500(config)#policy-map test
C9500(config-pmap)#class class-default
C9500(config-pmap-c)#priority level 1 <--- Priority level 1 queue configuration on first queue, which is queue 0 in the next output
C9500(config-pmap-c)#exit
C9500(config-pmap)#exit
C9500(config)#int tw1/0/1
C9500(config-if)#service-policy output test
C9500(config-if)#end
C9500#show platform hardware fed active qos queue config interface twe1/0/1
Asic:0 Core:1 DATA Port:20 GPN:101 LinkSpeed:0x12
AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 160 - 167
DrainFast:Disabled PortSoftStart:4 - 1800 BufferSharing:Disabled
DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable
----- -------- -------- -------- -------- --------- -------
0 1 4 1200 7 1200 0 0 0 0 3 2400 En <--- Hardmax increased to 1200 from 480 in queue 0, softmax reduced to 1200 from 1920
1 1 0 0 0 0 0 0 0 0 3 2400 En <--- queue 1 now no longer has any values, as no second queue is configured
C9500#show platform hardware fed active qos queue stats interface twe1/0/1
----------------------------------------------------------------------------------------------
AQM Global counters
GlobalHardLimit: 18792 | GlobalHardBufCount: 0 <--- GlobalHardLimit increased to 18792 from 18072, or by 720
GlobalSoftLimit: 36504 | GlobalSoftBufCount: 0 <--- GlobalSoftLimit decreased from 37224 to 36504, or by 720
Nota: notare l'aumento di GlobalHardLimit e la diminuzione proporzionale di GlobalSoftLimit.
Inoltre, quando si configura il livello di priorità 1, il softmax per quella coda viene impostato in modo statico in modo da essere esattamente uguale al hardmax. È possibile modificare solo il buffer fisso per una coda con livello di priorità 1.
La modifica in GlobalHardLimit e GlobalSoftLimit è uguale a 720. Questa operazione equivale anche alla modifica apportata all'hardmax dopo la configurazione.
Gli scenari illustrati in questo documento spiegano come calcolare e prevedere le allocazioni softmax e hardmax in più configurazioni di mappe delle policy.
Un valore di buffer finale delle code è in parte una funzione di un valore di base che viene prima allocato tra le code. Questo valore viene quindi moltiplicato in seguito nel caso di buffer soft.
I fattori di moltiplicazione, in combinazione con altri comportamenti impliciti, rendono la determinazione di un valore finale per una determinata coda, con una determinata configurazione, una sfida.
Il primo passaggio per chiarire l'allocazione del buffer della coda risultante consiste nel determinare il valore del buffer di base.
A tale scopo, utilizzare una coda di priorità, che riceve il buffer hardware direttamente proporzionale al numero di code o al rapporto di buffer della coda configurato.
Con una configurazione specifica, è possibile derivare in modo esplicito la quantità di buffer di base allocata a una determinata velocità della porta.
Configurare e assegnare tutto il buffer a una singola coda non moltiplicata (una coda di livello di priorità 1)
In questo esempio, la classe class-default viene utilizzata per far corrispondere tutto il traffico, poiché non sono configurate altre classi.
Switch(config)#policy-map test1
Switch(config-pmap)#class class-default
Switch(config-pmap-c)#priority level 1 <--- Assign hard buffer to the port, which is not affected by multipliers
Switch(config-pmap-c)#queue-buffers ratio 100 <--- Assign all buffers to this queue only
La configurazione dell'esempio precedente effettua le seguenti azioni:
Il rapporto buffer coda 100 alloca 100/100 o il 100% del buffer di base disponibile per questa coda/classe.
In una mappa dei criteri con più classi, non è possibile allocare il 100% del buffer a una singola classe. È necessario allocare almeno 1/100 o 1% a qualsiasi classe.
In un criterio con una sola classe, è possibile allocare tutto il buffer ad essa.
Come indicato in precedenza, una coda con priorità ottiene i buffer hardware con la distribuzione del buffer di base in base al rapporto di coda-buffer configurato. Un buffer fisso non è soggetto ad alcun moltiplicatore.
L'hard buffer è osservato negli output sotto una colonna intitolata Hardmax.
Ora si dispone di una singola classe di traffico con buffer non soggetti ad alcun moltiplicatore. In questo modo, è possibile derivare esplicitamente l'allocazione del buffer di base per questa velocità della porta (e solo questa velocità della porta su questa piattaforma, altre sono diverse), perché il buffer di base e il valore hardmax sono uguali.
Buffer di base = ?
Rapporto coda 1 = 100/100 = 1
Hardmax per questa coda = Buffer base x Rapporto coda 1
X = Y x 1
X / 1 = Y
X = Y
X = Y = Hardmax = buffer di base = 1200 (vedere Esempio 2).
In questo esempio, il test1 della mappa dei criteri viene applicato a un'interfaccia come criterio del servizio di output
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test1 <--- service policy that assigns all buffer to the first queue, as a priority queue 1
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 1800 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 4 1200 7 1200 0 0 0 0 3 2400 En <--- hardmax 1200 - the maximum amount of buffer this port can use without multiplication 1 1 0 0 0 0 0 0 0 0 3 2400 En 2 1 0 0 0 0 0 0 0 0 3 2400 En 3 1 0 0 0 0 0 0 0 0 3 2400 En 4 1 0 0 0 0 0 0 0 0 3 2400 En 5 1 0 0 0 0 0 0 0 0 3 2400 En 6 1 0 0 0 0 0 0 0 0 3 2400 En 7 1 0 0 0 0 0 0 0 0 3 2400 En
<snip>
Come illustrato, il valore hardmax per questa coda di priorità con il 100% del buffer allocato è 1200.
Poiché hardmax è un valore completamente non moltiplicato/non scalato e il 100% del buffer è configurato per questa coda, l'allocazione base del buffer per questo modello specifico di switch, versione software e velocità specifica della porta è 1200.
Le altre velocità delle porte su questo stesso switch e su altri modelli di switch alla stessa velocità delle porte ricevono allocazioni del buffer di base diverse. Questa allocazione di base non è configurabile dall'utente e deve essere derivata tramite osservazione.
Per gli scenari riportati di seguito, l'uso dello switch, del software e della velocità delle porte è lo stesso. Quindi, tutti presuppongono un'allocazione di base di 1200 per i calcoli per determinare l'allocazione finale del buffer.
Nota: anche il valore softmax nell'esempio precedente è 1200.
In base alla progettazione, una coda di livello di priorità 1 ha softmax uguale esattamente al suo hardmax. Questa opzione è destinata e non configurabile dall'utente.
Inoltre, questo caso specifico di allocazione softmax non è influenzato dai moltiplicatori softmax mostrati più avanti. Solo una coda di livello di priorità 1 presenta questo comportamento per softmax, che è previsto.
In questo scenario, viene aggiunta una coda aggiuntiva. Questa coda non utilizza il livello di priorità 1, quindi softmax si adatta con i moltiplicatori.
Un moltiplicatore è configurato dall'utente e l'altro un moltiplicatore nascosto/non configurabile.
Combinare questi moltiplicatori con il buffer di base derivato per questa porta, in questo caso 1200 come nello scenario 1.
Algoritmo:
Rapporto coda corrente = rapporto buffer coda per la coda / classe da prevedere
Moltiplicatore nascosto = 400%
Moltiplicatore utente = Valore percentuale configurato in qos queue-softmax-moltiplicator <percentuale>. Il valore predefinito è 100%
Softmax = ( Buffer base x (Rapporto coda corrente / 100)) x Moltiplicatore nascosto x (Moltiplicatore utente / 100)
9500H(config)#policy-map test2
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 50 <-- class 1 / first queue gets 50% of base buffer
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 100 <-- required configuration due to priority queue, can be ignored for this example
9500H(config-pmap-c)# queue-buffers ratio 50 <-- class 2 / first queue gets 50% of base buffer
Riepilogo dei valori:
Determinare l'allocazione del buffer di classe 1:
Poiché class1 è una coda di priorità, riceve hardmax (buffer rigido) e un caso speciale di softmax non influenzato da moltiplicatori.
Classe1 hardmax = (Buffer base x Rapporto coda corrente(classe1) / 100)
Classe1 hardmax = 1200 x (50/100) = 600 - a causa di un caso speciale di una coda di priorità, arrestare tutti i calcoli matematici, assegnare il risultato a hardmax. Softmax equivale ad Hardmax come regola per il livello di priorità 1.
Determinare l'allocazione del buffer predefinito per classe:
Classe-default = (Buffer base x (Rapporto coda corrente (classe-default / 100)) x Moltiplicatore nascosto x (Moltiplicatore utente / 100)
Class class-default = [
[buffer di base] 1200 x [rapporto coda corrente] (50/100) = 600
[risultato precedente] 600 x [moltiplicatore nascosto] 4 x [moltiplicatore utente] (100/100) = 2400
]
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test2 <-- apply the policy
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 3600 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 1 4800 En <-- Hardmax is 600 as predicted, Softmax is set equal to Hardmax due to priority level 1 1 1 0 0 10 2400 16 1200 8 600 1 4800 En <-- Softmax is 2400 as predicted
<snip>
Risultato finale: Q0 - Hardmax: 600 Softmax: 600. Q1 - Softmax: 2.400
Questo scenario inizia in modo analogo allo scenario 2, con la differenza che ora è possibile configurare qos queue-softmax-multiplier 1200.
In questo modo i buffer softmax nella configurazione corrente vengono moltiplicati per 1200% o per un fattore di 12.
Riepilogo dei valori:
Determinare l'allocazione del buffer di classe 1:
Poiché class1 è una coda di priorità, riceve hardmax (buffer rigido) e un caso speciale di softmax non influenzato da moltiplicatori.
Classe1 hardmax = (Buffer base x Rapporto coda corrente(classe1) / 100)
Classe1 hardmax = 1200 x (50/100) = 600 - a causa di un caso speciale di una coda di priorità, arrestare tutti i calcoli matematici, assegnare il risultato a hardmax. Softmax equivale ad Hardmax come regola per il livello di priorità 1.
Determinare l'allocazione del buffer predefinito per classe:
Classe-default = (Buffer base x (Rapporto coda corrente (classe-default / 100)) x Moltiplicatore nascosto x (Moltiplicatore utente / 100)
Class class-default =[
[buffer di base] 1200 x [rapporto coda corrente] (50/100) = 600
[risultato precedente] 600 x [moltiplicatore nascosto] 4 x [moltiplicatore utente] (1200/100) = 28800
]
Configurare qos queue-softmax-multiplier 1200 e osservare le modifiche apportate a softmax (softmax è un valore massimo del buffer per la coda, ridimensionato in modo dinamico in base all'utilizzo complessivo corrente del buffer):
9500H(config)#qos queue-softmax-multiplier 1200
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:3 - 31500 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 5 600 0 0 0 0 6 42000 En <-- Queue 0 does not change as its configured with priority level 1 1 1 0 0 6 28800 1 900 1 900 6 42000 En <-- Softmax increases by 12x to 28800 from 1200 due to queue-softmax-multiplier 1200
<snip>
Risultato finale: Q1 - Hardmax: 600, Softmax: 600. Q2 - Softmax: 2.800
In questo scenario, sono configurate cinque code, ma solo quattro hanno il rapporto dei buffer di coda definito in modo esplicito. Il buffer allocato a queste code è lo stesso degli esempi precedenti.
La coda non configurata riceve la differenza tra la somma di tutti i buffer di coda configurati e 100.
Somma dei rapporti configurati in modo esplicito = (rapporto buffer Q0) + (rapporto buffer Q1) ... (rapporto buffer finale) - Sugli switch Catalyst serie 9000 sono supportate fino a 8 code, pertanto è possibile aggiungere fino a 8 rapporti
Rapporto implicito rimanente = (100 - Somma dei rapporti configurati in modo esplicito).
Rapporto implicito rimanenti è il valore assegnato a una coda per la quale non è configurato il rapporto dei buffer della coda.
Mapping dei criteri in uso per questo scenario:
9500H(config)#policy-map test3
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 20
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10 <-- rest of queues have an explicit queue-buffers ratio
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 40
Riepilogo dei valori:
Calcola il rapporto buffer della coda che rimane:
Rapporto implicito rimanente = (100 - Somma dei rapporti configurati in modo esplicito).
100 - (20) - (10) - (10) - (50) = 20
Rapporto coda corrente(classe2) = 20
Calcola allocazione buffer coda finale
Classe1 = [Buffer base] 1200 x [Rapporto coda corrente(classe1)] (20/100) = 240 - Coda priorità, nessun ulteriore calcolo
Classe2 = [
[Buffer base] 1200 x [Rapporto coda corrente(classe2)] (10/100) = 240 - Allocazione buffer base per questa coda, ma deve essere moltiplicato per ottenere softmax per una coda non prioritaria
[Allocazione buffer di base per questa coda] 120 x [Moltiplicatore nascosto] 4 x [Moltiplicatore utente] (100/100) = 960
]
Ripetere per le code rimaste:
Classe 3 = [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
Classe 4 = [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
Class class-default = [
1200 x 40/100 = 480
600 x 4 x (100/100) = 1920
]
Risultato della mappa dei criteri test3 applicata rispetto alla previsione:
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test3
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 2880 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 8 240 0 0 0 0 6 3840 En 1 1 0 0 9 960 16 480 8 240 6 3840 En <-- queue without queue buffers ratio configured receives any leftover ratio, as predicted 2 1 0 0 11 480 16 240 8 120 6 3840 En 3 1 0 0 11 480 16 240 8 120 6 3840 En 4 1 0 0 4 1920 16 960 8 480 6 3840 En
<snip>
Risultato finale: Q0 - Hardmax: 240, Softmax: 240. Q1 - Softmax: 960, Q2 - Softmax: 480, Q3 - Softmax: 480, Q4 - Softmax: 480
In questo scenario, vengono configurate cinque code e per due code non viene configurato il rapporto dei buffer delle code.
Per determinare l'allocazione del buffer, continua la stessa logica dello scenario 2, ma è necessario anche dividere il valore di Percentuale implicita rimanente per il numero totale di code implicite / code che non hanno il rapporto coda-buffer
Mapping dei criteri in uso per questo scenario:
9500H(config)#policy-map test4
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 20
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 40
Riepilogo dei valori:
Calcola il rapporto buffer della coda che rimane:
Rapporto implicito rimanente = (100 - Somma dei rapporti configurati in modo esplicito).
Numero di code implicite = 2 (per la classe 2 e la classe 3 non è definito alcun rapporto coda-buffer)
Somma dei rapporti configurati = 20+40+10 = 7
Rapporto implicito rimasto = 100 - 70 = 30
Allocazione proporzioni coda implicita = [Rapporto implicito rimanente] 30 / [Numero di code implicite] 2 = 15
Calcola allocazione buffer coda finale:
Classe1 =
[Buffer base] 1200 x [Rapporto coda corrente(classe1)] (20/100) = 240 - Coda priorità, nessun ulteriore calcolo
Classe2 =
[Buffer di base] 1200 x [Allocazione proporzioni coda implicita] (15/100) = 180 - Poiché la classe 2 non ha una proporzione definita coda-buffer, il resto della proporzione coda-buffer dalle code esplicite viene condiviso tra le code implicite.
[Allocazione buffer di base per questa coda] 180 x [Moltiplicatore nascosto] 4 x [Moltiplicatore utente] (100/100) = 720
Ripetere per le code rimaste:
Classe 3 = [
1200 x 15/100 = 180
120 x 4 x (100/100) = 720
]
Classe 4 = [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
Class class-default = [
1200 x 40/100 = 480
600 x 4 x (100/100) = 1920
]
Risultato della mappa dei criteri test4 applicata rispetto alla previsione:
9500H(config)#interface tw1/0/3
9500H(config-if)#service-policy output test4
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 2880 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 8 240 0 0 0 0 6 3840 En 1 1 0 0 9 720 16 360 8 180 6 3840 En <-- queue 1 and 2 were not configured with queue-buffers ratio 2 1 0 0 9 720 16 360 8 180 6 3840 En <-- queue 1 and 2 get an equal share of leftover buffer ratio 3 1 0 0 11 480 16 240 8 120 6 3840 En 4 1 0 0 4 1920 16 960 8 480 6 3840 En
<snip>
Nota: se il risultato dell'allocazione del rapporto di coda Implicito non è un numero intero, non è possibile ottenere una condivisione uguale. Il risultato viene arrotondato per eccesso per le code precedenti nella mappa dei criteri e per difetto per le code successive. La somma finale del rapporto di buffer della coda allocato rimane 100, ma le code implicite non sempre ottengono la stessa allocazione a causa del requisito del risultato integer appena descritto.
In questo scenario, vengono configurate cinque code, tutte con il rapporto code-buffer. La somma totale del rapporto tra coda e buffer nelle classi è inferiore a 100.
In questo caso, il rapporto del buffer non allocato viene distribuito uniformemente tra le classi.
Analogamente allo scenario precedente, se il risultato diviso del rapporto buffer coda rimasta non è un numero intero, l'allocazione finale per ogni coda viene arrotondata per eccesso o per difetto e aggiunta al rapporto buffer coda configurato.
Mapping dei criteri in uso per questo scenario:
9500H(config)#policy-map test5
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 12
Riepilogo dei valori:
Somma dei rapporti configurati = 10 + 10 + 10 + 10 + 10 + 12 = 52
Rapporto buffer rimanente = 100% - 52% = 48%
[Rapporto buffer rimanente] 48% / [Numero totale di code] 5 = 9,6% aggiunto per coda - Non si tratta di un numero intero, quindi l'applicazione finale alle code deve essere arrotondata per eccesso o per difetto per ogni coda
Per ottenere il numero di buffer della coda finale utilizzato dal sistema, è necessario aggiungere 9 o 10 al rapporto dei buffer della coda già configurato.
Alle classi superiori nella mappa dei criteri viene assegnato il valore arrotondato 10. Alle classi inferiori nella mappa dei criteri viene assegnato il valore arrotondato per difetto, ovvero 9.
Calcola allocazione buffer coda finale
Rapporto buffer residuo = 48
Class1 = [Buffer base] x ([Rapporto coda corrente(class1) + Valore arrotondato per eccesso del rapporto buffer condiviso rimasto)]
Classe1 = 1200 x ((10% + 10%)/100) = 240 - coda priorità, nessun ulteriore calcolo
Rapporto buffer rimanente = (48 - 10) = 38
Class2 = [Buffer di base] x ([Rapporto coda corrente(class2) + Valore arrotondato per eccesso del rapporto buffer condiviso rimasto)]
Classe2 = 1200 x ((10% + 10%)/100) = 240 - Continuare a moltiplicare per i moltiplicatori di utente e di sistema poiché non si tratta di una coda di priorità
Class2 = [allocazione buffer di base per la coda] 240 x [Moltiplicatore nascosto] 4 x [Moltiplicatore utente] (100/100) = 960 - risultato softmax per la coda
Rapporto buffer residuo = (38 - 10) - 28
Ripetere per le code rimaste:
Classe 3 = [
1200 x ((10+10)/100) = 240
120 x 4 x (100/100) = 960
]
Rapporto buffer rimanente = (28 - 10) = 18
Classe 4 = [
1200 x ((10+9)/100) = 240
120 x 4 x (100/100) = 912
]
Rapporto buffer rimanente = 9
Class class-default= [
1200 x ((12+9)/100) = 252
120 x 4 x (100/100) = 1008
]
Rapporto buffer residuo = 0
Risultato della mappa dei criteri test5 applicata rispetto alla previsione:
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 1512 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 9 240 0 0 0 0 6 2016 En 1 1 0 0 10 960 16 480 8 240 6 2016 En 2 1 0 0 10 960 16 480 8 240 6 2016 En 3 1 0 0 11 912 16 456 8 228 6 2016 En 4 1 0 0 12 1008 16 504 8 252 6 2016 En
<snip>
In questo scenario, una classe in una mappa dei criteri viene configurata con il livello di priorità 2.
A differenza del livello di priorità 1, in cui softmax non è influenzato dai moltiplicatori ed è impostato su hardmax, il livello di priorità 2 consente di moltiplicare softmax mentre ha anche un'allocazione hard buffer (hardmax).
Mapping dei criteri in uso per questo scenario:
9500H(config)#policy-map test6
9500H(config-pmap)#class class1
9500H(config-pmap-c)#priority level 1
9500H(config-pmap-c)#queue-buffers ratio 50 <-- 50 / 50 split between both queues
9500H(config-pmap-c)#class class-default
9500H(config-pmap-c)#priority level 2 <-- Priority level 2 in use now
9500H(config-pmap-c)#queue-buffers ratio 50 <-- 50 / 50 split between both queues
Risultato della mappa dei criteri test6 applicata:
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 3600 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 1 4800 En <-- Softmax is equal to hardmax 1 1 5 600 10 2400 16 1200 0 0 1 4800 En <-- Softmax is multiplied by Hidden Multiplier (400%) and User Multiplier (100% default)r
<snip>
Nell'output mostrato in precedenza, la seconda coda softmax ha 4 softmax della prima coda. Ciò è dovuto al fatto che il livello di priorità 1 softmax non è influenzato in modo specifico dai moltiplicatori softmax di sistema, mentre il livello di priorità 2 è.
Se si configura un moltiplicatore softmax dell'utente, viene interessata solo la coda di livello di priorità 2:
9500H(config)#qos queue-softmax-multiplier 200
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 7200 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 9600 En <--- priority-level 1 queue unaffected by softmax multiplier 1 1 5 600 10 4800 8 1200 0 0 5 9600 En <--- User multiplier increased to 200%, softmax for this queue doubles
<snip>
La configurazione del limite di coda influisce sull'allocazione finale del buffer della coda
Il meccanismo principale per influenzare l'allocazione del buffer della coda è la configurazione del rapporto buffer della coda aggiunta per coda in una mappa dei criteri MQC.
Tuttavia, l'allocazione del buffer della coda è influenzata da altre configurazioni.
Queue-limit definisce le soglie in base alle quali viene scartata una particolare classe di traffico (tramite Weighted Tail Drop, WTD), che non sono descritte nel presente documento.
In una circostanza specifica, queue-limit modifica il moltiplicatore nascosto di sistema per le code di buffer soft, che influisce sull'allocazione complessiva del buffer soft per la coda a cui viene applicato il limite di coda.
Innanzitutto, è necessario tenere presente che il limite di coda può essere configurato fino a 3 volte per classe. Questo definisce fino a 3 soglie per WTD su base DSCP o CoS.
Nell'output successivo, vengono definite solo due soglie.
Applicare due limiti di coda a una mappa dei criteri:
9500H(config)#policy-map test7
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 50
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# priority level 2
9500H(config-pmap-c)# queue-buffers ratio 50
9500H(config-pmap-c)# queue-limit dscp af11 percent 10 <-- Tells system to drop af11 traffic at 10% queue utilization
9500H(config-pmap-c)# queue-limit dscp af12 percent 50 <-- Tells system to drop af12 traffic at 50% queue utilization
Osservare i risultati dell'allocazione dei buffer:
9500H(config-pmap-c)#interface tw1/0/3
9500H(config-if)#service-policy output test7
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 7200 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 9600 En 1 1 5 600 10 4800 8 1200 0 0 5 9600 En <--- final result for queue that contains 2 queue-limit statements is 4800
<snip>
Nell'esempio successivo, una terza configurazione del limite di coda viene aggiunta a class-default.
Osservare i risultati dell'allocazione dei buffer:
9500H(config)#policy-map test7
9500H(config-pmap)#class class-default
9500H(config-pmap-c)#queue-limit dscp af13 percent 100
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 1800 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 2400 En 1 1 5 600 10 1200 32 1200 0 0 5 2400 En <-- Softmax reduces by 400% from previous example
<snip>
Quando si aggiunge una terza configurazione per il limite di coda a una coda, il moltiplicatore nascosto del soft buffer del sistema (400%) viene disattivato per quella coda. Tuttavia, tale coda rispetta ancora un utente configurato qos queue-softmax-multiplier <percentuale>.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
3.0 |
24-May-2024 |
Certificazione |
1.0 |
02-Dec-2022 |
Versione iniziale |