In questo documento viene descritta la durata di un pacchetto.
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.
I router low-end Cisco includono le serie 1xxx, 25xx, 26xx, 3600, 3800, 4000, 4500 e 4700. Con questi router, un messaggio viene inviato su un cavo da un utente e ricevuto da un controller di un altro sistema. Nella maggior parte dei sistemi, il controller archivia il pacchetto direttamente nella memoria buffer. Quando il messaggio viene ricevuto completamente, il controller memorizza alcune informazioni sul puntatore in modo che il driver in entrata possa trovarle, quindi presenta un interrupt di ricezione.
Nota: se il controller non dispone di buffer in cui archiviare il messaggio, a questo punto esegue il log di "ignora" e non riceve il messaggio.
In un determinato momento futuro, in genere misurato in microsecondi, un driver diventa attivo. Il driver controlla prima la coda di trasmissione e, successivamente, la coda di ricezione. Per il momento, ci concentreremo sull'elaborazione delle code di ricezione. Il driver controlla gli aspetti necessari della coda, decide che è presente un messaggio, rimuove il messaggio dalla coda e rifornisce l'elenco dei buffer di ricezione del controller. Decide quindi a quale mittente, ad esempio IP o IPX (Internet Packet Exchange), consegnare il messaggio.
Per questa spiegazione, si supponga che si tratti di un messaggio IP. Il driver consegnerà il messaggio IP al percorso rapido IP configurato. Innanzitutto rimuove l'intestazione del livello di collegamento dal messaggio e quindi determina se è configurato un percorso rapido sull'interfaccia in entrata. Se non è configurato alcun pacchetto, il pacchetto viene inserito (contrassegnato) nella "coda di attesa di input" e viene ispezionato un contatore. Se il contatore è zero, la "coda di attesa di input" viene esaurita e il pacchetto viene scartato. Se il contatore è diverso da zero, viene ridotto e il messaggio viene accodato al percorso del processo.
Nota: la coda di attesa di input non è una coda nel senso letterale del termine. Si tratta di un insieme di pacchetti che sono stati ricevuti su un'interfaccia e non sono stati completamente elaborati (inoltrando il messaggio a un'interfaccia in uscita o rilasciando il buffer). Tuttavia, se è presente un percorso rapido configurato e in genere è presente, il messaggio viene consegnato al percorso rapido.
Il percorso rapido convalida ora il messaggio e applica alcune funzionalità al messaggio non indirizzato. Questa fase include la decrittografia o la decompressione, o entrambe (se necessario), l'esecuzione di NAT (Network Address Translation), l'applicazione di test CAR (Input Committed Access Rate), l'applicazione di test di routing delle policy e così via.
Se utilizzato, il routing delle policy seleziona effettivamente l'interfaccia di uscita. Se non si utilizza il routing di policy, il passaggio successivo consiste nel cercare l'indirizzo di destinazione nella cache route, un processo denominato "switching the packet". A seconda della modalità di commutazione veloce, la struttura e il contenuto della cache varia. In modalità di commutazione veloce standard, la cache contiene route di prefissi di destinazione o route di host di destinazione utilizzate di recente e talvolta non dispone di una voce della cache. In questo caso, il messaggio viene spostato a livello di processo, nuovamente contrassegnato come inserito nella coda di attesa di input. Nello switching Cisco Express Forwarding, la cache (denominata Forwarding Information Base, o FIB) è una tabella di route completa, in modo che il processo non venga eseguito.
Se viene trovata una route, la voce della cache della route (o "adiacenza", come viene chiamata in Cisco Express Forwarding) indica il software di output, l'interfaccia hardware e l'intestazione da inserire nel messaggio (hop rilevante successivo). Per le interfacce multiplex, questo sarebbe il successivo circuito virtuale o canale virtuale rilevante.
Sull'interfaccia software potrebbero verificarsi diversi problemi. Ad esempio, l'interfaccia potrebbe essere stata configurata con un valore MTU (Maximum Transmission Unit) inferiore alle dimensioni del messaggio. Poiché nel percorso rapido non è presente alcun frammento, questo particolare evento potrebbe essere un motivo per "saltare" al livello di processo. Inoltre, l'interfaccia potrebbe essere configurata per l'elaborazione NAT, l'output CAR e così via. A questo punto, durante l'elaborazione del messaggio, verranno applicate le funzionalità indicate. Infine, l'intestazione del livello di collegamento dell'interfaccia di output viene applicata al messaggio e viene consegnata al driver di output.
Il messaggio viene presentato alla routine di invio rapido nel driver che esegue la procedura seguente.
Il driver pone una serie di domande, ad esempio "È necessario copiare il messaggio in un nuovo buffer prima di trasmetterlo?"
Determina se il traffic shaping è attivo. Se il traffic shaping è attivo, confronta la velocità di arrivo dei messaggi con la velocità di trasmissione dei messaggi per la classe di messaggi indicata. Se una coda di shaping è in formazione sulla sottointerfaccia o la coda non è presente ma la velocità è stata superata, il messaggio viene inserito in una coda sull'interfaccia software.
Se il traffic shaping non è attivo, non è applicabile al messaggio o la velocità non è stata superata, il driver chiede ora se la profondità della coda di trasmissione del controller di output è inferiore al limite della coda tx. Se è inferiore al limite, il driver accoda semplicemente il messaggio per la trasmissione. Un messaggio che ha seguito questo percorso viene considerato come se fosse stato attivato l'input e attivato l'output.
Se non può essere commutato rapidamente, tuttavia, il driver devia il messaggio in una coda software, che viene generalmente definita "coda di attesa dell'output". Esempi di code di attesa includono le code FIFO (First In, First Out), Priority Queuing, Custom Queuing e WFQ (Weighted Fair Queuing).
Poiché questa è anche la destinazione dei messaggi che seguono il percorso del processo, questi messaggi sono considerati come se fossero stati commutati rapidamente in ingresso e processo in uscita. Notate che non erano, di fatto, commutati in fase di elaborazione. La decisione di commutazione è stata presa quando il pacchetto è stato commutato nel percorso rapido. Tuttavia, il messaggio è stato spostato in una coda, che viene condivisa con il percorso del processo. Viene considerato come commutato in un momento successivo quando il messaggio viene rimosso dalla coda di attesa e accodato al controller trasmittente.
La commutazione del processo avviene quando il messaggio non può essere trasmesso nel percorso rapido. Significa che il messaggio è stato inviato a questo sistema e verrà utilizzato (idealmente) da un processo di routing, un processo di manutenzione del collegamento, un processo di gestione della rete e così via. Tuttavia, parte del traffico attraversa effettivamente il percorso di processo, ad esempio il traffico che utilizza la frammentazione e l'interfoliazione del collegamento (LFI) per interlasciare la voce tra i segmenti di un diagramma, il traffico X.25, il traffico che richiede la frammentazione e il traffico per cui non è disponibile un percorso rapido. L'elaborazione sul percorso di processo è concettualmente identica al percorso rapido, ma differisce nell'implementazione per varie ragioni. Una delle differenze è che nell'output, il flag "input hold queue" viene cancellato e il contatore sull'interfaccia di input incrementato (rimuovendo il messaggio dalla coda di attesa di input), e il messaggio viene accodato nella coda di attesa di output. Quindi, viene simulato un interrupt, che può attivare la trasmissione del messaggio sull'interfaccia di output. è più lento del passaggio rapido a causa del sovraccarico del processo; quando si riceve un messaggio di questo tipo, è possibile che sia in esecuzione un altro processo e che sia necessario gestire alcune strutture di dati più complesse.