In questo documento viene spiegato perché il router segnala i messaggi di log relativi all'IPC e come risolvere il problema. Questo documento include anche una revisione della terminologia IPC.
Questo documento è utile per conoscere i seguenti argomenti:
Amministrazione router Cisco
IPC e la sua terminologia
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
Tutte le versioni software Cisco IOS® che supportano i router Cisco serie 12000, 1000, 7600 e 7500.
Cisco serie 12000, 10000, 7600 e 7500 Router.
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.
Fare riferimento a Cisco Technical Tips Conventions per ulteriori informazioni sulle convenzioni dei documenti.
Il modulo IPC (Inter-Process Communication) del software Cisco IOS fornisce un'infrastruttura di comunicazione tramite la quale i processi di un sistema distribuito possono interagire tra loro. Fornisce anche una comunicazione trasparente tra backplane, reti e memoria condivisa.
I servizi IPC consentono alle schede di linea (LC) e al processore di routing centrale (RP) di un sistema distribuito di comunicare tra loro mediante uno scambio di messaggi IPC inviati dal RP ai LC, nonché tra RP attivi e in standby. Questi messaggi includono comandi di configurazione e risposte a tali comandi, nonché "eventi" che devono essere segnalati da un LC all'RP.
Cisco serie 12000, Cisco serie 1000, Cisco serie 7600 e Cisco serie 7500 utilizzano un'architettura distribuita basata sui messaggi IPC. In rare condizioni, i router possono segnalare i seguenti messaggi di log relativi all'IPC:
Cisco serie 12000 - %IPC-3-NOBUFF: La cache dell'intestazione del messaggio IPC principale è stata svuotata
Cisco serie 7500 - %IPC_RSP_CBUS-3-NOBUF: Buffer IPC memd esauriti per trasmettere il messaggio IPC
Nota: l'IPC è usato anche sui Cisco serie 6400 e 7304.
Le terminologie IPC più comuni sono:
IPC - Inter-Process Communication.
Indirizzo IPC: parola a 32 bit composta da un ID del sedile a 16 bit e da un ID della porta a 16 bit.
IPC Client - Modulo software che utilizza servizi IPC.
Porta IPC: endpoint di comunicazione all'interno di IPC utilizzato come origine e destinazione di tutte le comunicazioni.
Sede IPC - Un posto IPC è un elemento di calcolo, ad esempio un processore, che può essere comunicato con l'aiuto di IPC. Una postazione IPC è dove risiedono i client e le porte IPC.
Sessione IPC - Una sessione IPC è un canale di comunicazione simplex attivo tra due porte IPC.
Tutte le comunicazioni che utilizzano IPC avvengono tra le porte IPC. Una porta è un endpoint di comunicazione in IPC. Ogni porta IPC è associata a un indirizzo logico denominato indirizzo IPC. L'IPC utilizza l'indirizzo IPC di una porta IPC come indirizzo del mittente quando invia messaggi IPC o come indirizzo di destinazione quando riceve messaggi IPC.
Gli indirizzi IPC vengono assegnati alle porte IPC dal gestore della postazione IPC locale. Un postazione è il processore su cui è in esecuzione il protocollo IPC. Un responsabile della sede è un processo che gestisce un elenco di porte IPC locali e un servizio di denominazione locale, nonché sessioni di comunicazione IPC aperte.
Quando si crea una porta IPC, il client IPC assegna un nome alla porta IPC. Altri client IPC possono quindi utilizzare un nome di porta quando fanno riferimento alla porta IPC appena creata. Un nome di porta è una stringa di caratteri costituita da un nome di posto e da una funzione o descrizione di porta.
Cisco IPC offre tre diversi livelli di affidabilità nella consegna a una porta: questa condizione viene definita quando la porta viene aperta.
Affidabilità: Il recapito del messaggio è garantito. In caso di errore, il recapito verrà ritentato.
Inaffidabile: La consegna è un tentativo estremamente impegnativo. Non vi è alcuna indicazione se la consegna non riesce.
Inaffidabilità con notifica: Il recapito del messaggio non è garantito. Tuttavia, il mittente riceve notifica dell'errore.
Il comando show ipc nodes visualizza le postazioni IPC presenti nel cosiddetto realm IPC.
Router#show ipc nodes There are 3 nodes in this IPC realm. ID Type Name Last Last Sent Heard 10000 Local IPC Master 0 0 1030000 RSP-CY RSP IPC card slot 3 7 7 1000000 RSP-CY RSP IPC card slot 0 10 10
Quando è presente un RP slave, il comando show ipc nodes elenca gli indirizzi RP slave, come mostrato nell'output di esempio relativo a un router Cisco serie 1000:
10k-2#show ipc nodes There are 5 nodes in this IPC realm. ID Type Name Last Last Sent Heard 10000 Local IPC Master 0 0 20000 UDP C10K Line Card slot 2/0 3 3 30000 UDP C10K Line Card slot 3/0 3 3 40000 UDP C10K Line Card slot 1/0 3 3 50000 Ethernet Slave 18 45
Dopo aver creato una porta IPC, un client IPC può registrare il proprio nome di porta con il servizio di denominazione globale controllato dal master IPC.
Una raccolta di postazioni IPC, che comunicano tra loro, è detta zona. Per ciascuna zona IPC, viene designata una singola postazione IPC Zone Manager o Master, o Master IPC abbreviato. Logicamente, tutte le connessioni IPC basate sul protocollo IPC sono connessioni punto-punto. Tutte le comunicazioni IPC tra i sedili sono in genere effettuate tra l'RP attivo e una scheda di linea, o RP in standby. È possibile la comunicazione da scheda di linea a scheda di linea.
Prima di scambiare messaggi IPC, un dispositivo deve creare porte locali e individuare porte di destinazione. Sebbene un dispositivo crei porte locali, queste porte non sono considerate porte di origine perché la comunicazione IPC è simplex. Quando l'RP desidera comunicare con un LC, prima apre una porta sul LC (il LC deve aver creato la porta e averla registrata con il master IPC - RP). Quando l'apertura ha esito positivo, può iniziare il normale traffico di messaggi IPC.
Nei Cisco serie 12000 e 7500, il processore di routing, un Gigabit Route Processor (GRP) o un Route Switch Processor (RSP), e le schede di linea intelligenti agiscono come endpoint IPC. Un "master IPC" controlla un gruppo di processori. Quando il router viene inizializzato, il dispositivo master IPC rileva gli endpoint IPC presenti sulle schede di linea del sistema. A tale scopo, il master IPC analizza tutti gli slot, identifica il tipo di controller e determina se il controller dispone di funzionalità IPC.
Utilizzare il comando show ipc ports per visualizzare queste porte. Su uno slave IPC, questo comando elenca le porte create sullo slave IPC specifico. Quando eseguito sul dispositivo master IPC, questo comando visualizza le porte create sul dispositivo master e le porte registrate dagli slave IPC (LC). Inoltre, il comando show ipc ports open elenca le porte aperte da questa postazione IPC. Di seguito è riportato un esempio di output:
router#show ipc ports There are 87 ports defined. Port ID Type Name 10000.1 unicast IPC Master:Zone 10000.2 unicast IPC Master:Echo 10000.3 unicast IPC Master:Control 10000.4 unicast IPC Master:Init port_index = 0 seat_id = 0x1020000 last sent = 0 last heard = 1 port_index = 1 seat_id = 0x1010000 last sent = 0 last heard = 1 port_index = 2 seat_id = 0x1040000 last sent = 0 last heard = 1 port_index = 3 seat_id = 0x1050000 last sent = 0 last heard = 1 port_index = 4 seat_id = 0x1060000 last sent = 0 last heard = 1 port_index = 5 seat_id = 0x1070000 last sent = 0 last heard = 1 port_index = 6 seat_id = 0x1080000 last sent = 0 last heard = 1 port_index = 7 seat_id = 0x1090000 last sent = 0 last heard = 1 port_index = 8 seat_id = 0x10A0000 last sent = 0 last heard = 1 port_index = 9 seat_id = 0x10B0000 last sent = 0 last heard = 1 port_index = 10 seat_id = 0x1030000 last sent = 0 last heard = 1 10000.5 unicast Remote TTY Server Port port_index = 0 seat_id = 0x1070000 last sent = 0 last heard = 2 port_index = 1 seat_id = 0x1010000 last sent = 0 last heard = 2 port_index = 3 seat_id = 0x1040000 last sent = 0 last heard = 2 port_index = 4 seat_id = 0x1050000 last sent = 0 last heard = 2 Port ID Type Name port_index = 5 seat_id = 0x1060000 last sent = 0 last heard = 3 port_index = 6 seat_id = 0x1080000 last sent = 0 last heard = 2 port_index = 7 seat_id = 0x1090000 last sent = 0 last heard = 2 port_index = 8 seat_id = 0x10A0000 last sent = 0 last heard = 2 port_index = 9 seat_id = 0x10B0000 last sent = 0 last heard = 2 [output omitted]
Il campo port_index è l'ID sessione utilizzato dall'IPC di destinazione quando elabora i messaggi in arrivo. Quando è presente un RP slave, il comando show ipc ports visualizza le informazioni sulla porta in standby, come mostrato nell'output di esempio seguente:
10k-2#show ipc ports There are 16 ports defined. Port ID Type Name 10000.1 Unicast IPC Master:Zone 10000.2 Unicast IPC Master:Echo 10000.3 Unicast IPC Master:Control 10000.4 Unicast Microcode Server 10000.5 Unicast RFS Server Port 10000.6 Unicast Remote File System Server Port 10000.7 Unicast Master : TTY Server Port port_index = 0 seat_id = 0x50000 last sent = 0 last heard = 0 10000.8 Unicast C10K Line Card API port_index = 0 seat_id = 0x20000 last sent = 0 last heard = 58521 port_index = 1 seat_id = 0x30000 last sent = 0 last heard = 64235 port_index = 2 seat_id = 0x40000 last sent = 0 last heard = 13486 50000.3 Unicast Slave IPC:Control 50000.9 Unicast Secondary RFS Server Port 50000.A Unicast Secondary Old RFS Server Port 50000.8 Unicast Slave : TTY Client Port 50000.7 Unicast Secondary Services Port 50000.B Unicast IF-con server port 50000.C Unicast RF : Standby 50000.D Unicast CF : Standby
I messaggi IPC sono l'unità di base per lo scambio di comunicazioni tra client IPC. Durante il normale funzionamento, l'RP e le schede di linea interagiscono frequentemente attraverso messaggi IPC. Un messaggio include un'intestazione, informazioni sull'indirizzo di origine e di destinazione e i dati del messaggio.
Nell'intestazione IPC, IPC definisce diversi flag di messaggio che modificano l'elaborazione della ricezione di un messaggio IPC. Tra i contrassegni definiti, quattro sono correlati al tipo di comunicazione utilizzato (inaffidabile, inaffidabile in caso di notifica, affidabile), altri quattro sono correlati alla messaggistica RPC (Remote Procedure Call) o all'elaborazione del controllo interno e due non vengono utilizzati.
Ecco alcuni client IPC:
Comandi inviati dall'RP per eseguire query sulle schede di linea per ottenere informazioni quali versione, quantità di memoria, statistiche di interfaccia, modifiche dello stato dell'interfaccia e dati di configurazione.
Risposte ai comandi dall'RP, che vengono inviati dalla scheda di linea all'RP. Esempi di informazioni contenute nei messaggi IPC includono gli aggiornamenti delle statistiche temporizzate e i messaggi Windows che indicano quanti altri messaggi IPC la scheda di linea è in grado di mettere in coda.
Eventi o messaggi generati in modo asincrono. Gli esempi sono la segnalazione di errori quali errori di input, runt e giganti, nonché la segnalazione di statistiche e di altre informazioni contabili, come il conteggio di byte e pacchetti.
Messaggi tra un RP attivo e in standby per il corretto funzionamento del checkpoint.
Alcuni processi software Cisco IOS devono scambiare informazioni tra le schede di linea e il processore di routing. Questi processi sono considerati applicazioni IPC. Alcuni esempi includono Cisco Express Forwarding (CEF) e file system remoti per lo scambio di immagini tra i processori di routing Cisco serie 12000.
La tabella 1 elenca i livelli dello stack del protocollo IPC:
Tabella 1 - Livelli dello stack del protocollo IPCStack di protocolli IPC |
---|
Applicazioni IPC |
Meccanismo IPC |
Switch Fabric (serie 12000) o CBUS (serie 7500) Data Layer |
I router della serie 7500 e 12000 allocano entrambi un gruppo speciale di buffer per archiviare i messaggi IPC in coda per la trasmissione e in attesa di conferma dalla porta IPC di destinazione.
La serie 7500 utilizza uno speciale set di buffer nella memoria del pacchetto del sistema (MEMD). Per ulteriori informazioni su MEMD e l'architettura 7500, vedere Cause di un "%RSP-3-RESTART: complesso cbus"? e informazioni sulla CPU VIP con esecuzione al 99% e sul buffer lato Rx.
Nella serie 7500, le code IPC si trovano nella memoria del processore. In alcune versioni di Cisco IOS (vedere l'output di esempio riportato di seguito), lo spazio buffer IPC aggregato nella memoria del processore può essere regolato con il comando ipc cache size. Il MEMD contiene alcuni buffer limitati che non possono essere sintonizzati. Quando viene inviato un messaggio IPC inserito nella memoria del processore e se vi è spazio libero nel MEMD, i messaggi IPC vengono "spostati" dalla memoria del processore al MEMD prima di essere inviati al LC.
Per visualizzare lo stato delle code IPC, usare il comando show ipc queue.
Router#show ipc queue There are 0 IPC messages waiting for acknowledgment in the transmit queue. There are 0 IPC messages waiting for a response. There are 0 IPC messages waiting for additional fragments. There are 0 IPC messages currently on the IPC inbound. There are 0 messages currently in use by the system.
Nota: queste code sono code software gestite da IPC e non devono essere confuse con le code hardware QA-ASIC della serie 7500.
Sulla serie 12000, il GRP invia messaggi IPC sul fabric dello switch. All'avvio, l'algoritmo per il buffer-carving crea due gruppi di pool nella memoria tofab (lato ricezione) e frfab (lato trasmissione). Come mostrato nell'output di esempio del comando show controller to fab queue (vedere di seguito), i due set sono Code libere non IPC e code IPC. Per informazioni su come interpretare l'output, vedere Cisco serie 12000 Internet Router: Domande frequenti.
Sui Cisco serie 12000, il GRP alloca un certo numero di intestazioni dei messaggi al momento dell'inizializzazione. Sono state apportate diverse modifiche per migliorare l'allocazione della memoria per queste intestazioni.
Il software Cisco IOS versione 12.0(18)S/ST ha aumentato il numero predefinito di intestazioni dei messaggi create al momento dell'inizializzazione da 1000 a 5000 sia sul GRP che sui LC (vedere l'output che segue). A partire dalla versione 12.0(23)S, la cache dell'intestazione IPC può crescere in modo dinamico. Pertanto, non è più necessario sintonizzarlo manualmente.
I LC conservano le intestazioni dei messaggi IPC nella memoria RAM dinamica (DRAM). Inoltre, i controller di dominio hanno riservato 100 buffer nella tofab e nella memoria fromfab per i messaggi IPC. Per ogni messaggio IPC trasmesso, il controller di dominio deve richiedere un'intestazione di messaggio IPC dalla cache e quindi inviare una richiesta al buffer buffer Management ASIC (BMA) di frfab per un buffer di messaggi IPC da utilizzare per inviare il messaggio al server di pubblicazione su struttura.
LC-Slot1#show controllers tofab queues Carve information for ToFab buffers SDRAM size: 33554432 bytes, address: 30000000, carve base: 30029100 33386240 bytes carve size, 4 SDRAM bank(s), 8192 bytes SDRAM pagesize, 2 carve(s) max buffer data size 9248 bytes, min buffer data size 80 bytes 40606/40606 buffers specified/carved 33249088/33249088 bytes sum buffer sizes specified/carved Qnum Head Tail #Qelem LenThresh ---- ---- ---- ------ --------- 5 non-IPC free queues: 20254/20254 (buffers specified/carved), 49.87%, 80 byte data size 1 17297 17296 20254 65535 12152/12152 (buffers specified/carved), 29.92%, 608 byte data size 2 20548 20547 12152 65535 6076/6076 (buffers specified/carved), 14.96%, 1568 byte data size 3 32507 38582 6076 65535 1215/1215 (buffers specified/carved), 2.99%, 4544 byte data size 4 38583 39797 1215 65535 809/809 (buffers specified/carved), 1.99%, 9248 byte data size 5 39798 40606 809 65535 IPC Queue: 100/100 (buffers specified/carved), 0.24%, 4112 byte data size 30 72 71 100 65535 Raw Queue: 31 0 17302 0 65535 [output omitted]
Nota: vedere la tabella 2 per un elenco delle versioni IOS con i miglioramenti elencati in questa sezione.
In rari casi, ad esempio quando è necessario scambiare una grande quantità di informazioni tra client IPC, la cache del buffer IPC può esaurirsi. Il software Cisco IOS utilizza questi messaggi di log per segnalare questa condizione:
Oct 7 03:36:49: %RSP-3-RESTART: interface Serial0/0/4:1, not transmitting Oct 7 03:39:51: %IPC_RSP_CBUS-3-NOBUF: No more IPC memd buffers to transmit IPC message Oct 7 03:40:09: %RSP-3-RESTART: interface Serial0/0/2:1, not transmitting Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/0, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/1, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/2, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on InterfaceSerial0/1/3, changed state to down Oct 7 03:40:21: %IPC_RSP_CBUS-3-NOBUF: No more IPC memd buffers to transmit IPC message Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 0: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 1: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 4: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 5: IPC failure Oct 7 03:40:29: %LINEPROTO-5-UPDOWN: Line protocol on Interface
Come illustrato nell'output precedente, l'RP disabilita l'ECF su tutte le schede di linea in questa condizione perché non sarà più in grado di aggiornare le tabelle CEF sulle schede di linea con l'aiuto dell'IPC. Pertanto, i messaggi FIBDISABLE vengono segnalati per tutte le schede di linea.
Per risolvere questo tipo di errori, potrebbe essere necessario aumentare la cache IPC sulle schede di linea RP e IPC. Prima di procedere, utilizzare il comando show ipc status per verificare se i buffer IPC sono esauriti nell'RP, nel LC o in entrambi. Prendete questo output ed esaminatelo sia dall'RP che dal LC.
In origine, il numero predefinito di buffer allocati per tutti i sistemi con l'aiuto di IPC era di 1000 intestazioni di messaggi memorizzate nella cache, condivise tra i messaggi in entrata e in uscita. In base alla versione del software Cisco IOS installata, il numero di intestazioni dei messaggi IPC nella cache è statico, dinamico o può essere ottimizzato.
Di seguito viene riportato l'output del comando show ipc status da un router con le intestazioni dei messaggi predefinite pari a 1000.
Nota: le versioni 12.2T e 12.2S del software Cisco IOS introducono modifiche all'output di questo comando.
router#show ipc status IPC System Status: This processor is the IPC master server. 1000 IPC message headers in cache 4049362 messages in, 92615 out, 4048932 delivered to local port, 352 acknowledgments received, 386 sent, 0 NACKS received, 0 sent, 15326 messages dropped on input, 154 messages dropped on output 0 no local port, 110 destination unknown, 0 no transport 0 missing callback or queue, 34 duplicate ACKs, 0 retries, 0 message timeouts. 0 ipc_output failures, 0 mtu failures, 7707 msg alloc failed, 0 emer MSG alloc failed, 0 no origs for RPC replies 0 pak alloc failed, 0 memd alloc failed 0 no hwq, 0 failed opens, 0 hardware errors
La quantità di memoria da allocare dipende dal tipo di scheda (RP o LC, RSP o VIP) presente sulla piattaforma e dall'attività delle applicazioni che richiedono l'IPC (ad esempio, CEF distribuito).
Dal software Cisco IOS versione 12.0(23)S, 12.2(18)S e dai nuovi treni IOS 12.3 e 12.3T, la cache dei messaggi IPC viene gestita dinamicamente anziché essere allocata staticamente. La soluzione proposta per il problema di esaurimento della cache dei messaggi IPC a causa di un traffico IPC elevato e bursting è stata quella di aumentare e ridurre dinamicamente la cache dei messaggi. Al momento dell'inizializzazione, il sistema alloca un numero di messaggi predefinito specificato dalla piattaforma. Quando il numero di messaggi liberi è inferiore al numero "minimo" di buffer, notifica al processo in background critico di aumentare la cache. Ciò consente all'IPC di continuare a espandere la cache per soddisfare le esigenze dei propri client. Se i buffer allocati di recente non vengono mai utilizzati dall'IPC per un intervallo di tempo specificato, il processo inizia a ridursi. La cache si arresta quando raggiunge le dimensioni predefinite. Questo miglioramento delle prestazioni è stato introdotto in CSCdv57496. Con l'implementazione di CSCdv57496, il comando ipc cache <size>non funziona più come se fosse eseguito automaticamente. Ciò è valido per tutte le piattaforme IPC.
Nota importante: Dal software Cisco IOS versione 12.3(5.5)T, è stata rimossa la possibilità di regolare manualmente la cache IPC. Per ulteriori informazioni, vedere CSCec17505 (solo utenti registrati).
Quando si controlla l'output del comando show ipc queue, è necessario esaminare quanto segue:
c7500#show ipc queue Message waiting for acknowledgement in Tx queue : 0 Maximum acknowledgement msg usage in Tx queue : 0 Message waiting for additional Fragments : 0 Maximum message fragment usage : 0 There are 0 IPC messages waiting for a response. There are 0 IPC messages currently on the IPC inboundQ. Messages currently in use : 0 Message cache size : 1000 Maximum message cache usage : 1344 0 times message cache crossed 5000 [max] Emergency messages currently in use : 0 Inbound message queue depth 0 Zone inbound message queue depth 0
Se il router esegue una versione del software Cisco IOS che non include buffer della cache IPC gestiti in modo dinamico, ovvero immagini precedenti alla 12.0(23)S, 12.2(18)S, 12.3 e 12.3T, la cache IPC sull'RP e la memoria IPC sulle schede di linea possono essere aumentate manualmente. Prima di procedere, utilizzare il comando show ipc status per verificare se i buffer IPC, RP o LC, o entrambi, stanno per esaurirsi. Prendete questo output ed esaminatelo sia dall'RP che dal LC.
Se necessario, è possibile utilizzare i seguenti comandi per regolare le memorie:
Il comando di configurazione ipc cache 5000 per aumentare la cache dell'intestazione IPC sull'RP.
La cache ipc <size> [slot {num_slot | all}] per aumentare la cache sul Cisco 12000 LC.
Nota: quando si alloca più memoria per i messaggi IPC, per altri processi è disponibile meno memoria. Le dimensioni di un singolo messaggio IPC variano in realtà a seconda delle diramazioni del software Cisco IOS. Utilizzare il comando show memory summary per verificare se il pool di processori contiene memoria sufficiente.
Nota: vedere la tabella 2 per un elenco delle versioni IOS con i miglioramenti elencati in questa sezione.
In alcune situazioni, può essere opportuno regolare anche il throughput IPC tra RP e LC. Ciò si verifica in particolare quando il RP deve caricare una tabella CEF di grandi dimensioni nel LC. Ad esempio, questo problema può verificarsi durante l'avvio del router quando riceve una grande quantità di informazioni di routing da un peer BGP. È possibile configurare un buffer IPC aggiuntivo sul CLI con il comando ip cef linecard ipc memory xxxxx per aumentare la larghezza di banda IPC. Questo comando è stato introdotto da CSCds89515 (solo utenti registrati). Il valore per questa memoria è stato impostato su un valore predefinito accettabile con CSCdu54205 (solo utenti registrati) e CSCuk27162 (solo utenti registrati).
Di seguito sono riportati i comandi che indicano il risultato della modifica di questo parametro:
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip cef line ipc mem 20000 Router(config)#^Z Router#show cef state ... RP state: Expanded LC ipc memory: 20000 Kbytes ... or, alternatively: Router#show cef line Slot MsgSent XDRSent Window LowQ MedQ HighQ Flags 0 12515 21687 505 0 0 0 up 1 12515 21675 505 0 0 0 up 3 12515 21701 505 0 0 0 up 5 12515 21700 505 0 0 0 up 2 12518 22008 505 0 0 0 up Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip cef line ipc mem 20000 Router(config)#^Z Router#show cef line Slot MsgSent XDRSent Window LowQ MedQ HighQ Flags 0 12538 22097 4966 0 0 0 up 1 12538 22081 4966 0 0 0 up 3 12538 22115 4966 0 0 0 up 5 12538 22114 4966 0 0 0 up 2 12541 22418 4966 0 0 0 up
La tabella 2 offre una panoramica dei miglioramenti implementati nel software Cisco IOS per il tuning manuale e dinamico della memoria IPC su diverse piattaforme.
Tabella 2 - Miglioramenti del software Cisco IOSID bug Cisco | Risolto in | Enhancement (Miglioramento) |
---|---|---|
CSCdk75315 (solo utenti registrati) | 12.0(5)S 12.0(5) 12.0(5)T 11.3(10)A | Introduce una dimensione della cache IPC che può essere configurata con l'aiuto del comando ipc cache <size>. |
CSCds89515 (solo utenti registrati) | 12.2(4)B 12.1(9)E 12.1(8a)E 12.2(3)T 12.2(2)S 12.1(9) 12.0(14)ST1 12.2(2) 12.2(1)T 12.0(15)S3 12.0(16)ST 12.0(16)S | Su un router Cisco serie 12000 Internet, è possibile disabilitare Cisco Express Forwarding (dCEF) distribuito a causa di una condizione di memoria insufficiente durante un aggiornamento di routing di grandi dimensioni (ad esempio, durante l'avvio). Per ovviare al problema, ridurre il percorso massimo nel Border Gateway Protocol (BGP) in modo da ridurre la quantità di informazioni che il CEF propaga alle schede di linea. In alternativa, ridurre le dimensioni della finestra TCP per ridurre la velocità degli aggiornamenti BGP in arrivo. Vedere Raggiungere un routing ottimale e ridurre il consumo di memoria BGP. In alternativa, è possibile immettere il comando di configurazione interfaccia 0-128000 della scheda di linea ip cef. La quantità di processore di schede di linea o di memoria principale è limitata al 50% della memoria totale. Questo comando consente di allocare una maggiore quantità di memoria del processore della scheda di linea alla coda per il routing CEF per aggiornare i messaggi. Consente all'RP di rilasciare gli aggiornamenti CEF più rapidamente per liberare memoria e impedisce il verificarsi di condizioni di memoria insufficiente sull'RP. In base al numero di Versatile Interface Processor (VIP), dCEF ha bisogno di una grande quantità di memoria temporanea sull'RSP per inserire nel buffer i messaggi IPC associati all'VIP, soprattutto nei casi in cui vengono visualizzati peer BGP di grandi dimensioni o quando la base di informazioni di inoltro (FIB) viene propagata all'VIP dopo un complesso CBUS o un arresto anomalo dell'VIP (o quando viene emesso il comando clear cef line). |
CSCdu21591 (solo utenti registrati) | 12.0(17)ST4 12.0(18)ST 12.0(18)S | Aumenta le dimensioni predefinite della cache dell'intestazione dei messaggi IPC da 1000 a 5000 sui router serie 12000. In precedenza, il parser ha accettato qualsiasi numero compreso tra i valori hardcoded 1000 e 15000. Oggi, il parser accetta solo numeri compresi tra le dimensioni della cache minima e massima definite dalla piattaforma. Inoltre, in origine, non era possibile cancellare il comando ipc cache dalla configurazione anche se si eseguiva il comando no ipc cache nella configurazione per rimuovere un valore personalizzato della cache IPC. È stato invece inserito un comando ipc cache x , dove x è la dimensione predefinita della cache attualmente definita. Oggi il comando no ipc cache ha il comportamento previsto. Rimuove completamente il comando ipc cache dalla configurazione. |
CSCdu12540 | 12.0(19)ST 12.0(19)S | Applicabile solo ai Cisco serie 12000: In origine, il comando ipc cache <size>funzionava solo per la cache IPC RP. A questo punto, il comando ipc cache può essere utilizzato sui dispositivi LC come segue: ipc cache <size> [slot {slot_num | all}]Le opzioni num_slot e all non si escludono a vicenda. Ad esempio, questi comandi sono validi: ipc cache 4000 slot all ipc cache 3000 slot 5 Questi comandi aumentano le dimensioni della cache nello slot 5 a 3000 e a 4000 per tutti gli altri slot. Se si desidera utilizzare l'opzione all per sovrascrivere le istruzioni di configurazione precedenti relative alle dimensioni della cache per i controller di dominio, assicurarsi di utilizzare anche "NOPREFIX" per eliminare i comandi precedenti nella memoria RAM non volatile (NVRAM) e implementare i risultati corretti. In modalità noprefix, utilizzare lo slot della cache no ipc {num_slot | all} per ripristinare le dimensioni predefinite della cache. |
CSCdu54205 | 12.0(19)ST 12.0(19)S | Applicabile solo ai Cisco serie 12000: Questo miglioramento ha modificato il valore predefinito per la scheda di linea CEF aggiornamento memoria allocazione a 512 messaggi. non è più necessario usare il comando ip cef linecard ipc memory xxxxx a meno che il problema non venga rilevato. |
CSCuk27162 (solo utenti registrati) | 12.2(9)T 12.2(9)S 12.2(9) 12.0(21)ST 12.0(22)S | Questo miglioramento software modifica il numero predefinito per piattaforma dei buffer IPC della scheda di linea allocati all'avvio. Aumenta inoltre la memoria IPC della scheda di linea predefinita RSP per piattaforma da 25 a 128 messaggi IPC. Soluzione temporanea: Usare il comando di configurazione globale ip cef linecard ipc memory xxxxx per aumentare il numero di buffer sulle schede di linea. |
CSCdv57496 | 12.0(23)S | Gestione dinamica della cache dei messaggi IPC anziché allocazione statica della cache IPC. Con l'implementazione di CSCdv57496, il comando ipc cache <size>non è più valido in quanto viene eseguito automaticamente. Ciò è valido per tutte le piattaforme IPC. |
CSCdz7490 | 12.2(19.7)S 12.0(26.2)S 12.3(1)B 12.3(1) | Con l'implementazione di CSCdz7490, l'interfaccia della riga di comando ipc cache <size>viene rimossa dai software Cisco IOS versione 12.3 e 12.3T. Nel treno Cisco IOS 12.3, questo comando è nascosto, ma, se configurato dal terminale, stampa un messaggio per l'utente. Nella successiva versione principale 12.4, questo comando verrà rimosso. |
CSCec17505 (solo utenti registrati) | Da definire | Sintomi: la dimensione della cache ipc non cambia quando si usa il comando ipc cache <size>CLI per modificare la dimensione della cache. Condizioni: Questa condizione si verifica in seguito a modifiche dell'architettura con IPC. Soluzione temporanea: La funzionalità della cache IPC viene ora eseguita automaticamente e non può essere modificata dall'utente nella CLI. Questo miglioramento rimuove il comando ipc cache <size> CLI nelle versioni software di Cisco IOS in cui non è più possibile modificare manualmente la cache IPC. Non dovrebbero esistere problemi di compatibilità con le versioni precedenti, in quanto la CLI sarà ancora disponibile nelle versioni in cui l'utente può modificare manualmente la cache IPC con il comando ipc cache <size>CLI. |
Quando si esegue il sistema operativo Catalyst, Catalyst serie 6000/Cisco 7600 utilizza un Supervisor Engine con una scheda router opzionale nota come Multilayer Switch Feature Card (MSFC). La CPU del Supervisor e la CPU dell'MSFC comunicano tramite messaggi IPC su un bus di gestione fuori banda Ethernet. Quando si esegue il software di sistema Cisco IOS, anche l'RP e lo switch processor (SP) comunicano tramite messaggi IPC. In origine, sono stati creati 3000 buffer per i messaggi IPC. In rari casi, il sistema esaurisce i buffer IPC e segnala questi messaggi di errore:
01:52:13: %ICC-2-NOMEM: No memory available for unregistering card Card2 02:42:08: %IPC-3-NOBUFF: The main IPC message header cache has emptied -Traceback= 4026779C 40268350 4025F930 40223D34 40221C40 40221EA4 401EAB10
Nota: ICC è l'acronimo di InterCard Communications.
Dal software Cisco IOS versione 12.1(08a)E01 e 12.1(10)E, Cisco serie 7600 crea ora 6000 buffer di messaggi IPC per impostazione predefinita. Inoltre, le modifiche apportate nelle versioni 12.1(08a)E e 12.1(09)EC aiutano a evitare il depauperamento dell'intestazione IPC dovuto a un numero elevato di aggiornamenti relativi alla VLAN (Virtual LAN). Ogni messaggio ICC annuncia un gruppo di modifiche allo stato del collegamento della VLAN, anziché una VLAN alla volta.
Le schede di linea più recenti per Cisco serie 7600 supportano una scheda secondaria con funzionalità distribuita (DFC) per velocità di gestione dei pacchetti elevate. Le schede di linea abilitate per DFC gestiscono le tabelle locali di inoltro e adiacenze di Cisco Express e comunicano con il Supervisor utilizzando i messaggi IPC.
Alcuni messaggi IPC sono più grandi della MTU (Maximum Transmission Unit) del bus di switching Catalyst 6000 (ad esempio, i messaggi IPC vengono usati per segnalare le statistiche dell'interfaccia SONET in messaggi più grandi di 1500 byte). Tali messaggi devono essere frammentati. In rari casi, la cache dell'intestazione del frammento IPC è esaurita e il sistema visualizza questo messaggio di errore:
%IPC-DFC6-3-NOBUFF: The fragment IPC message header cache has emptied
Le modifiche apportate al software Cisco IOS versione 12.1(08a)E e 12.1(09.05)EC aumentano il numero di intestazioni dei buffer dei frammenti IPC da 32 a 128.
Questo messaggio potrebbe essere visualizzato nell'output di debug se il client IPC riceve riconoscimenti duplicati.
IPC: Impossibile trovare il messaggio originale per ACK HDR:
I riconoscimenti duplicati sono in genere dovuti a problemi dei supporti che causano la perdita dei messaggi di riconoscimento. Per risolvere questa perdita di riconoscimento, ricollocare o sostituire la scheda di linea negli slot in modo corretto per evitare problemi con i supporti.
Per ulteriore assistenza dopo aver eseguito le procedure di risoluzione dei problemi sopra descritte e se si desidera creare una richiesta di assistenza con Cisco TAC, includere le seguenti informazioni per la risoluzione dei messaggi di errore relativi a IPC-3-NOBUFF: |
---|
Nota: non ricaricare o spegnere e riaccendere manualmente il router prima di raccogliere le informazioni di cui sopra a meno che non sia necessario per risolvere un'eccezione IPC-3-NOBUFF, in quanto ciò potrebbe causare la perdita di informazioni importanti necessarie per determinare la causa principale del problema. |