Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Convenzioni

Panoramica generale

Piattaforme low-end (Cisco serie 1600, 2500 e 4000 Router)

Piattaforme di fascia alta (processori di routing, processori di switching, processori di switching in silicio e processori di routing/switching)

Piattaforme basate su particelle

Regolazione buffer

Prenotazione buffer infrastruttura

Perdite buffer

Informazioni correlate

Introduzione

Questo documento offre una panoramica del tuning del buffer basato sulle piattaforme correnti e fornisce informazioni generali sul comando show buffers.

Prerequisiti

Requisiti

Nessun requisito specifico previsto per questo documento.

Componenti usati

Il documento può essere consultato per tutte le versioni software o 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.

Convenzioni

Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.

Panoramica generale

La regolazione del buffer consente di modificare il modo in cui un router alloca i buffer dalla sua memoria disponibile e aiuta a prevenire la perdita di pacchetti durante un burst temporaneo di traffico.

Per determinare se il router deve sottoporre a tuning il proprio buffer, usare i comandi show interfaces e show buffer.

Se si dispone dell'output dei comandi show interfaces e show buffer o dell'output del comando show technical-support (dalla modalità di abilitazione) dal dispositivo Cisco, è possibile utilizzare Cisco CLI Analyzer per visualizzare i potenziali errori e correggerli. Per utilizzare Cisco CLI Analyzer, è necessario essere un cliente registrato, aver eseguito l'accesso e avere JavaScript abilitato.

Di seguito è riportato un esempio dell'output del comando show interfaces:

Output queue 0/40, 1041 drops; input queue 0/75, 765 drops

35252345 packets input, 547082589 bytes, 940 no buffer

- Le perdite di input e output sono dovute al sovraccarico delle code di input e output causato da una frammentazione del traffico. Ciò non è correlato a un problema del buffer, ma piuttosto a una limitazione delle prestazioni della commutazione di processo.

- "No buffer" rappresenta il numero di pacchetti scartati perché non è disponibile un buffer libero per copiare il pacchetto.

Utilizzando il comando show buffers, verificare le dimensioni del buffer corrispondenti alla MTU (Maximum Transmission Unit) dell'interfaccia:

Middle buffers, 600 bytes (total 150, permanent 25):

147 in free list (10 min, 150 max allowed)

61351931 hits, 137912 misses, 51605 trims, 51730 created

91652 failures (0 no memory)

La tabella seguente spiega l'output:

Parola chiave

Descrizione

totale

Numero totale di buffer nel pool, inclusi i buffer utilizzati e non utilizzati.

permanente

Numero permanente di buffer allocati nel pool. Questi buffer sono sempre nel pool e non possono essere eliminati.

nell'elenco di disponibilità

Numero di buffer attualmente disponibili nel pool e disponibili per l'utilizzo.

min

Numero minimo di buffer che il router deve tentare di mantenere nell'elenco di disponibilità. Se il numero di buffer "nell'elenco di disponibilità" è inferiore al valore "min", il router deve tentare di creare più buffer per quel pool.

massimo consentito

Numero massimo di buffer consentiti nell'elenco di disponibilità. Se il numero di buffer "nell'elenco di disponibilità" è maggiore del valore "massimo consentito", il router deve tentare di tagliare i buffer dal pool.

accessi

Numero di buffer allocati correttamente dall'elenco di disponibilità.

mancati riscontri

Il numero di volte in cui un buffer è stato richiesto, ma nessun buffer è disponibile nell'elenco di disponibilità o quando ci sono meno di "min" buffer nell'elenco di disponibilità.

ritagli

Il numero di buffer rimossi dal pool quando il numero di buffer "nell'elenco di disponibilità" supera il numero di buffer "massimo consentito".

creato

Il numero di buffer creati nel pool quando il numero di buffer "nell'elenco di disponibilità" è inferiore a "min".

memoria esaurita

Il numero di volte in cui il router ha tentato di creare nuovi buffer, ma l'operazione non è riuscita a causa di memoria disponibile insufficiente nel router.

errori

Numero di errori durante la concessione di un buffer a un richiedente in un tempo di interrupt (ricordare che il router può creare nuovi buffer a livello di commutazione di processo, in modo che l'errore non si verifichi a meno che non ci sia "memoria"). Il numero di "errori" rappresenta il numero di pacchetti che sono stati scartati a causa di mancanza di buffer.

Modalità di gestione dei buffer da parte del router

Il numero di buffer "nell'elenco di disponibilità" è il numero di buffer disponibili. Quando arriva una richiesta buffer, viene allocato un buffer dall'elenco "in free list".

I buffer IOS vengono utilizzati per due motivi principali:

- Gestire il traffico che termina sul router.

- Quando i pacchetti vengono elaborati, cambia.

Se non sono disponibili buffer e l'opzione di commutazione veloce è abilitata, si verifica un errore del buffer e il pacchetto viene scartato. Quando il processo di gestione del pool di buffer rileva un errore del buffer, "crea" un nuovo buffer per evitare errori futuri.

Il router non crea un nuovo buffer se il numero "nell'elenco di disponibilità" è uguale al valore "massimo consentito". Se la memoria del router non è sufficiente per creare un nuovo buffer, il messaggio viene registrato come "nessuna memoria". Se il numero "nell'elenco di disponibilità" è maggiore del numero "massimo consentito", il router "taglia" alcuni buffer in eccesso.

Le uniche fonti di preoccupazione sono il numero di "fallimenti" e la "mancanza di memoria". Possono verificarsi degli errori, ma questi dovrebbero stabilizzarsi dopo un po'. Il router crea o taglia i buffer in base alle necessità per stabilizzare il numero di errori. Se il numero di errori continua ad aumentare, potrebbe essere necessario ottimizzare il buffer.

Se la memoria disponibile non è sufficiente per creare nuovi buffer, verificare la presenza di una perdita di buffer o di un problema di memoria più generale. I buffer non vengono creati nel percorso di commutazione veloce, quindi se il router tenta di commutare rapidamente un pacchetto e non è disponibile alcun buffer, il pacchetto viene scartato e viene segnalato un errore. Alla successiva esecuzione di Gestione pool di buffer verrà creato un nuovo buffer.

Piattaforme low-end (Cisco serie 1600, 2500 e 4000 Router)

I pacchetti a commutazione rapida e i pacchetti a commutazione di contesto condividono gli stessi buffer. Questi buffer si trovano nella memoria condivisa. La memoria condivisa si trova nella RAM dinamica (DRAM) nei router Cisco serie 1600 e 2500 o nella RAM condivisa (SRAM) per i router Cisco serie 4000, 4500 e 4700.

Le prime righe del comando show memory indicano la quantità di memoria condivisa in uso, la quantità di memoria attualmente utilizzata e il punto più basso. Quando un pacchetto non può essere commutato rapidamente, un puntatore al pacchetto viene inserito nella coda di input di commutazione del processo, ma il pacchetto stesso non viene copiato.

Di seguito viene riportato l'output del comando show buffer su una piattaforma di fascia bassa (Cisco 4500):

router# show buffers

Buffer elements:

471 in free list (500 max allowed)

870696495 hits, 0 misses, 0 created

Public buffer pools:

Small buffers, 104 bytes (total 50, permanent 50):

49 in free list (20 min, 150 max allowed)

27301678 hits, 23 misses, 20 trims, 20 created

0 failures (0 no memory)

Middle buffers, 600 bytes (total 150, permanent 25):

147 in free list (10 min, 150 max allowed)

61351931 hits, 137912 misses, 51605 trims, 51730 created

91652 failures (0 no memory)

Big buffers, 1524 bytes (total 67, permanent 50):

67 in free list (5 min, 150 max allowed)

46293638 hits, 455 misses, 878 trims, 895 created

0 failures (0 no memory)

VeryBig buffers, 4520 bytes (total 96, permanent 10):

79 in free list (0 min, 100 max allowed)

11818351 hits, 246 misses, 98 trims, 184 created

243 failures (0 no memory)

Large buffers, 5024 bytes (total 10, permanent 0):

10 in free list (0 min, 10 max allowed)

4504003 hits, 873040 misses, 759543 trims, 759553 created

873040 failures (0 no memory)

Huge buffers, 18024 bytes (total 0, permanent 0):

0 in free list (0 min, 4 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Interface buffer pools:

TokenRing0 buffers, 4516 bytes (total 48, permanent 48):

0 in free list (0 min, 48 max allowed)

3099742 hits, 9180771 fallbacks

16 max cache size, 1 in cache

TokenRing1 buffers, 4516 bytes (total 48, permanent 48):

0 in free list (0 min, 48 max allowed)

335172 hits, 403668 fallbacks

16 max cache size, 16 in cache

Serial1 buffers, 1524 bytes (total 96, permanent 96):

63 in free list (0 min, 96 max allowed)

33 hits, 0 fallbacks

0 max cache size, 0 in cache

Serial2 buffers, 1524 bytes (total 96, permanent 96):

63 in free list (0 min, 96 max allowed)

701370936 hits, 268 fallbacks

0 max cache size, 0 in cache

Serial3 buffers, 1524 bytes (total 96, permanent 96):

63 in free list (0 min, 96 max allowed)

33 hits, 0 fallbacks

0 max cache size, 0 in cache

Serial0 buffers, 4546 bytes (total 96, permanent 96):

28 in free list (0 min, 96 max allowed)

346854 hits, 5377043 fallbacks

32 max cache size, 27 in cache

I pool di buffer di interfaccia vengono utilizzati dalle interfacce per l'input/output (I/O). Quando l'elenco di buffer liberi dell'interfaccia non contiene altri buffer, il router passa ai pool di buffer pubblici come fallback. Nessun risultato delle prestazioni per un fallback.

La memorizzazione nella cache è una manipolazione del software che accelera la disponibilità dei buffer per il codice del driver a livello di interrupt evitando un sovraccarico.

Nota: in genere, i buffer dell'interfaccia non devono essere ottimizzati.

Piattaforme di fascia alta (processori di routing, processori di switching, processori di switching in silicio e processori di routing/switching)

Di seguito è riportato l'output del comando show buffer su una piattaforma di fascia alta:

Router# show buffers

Buffer elements:

498 in free list (500 max allowed)

326504974 hits, 0 misses, 0 created

Public buffer pools:

Small buffers, 104 bytes (total 150, permanent 150):

140 in free list (30 min, 250 max allowed)

564556247 hits, 148477066 misses, 16239797 trims, 16239797 created

29356200 failures (0 no memory)

Middle buffers, 600 bytes (total 120, permanent 120):

116 in free list (20 min, 200 max allowed)

319750574 hits, 85689239 misses, 9671164 trims, 9671164 created

26050704 failures (0 no memory)

Big buffers, 1524 bytes (total 100, permanent 100):

98 in free list (10 min, 300 max allowed)

20130595 hits, 14796572 misses, 251916 trims, 251916 created

11813639 failures (0 no memory)

VeryBig buffers, 4520 bytes (total 15, permanent 15):

14 in free list (5 min, 300 max allowed)

22966334 hits, 3477687 misses, 13113 trims, 13113 created

2840089 failures (0 no memory)

Large buffers, 5024 bytes (total 12, permanent 12):

12 in free list (0 min, 30 max allowed)

849034 hits, 1979463 misses, 1028 trims, 1028 created

1979456 failures (0 no memory)

Huge buffers, 18024 bytes (total 6, permanent 5):

4 in free list (2 min, 13 max allowed)

338440 hits, 1693496 misses, 1582 trims, 1583 created

1640218 failures (0 no memory)

Pool di intestazioni

I pool di buffer pubblici si trovano nella DRAM e sono denominati buffer di sistema. La memoria condivisa sull'RSP (Route/Switch Processor) è chiamata MEMD (System Packet Memory) e consente 2 MB di memoria. Sul Route Processor (RP) e sullo Switch Processor (SP) (o Silicon Switch Processor - SSP), i buffer di sistema si trovano sull'RP, mentre il MEMD si trova sull'SP (o SSP).

Quando arriva un pacchetto, questo viene salvato in MEMD dal processore di interfaccia ricevente (ad eccezione del caso del Versatile Interface Processor - VIP). Se non può essere commutato rapidamente, l'intero pacchetto viene copiato in un buffer di sistema nella DRAM. Pertanto, i buffer visualizzati nel comando show buffers sono i buffer di sistema presenti nella memoria DRAM.

Il comando show controller bus visualizza i buffer dell'interfaccia in MEMD. Anche in questo caso, non è consigliabile regolare i buffer dell'interfaccia. Quando un pacchetto non può essere commutato rapidamente e viene copiato su un buffer di sistema, il pacchetto viene scartato e viene conteggiato un errore se non è disponibile alcun buffer di sistema.

Piattaforme basate su particelle

I router Cisco serie 3600 e 7200 utilizzano particelle. I buffer di interfaccia sono buffer atomici, chiamati particelle, nei quali i pacchetti vengono suddivisi. Quando un pacchetto non può essere commutato rapidamente, il router deve ricomporre il pacchetto in un buffer di sistema, perché il codice di commutazione del processo non può gestire le particelle.

Di seguito viene riportato l'output del comando show buffers su un Cisco 3600:

Router# show buffers

Buffer elements:

499 in free list (500 max allowed)

136440 hits, 0 misses, 0 created

Public buffer pools:

Small buffers, 104 bytes (total 50, permanent 50):

49 in free list (20 min, 150 max allowed)

4069435 hits, 141 misses, 73 trims, 73 created

52 failures (0 no memory)

Middle buffers, 600 bytes (total 25, permanent 25):

25 in free list (10 min, 150 max allowed)

628629 hits, 21 misses, 21 trims, 21 created

3 failures (0 no memory)

Big buffers, 1524 bytes (total 50, permanent 50):

50 in free list (5 min, 150 max allowed)

9145 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

VeryBig buffers, 4520 bytes (total 10, permanent 10):

10 in free list (0 min, 100 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Large buffers, 5024 bytes (total 0, permanent 0):

0 in free list (0 min, 10 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Huge buffers, 18024 bytes (total 0, permanent 0):

0 in free list (0 min, 4 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Interface buffer pools:

CD2430 I/O buffers, 1524 bytes (total 0, permanent 0):

0 in free list (0 min, 0 max allowed)

0 hits, 0 fallbacks

Header pools:

Header buffers, 0 bytes (total 265, permanent 256):

9 in free list (10 min, 512 max allowed)

253 hits, 3 misses, 0 trims, 9 created

0 failures (0 no memory)

256 max cache size, 256 in cache

Particle Clones:

1024 clones, 0 hits, 0 misses

Public particle pools:

F/S buffers, 256 bytes (total 384, permanent 384):

128 in free list (128 min, 1024 max allowed)

256 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

256 max cache size, 256 in cache

Normal buffers, 1548 bytes (total 512, permanent 512):

356 in free list (128 min, 1024 max allowed)

188 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

128 max cache size, 128 in cache

Private particle pools:

Ethernet0/0 buffers, 1536 bytes (total 96, permanent 96):

0 in free list (0 min, 96 max allowed)

96 hits, 0 fallbacks

96 max cache size, 64 in cache

Serial0/0 buffers, 1548 bytes (total 14, permanent 14):

0 in free list (0 min, 14 max allowed)

14 hits, 0 fallbacks

14 max cache size, 14 in cache

BRI0/0 buffers, 1548 bytes (total 14, permanent 14):

0 in free list (0 min, 14 max allowed)

14 hits, 0 fallbacks

14 max cache size, 14 in cache

BRI0/0:1 buffers, 1548 bytes (total 14, permanent 14):

0 in free list (0 min, 14 max allowed)

14 hits, 0 fallbacks

14 max cache size, 14 in cache

BRI0/0:2 buffers, 1548 bytes (total 14, permanent 14):

0 in free list (0 min, 14 max allowed)

14 hits, 0 fallbacks

14 max cache size, 14 in cache

TokenRing0/0 buffers, 1548 bytes (total 64, permanent 64):

0 in free list (0 min, 64 max allowed)

64 hits, 0 fallbacks

64 max cache size, 64 in cache

4 buffer threshold, 0 threshold transitions

I pool di particelle privati sono utilizzati dalle interfacce e non devono essere sottoposti a tuning. Quando non è disponibile alcun buffer nell'elenco di disponibilità, il router torna ai pool di particelle pubblici.

I buffer di intestazione vengono utilizzati per registrare un elenco di tutte le particelle che appartengono a un pacchetto.

Nota: i buffer di sistema vengono utilizzati per la commutazione del processo. Su Cisco 3600, tutti questi buffer si trovano nella memoria I/O che si trova nella DRAM. È possibile specificare la quantità di memoria I/O utilizzando il comando iomem delle dimensioni della memoria. Su Cisco 7200, i pool di buffer di particelle di interfaccia per le schede di porta a larghezza di banda elevata (PA) si trovano in SRAM.

Regolazione buffer

Di seguito viene riportato un esempio del comando show buffers:

Middle buffers, 600 bytes (total 150, permanent 25):

147 in free list (10 min, 150 max allowed)

61351931 hits, 137912 misses, 51605 trims, 51730 created

91652 failures (0 no memory)

In questo esempio, i buffer intermedi hanno molti errori. Non si tratta di un problema grave, in quanto rappresenta solo lo 0,1 % delle risposte positive. Questi numeri dovrebbero essere facilmente migliorati con una certa regolazione del buffer.

La regolazione del buffer viene effettuata solo quando i pacchetti non possono essere commutati CEF.

A seconda dell'architettura del router, i buffer sintonizzati in genere appartengono alla memoria di I/O (low-end) o alla memoria principale (high-end). Prima di regolare i buffer, verificare di disporre di sufficiente I/O libero o memoria principale usando le prime righe del comando show memory.

Di seguito sono riportati alcuni valori generali che è possibile utilizzare:

- permanente: prendere il numero totale di buffer in un pool e aggiungere circa il 20%.

- min-free: impostare min-free su circa il 20-30% del numero permanente di buffer allocati nel pool.

- max-free: impostare max-free su un valore maggiore della somma dei valori permanenti e minimi.

Nell'esempio di regolazione del buffer sopra riportato, è possibile immettere questi comandi nella modalità di configurazione globale:

buffers middle permanent 180

buffers middle min-free 50

buffers middle max-free 230

In genere, il software Cisco IOS® crea i buffer in modo dinamico, in modo che queste impostazioni siano corrette. Tuttavia, in caso di burst di traffico, il router potrebbe non disporre di tempo sufficiente per creare i nuovi buffer e il numero di errori potrebbe continuare ad aumentare. Utilizzare il comando buffers per modificare le impostazioni predefinite del pool di buffer. Verificare che le modifiche ai valori del buffer vengano apportate con cautela, poiché impostazioni non corrette del buffer possono influire sulle prestazioni del sistema. Per cancellare i contatori del buffer, ricaricare il router.

Esistono due tipi di picchi di traffico:

- Burst lento: In questo caso, il router ha tempo sufficiente per creare nuovi buffer. Aumentare il numero di buffer liberi da min. Utilizzando i buffer liberi, è possibile raggiungere il valore minimo e quindi creare nuovi buffer.

- Burst rapido: Con i picchi di traffico veloci, il router non ha tempo sufficiente per creare nuovi buffer, quindi è consigliabile utilizzare i buffer liberi. A tale scopo, modificare il numero di buffer permanenti.

Conclusione: Se il contatore di creazione aumenta dopo la regolazione iniziale, aumentare la velocità di min-free (burst lento). Se il contatore degli errori aumenta, ma non il contatore di creazione (burst rapido), aumentare il valore permanente.

Prenotazione buffer infrastruttura

È possibile immettere il comando fabric buffer-reserve per migliorare la velocità effettiva del sistema e riservare i buffer ASIC.

Questo comando è supportato sui seguenti moduli:

- WS-X6704-10GE

- WS-X6748-SFP

- WS-X6748-GE-TX

- WS-X6724-SFP

Questo comando non è supportato sui router Cisco serie 7600 configurati con Supervisor Engine 32.

fabric buffer-reserve [high | low | medium | value]

Attenzione: usare questo comando solo sotto la direzione di Cisco TAC.

Di seguito vengono riportate le circostanze comuni in cui questo comando è utile:

- Il protocollo di linea non è attivo per più interfacce

- Sovraccarichi visibili su più interfacce

- Le porte lasciano e si uniscono frequentemente a EtherChannel

- TestMacNotification ripetutamente non riuscito per le schede di linea con DFC

Perdite buffer

Di seguito è riportato un esempio dell'output del comando show buffers:

Big buffers, 1524 bytes (total 1556, permanent 50):

52 in free list (5 min, 150 max allowed)

43670437 hits, 5134 misses, 0 trims, 1506 created

756 failures (0 no memory)

Questo output indica una perdita di buffer nel pool di buffer di grandi dimensioni. Il router dispone di un totale di 1556 buffer di grandi dimensioni e solo 52 sono nell'elenco di disponibilità. Qualcosa sta usando tutti i buffer, e non li sta liberando. Per ulteriori informazioni sulle perdite di buffer, vedere Risoluzione dei problemi di perdita di buffer.

Informazioni correlate

- Risoluzione dei problemi relativi alla memoria

- Risoluzione dei problemi di perdita dei buffer

- Comandi di base per la gestione del sistema

- Modifica delle dimensioni del buffer di sistema

- Supporto tecnico – Cisco Systems