Skip to Content

Che cos'è un controllo ciclico della ridondanza (CRC) nel networking?

Che cos'è un controllo ciclico della ridondanza?

Un controllo della ridondanza ciclica (CRC) è una tecnica matematica che consente di rilevare gli errori nei dati trasmessi aggiungendo un codice speciale, chiamato checksum, alle informazioni originali. Questo checksum viene quindi ricalcolato all'estremità ricevente per verificare l'integrità dei dati. Il CRC svolge un ruolo vitale nell'identificazione e nella correzione del potenziale danneggiamento dei dati nel networking, dove il trasferimento affidabile dei dati è fondamentale. Viene inoltre utilizzato nei sistemi di data storage, tra cui dischi rigidi e memoria flash, per verificare la precisione dei dati memorizzati. Il CRC è cruciale in protocolli come Modbus, controller area network (CAN) e molti altri in cui il trasferimento affidabile dei dati è essenziale.

Come funziona il CRC?

Il CRC si basa sul trattamento dei dati da trasmettere come polinomiali. Il mittente e il destinatario concordano su un polinomio divisore fisso, spesso indicato come polinomio generatore. I dati vengono aumentati con un checksum, che è il resto della divisione polinomiale dei dati originali da parte del polinomio del generatore. Alla fine del mittente, il checksum CRC viene calcolato e aggiunto ai dati prima della trasmissione. Al termine del ricevitore, i dati ricevuti insieme al checksum sono divisi per lo stesso polinomio generatore. Se il resto è pari a zero, si presume che i dati siano privi di errori; in caso contrario, viene rilevato un errore.

L'uso di polinomi CRC e codici ciclici potrebbe sembrare complesso, ma il concetto è più semplice di quanto sembri. Questi polinomi sono essenzialmente rappresentazioni matematiche che aiutano nel processo di rilevamento degli errori. I codici ciclici, nel contesto di CRC, si riferiscono ai codici in cui i turni ciclici di qualsiasi parola di codice valida determinano un'altra parola di codice valida.

Per capire meglio, considera un esempio semplificato di correzione degli errori utilizzando un checksum di base. Immagina di inviare un numero binario e aggiungere un bit aggiuntivo che rappresenti la parità o la somma dei bit originali. Se i dati ricevuti non corrispondono alla parità prevista, viene rilevato un errore.

CRC è una versione più sofisticata di questo processo. Invece di una semplice somma, il polinomio CRC esegue un calcolo più complesso, introducendo una maggiore ridondanza e migliorando la capacità di rilevamento degli errori. Questa maggiore complessità è cruciale per gestire errori più piccoli e fornire un meccanismo di controllo degli errori più solido.

Prova FlashArray

Scopri di persona come Pure Storage ha semplificato la gestione di blocchi e file in un ambiente self-service.

Provalo subito

Perché utilizzare CRC?

CRC è particolarmente efficace nel rilevare errori che potrebbero alterare l'ordine dei bit in un messaggio. Ciò è molto importante in scenari in cui il mantenimento dell'esatta sequenza di bit è essenziale per interpretare correttamente i dati.

Uno dei principali vantaggi di CRC è la sua semplicità di implementazione, soprattutto nell'hardware binario. L'algoritmo prevede semplici operazioni bitwise, che lo rendono efficiente per il controllo degli errori basato su hardware.

CRC non è solo semplice da implementare, ma anche facile da analizzare matematicamente. Ciò lo rende una scelta interessante per i progettisti e gli ingegneri che devono comprendere e ottimizzare le funzionalità di controllo degli errori dei propri sistemi. Le proprietà matematiche del CRC facilitano una visione più approfondita delle sue caratteristiche prestazionali, contribuendo alla regolazione fine dei parametri per applicazioni specifiche.

Nei canali di comunicazione del mondo reale, il rumore è inevitabile. CRC è particolarmente efficace nel rilevare gli errori comuni introdotti dal rumore durante la trasmissione dei dati. La sua natura ciclica e la dipendenza dalla divisione polinomiale consentono di identificare efficacemente gli errori causati da fluttuazioni o disturbi casuali del segnale.

Scegliere il polinomio giusto

Al centro del CRC c'è il polinomio utilizzato per la generazione e la verifica del checksum. La scelta del polinomio influenza in modo significativo le capacità di rilevamento degli errori del CRC. Il polinomio funge da divisore nella divisione polinomiale, determinando la struttura del checksum.

La scelta del polinomio giusto implica la considerazione di diversi fattori. Il grado del polinomio, ad esempio, influisce sulla lunghezza del checksum e, di conseguenza, sulle capacità di rilevamento degli errori. È fondamentale bilanciare il desiderio di un checksum più lungo (rilevamento degli errori migliorato) con il costo computazionale.

Altri fattori includono le proprietà matematiche del polinomio, come la sua irreducibilità. Un polinomio irreducibile garantisce che l'algoritmo CRC sia in grado di rilevare un'ampia gamma di errori. Inoltre, alcune applicazioni possono richiedere proprietà specifiche, come il rilevamento degli errori di burst, che possono essere influenzate dalla scelta polinomiale.

Nei calcoli CRC vengono comunemente utilizzati diversi polinomi standard. La scelta del polinomio dipende dai requisiti specifici dell'applicazione. Ad esempio, il polinomio CRC-32 (0x04C11DB7) viene spesso utilizzato nei protocolli di comunicazione di rete, mentre il polinomio CRC-16 (0x8005) trova applicazione nei sistemi di storage. Il polinomio CRC-CCITT (0x1021) è noto per il suo utilizzo nelle telecomunicazioni.

Ogni polinomio presenta caratteristiche uniche e la scelta di quella appropriata comporta un'attenta considerazione dei requisiti dell'applicazione e dei compromessi desiderati tra capacità di rilevamento degli errori ed efficienza computazionale.

Ottimizzazione delle performance CRC

CRC è un potente algoritmo di controllo degli errori, ma esistono modi per migliorarne le performance, tra cui:

  • Precalcolo basato su tabella, che esegue il precalcolo dei valori CRC e li memorizza in una tabella per gli input di uso comune. Ciò riduce la necessità di calcoli ripetitivi, migliorando significativamente le performance complessive.
  • Parallelizzazione, che sfrutta l'elaborazione parallela per distribuire i calcoli CRC tra più core o processori. Ciò può ridurre notevolmente il tempo necessario per i controlli CRC, specialmente in scenari con dataset di grandi dimensioni.
  • Operazioni bitwise come XOR e turni, che sono spesso più efficienti delle operazioni aritmetiche tradizionali.

Per ridurre la complessità operativa, è molto importante scegliere il polinomio CRC giusto. Alcuni polinomi offrono migliori funzionalità di rilevamento degli errori con costi generali di elaborazione minimi. È inoltre possibile personalizzare le dimensioni delle parole CRC in base all'architettura del sistema per migliorare le performance.

Quando si ottimizzano le performance CRC, è necessario prendere in considerazione alcuni compromessi, tra cui:

1. Confronto tra utilizzo della memoria e calcolo

Le tabelle precalcolate possono ridurre il calcolo, ma aumentare l'utilizzo della memoria. Valuta il compromesso tra utilizzo della memoria ed efficienza computazionale in base ai vincoli di sistema.

2. Complessità e velocità

I polinomi CRC più complessi possono offrire un migliore rilevamento degli errori, ma possono essere costosi dal punto di vista computazionale. Trova un equilibrio tra complessità e velocità, allineando gli sforzi di ottimizzazione con casi d'uso specifici.

Conclusione

CRC è ampiamente utilizzato in applicazioni reali, tra cui protocolli di rete, sistemi di storage e protocolli di comunicazione. CRC eccelle nel rilevare gli errori durante la trasmissione dei dati e la sua capacità di identificare sia gli errori burst che quelli casuali garantisce che i dati ricevuti corrispondano ai dati trasmessi. CRC agisce come protezione contro il danneggiamento dei dati nei sistemi di storage. Rilevando gli errori fin dall'inizio, CRC aiuta a mantenere l'integrità e la resilienza delle informazioni memorizzate, il che è fondamentale per l'affidabilità dei dati a lungo termine.

Sebbene CRC infonda fiducia nell'affidabilità del trasferimento e dello storage dei dati, esso comporta costi generali di calcolo, pertanto è importante valutare il compromesso tra i vantaggi del controllo degli errori e le risorse utilizzate nei calcoli CRC.

Inoltre, ricorda che CRC svolge un ruolo solo nel quadro generale della data protection moderna. La soluzione di data protection moderna e completa di Pure Storage ti consente di ripristinare i dati quando è più importante, proteggere la tua azienda dagli attacchi, gestire la tua azienda senza interruzioni, assumere il controllo del tuo ambiente e garantire un ambiente di storage pulito.

08/2024
Maximizing SAP HANA Performance and Reliability with Pure Storage
A reference architecture for SAP bundled application suites on SAP HANA with Pure Storage.
Reference architecture
27 pagine
CONTATTACI
Domande?

Hai domande o commenti sui prodotti o sulle certificazioni di Pure?  Siamo qui per aiutarti.

Prenota una demo

Prenota una demo per vedere come puoi trasformare i tuoi dati in risultati concreti con Pure. 

Telefono: +39 02 9475 9422

Media: pr@purestorage.com

 

Pure Storage Italia

Spaces c/o Bastioni di Porta Nuova, 21

Milano, 20121

+39 02 9475 9422

italia@purestorage.com

CHIUDI
Il browser che stai usando non è più supportato.

I browser non aggiornati spesso comportano rischi per la sicurezza. Per offrirti la migliore esperienza possibile sul nostro sito, ti invitiamo ad aggiornare il browser alla versione più recente.