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 offre una panoramica del tuning del buffer basato sulle piattaforme correnti e fornisce informazioni generali sul comando show buffers.
Nessun requisito specifico previsto per questo documento.
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.
Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.
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 | 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". |
nessuna memoria | 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 "nessuna 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 di 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 sono in fase di commutazione.
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". I guasti possono verificarsi, ma questi dovrebbero stabilizzarsi dopo un po'. Il router crea o ritaglia 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.
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.
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. Di conseguenza, 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.
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.
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 sul 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, in quanto 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 disponibile e quindi creare nuovi buffer.
Burst rapido: con i burst di traffico rapido, il router non ha tempo sufficiente per creare nuovi buffer, quindi è necessario 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à min-free (burst lento). Se il contatore degli errori aumenta, ma non il contatore di creazione (burst rapido), aumentare il valore permanente.
È 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:
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
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.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
14-Dec-2001 |
Versione iniziale |