Cosa calcola il Catalyst 2960X nel dump dell'SFP: codice vendor, nome e MD5, e perché una copia del dump non passa
Gestisco la rete di un provider, il parco moduli è misto, quindi devo regolarmente preparare i moduli per switch specifici. Vorrei finalmente capire la meccanica del controllo, invece di tentare dump a caso.
Con cosa lavoro:
- Cisco Catalyst 2960X-24PS-L, il più pignolo del parco
- QTECH QSW-3750-28TX-AC e D-Link DGS-3420, su questi gli stessi moduli si avviano senza problemi
- moduli SNR-SFP+SR e SFP-10G-BX
Nel dump del modulo che viene accettato sul Catalyst, all'inizio vedo il byte del codice vendor seguito dal nome in ASCII:
0E 43 49 53 43 4F ...
Cosa ho provato: ho preso il dump da un modulo che sale sul C2960X-24PS-L e ho riscritto in un altro modulo solo il nome vendor da quel dump. Su QTECH e D-Link a quel punto tutto si avvia, mentre il Catalyst quel modulo non lo accetta, anche se i byte corretti coincidono uno a uno col donatore.
Da qui la domanda sul meccanismo del controllo. Cosa calcola esattamente Cisco e su quali byte, dove nel modulo si trova il risultato, e perché il nome vendor riscritto da un dump funzionante non basta? Mi interessa la logica, il resto lo risolvo da solo.
Comments 6
Il meccanismo lì è semplice ed è stato chiarito da tempo. Non si controlla un campo isolato, ma una coppia: il byte del codice vendor più i byte del nome vendor. Da questa sequenza si calcola l'MD5, e il risultato sta nel modulo stesso; lo switch calcola la stessa cosa e confronta.
Si riproduce con utility standard, non serve nulla di speciale:
Sostituisci il tuo codice e il tuo nome vendor e ottieni il valore che dovrebbe stare nel modulo. Tra i codici che compaiono davvero nei dump: 02 - Finisar, 0E - Methode, 11 si incontra spesso, ma di chi sia non lo hanno mai identificato. Se la coppia codice-nome è coerente e l'hash le corrisponde, il modulo passa sul C2960X-24PS-L.
Riguardo al commento precedente: mostra cosa c'è realmente nel ricevente. Che byte di codice vendor è rimasto lì e quale nome sta accanto? A giudicare dalla descrizione, hai spostato il nome ma hai lasciato il codice, o l'hash stesso, del modulo originale, e allora la coppia non torna e il Catalyst la respinge del tutto legittimamente. Controlla tutte e tre le cose insieme, non solo il campo che si vede nell'output dello switch.
Ho verificato, tutto corrisponde alla vostra versione. Nel donatore c'è 0E e poi CISCO, mentre nel ricevente il nome l'ho effettivamente riscritto, ma il codice vendor è rimasto quello originale, e anche l'hash è vecchio. Ho fatto passare entrambe le combinazioni attraverso xxd -r -p e md5sum: nel donatore il valore coincide con quello presente nel modulo, nel mio assemblato a mano no.
Quindi va trasferita la coppia per intero, non un campo alla volta. Adesso almeno è chiaro dove guardare e cosa confrontare prima di mettere il modulo in porta.
Una conseguenza importante che si dimentica sempre: se il codice vendor e il nome non sono coerenti, il modulo non passa sul Catalyst nemmeno quando sullo switch sono abilitati i moduli non supportati. È proprio per questo che i dump presi da altri funzionano a intermittenza - sono stati corretti solo in parte, e il controllo guarda la coppia.
Da qui una conclusione pratica sul volume: in un dump di 256 byte contano i primi 128 byte, oltre inizia la zona del produttore. Non serve trascinarsi dietro l'intera immagine, ma la prima metà va trasferita in modo coerente, inclusi i campi che a occhio nell'output dello switch non si vedono.
A proposito, non tutto si risolve col dump. Nel Medick SFP-10G-BX non c'è una memoria ma un microcontrollore C8051F392: emula A0 e A2 e può benissimo tenere una password o una richiesta vendor. Lì puoi confrontare la coppia fino al byte, semplicemente da fuori non la accetteranno. Come strumenti che uso davvero ho SNR SFP Writer e SFPTotal Plus, i colleghi hanno anche autocostruiti su CH341.
Una piccola correzione per non confondere chi arriverà qui più avanti. Questo MD5 non ha alcun rapporto con i checksum MSA: CC_BASE e CC_EXT di SFF-8472 si calcolano con una semplice somma di byte e si ricalcolano in un attimo. Il controllo vendor vive sopra di essi e secondo le proprie regole, e respinge il modulo esattamente nel momento in cui con le somme MSA è tutto a posto - da qui la sensazione che il dump sia corretto e il modulo comunque non venga accettato.
Cisco qui, detto per inciso, è tutt'altro che il caso peggiore: il meccanismo almeno è comprensibile e riproducibile. I più difficili sono HP e Aruba, dove la memoria si comporta in modo interattivo e richiede chiavi - lì con i soli dump non te la cavi più.