Co Catalyst 2960X liczy w dumpie SFP: kod vendora, nazwę i MD5, i czemu kopia dumpa nie przechodzi
Obsługuję sieć operatora, park modułów jest mieszany, więc regularnie muszę przygotowywać moduły pod konkretne switche. Chcę wreszcie zrozumieć mechanikę weryfikacji, zamiast dobierać dumpy na oślep.
Czym operuję:
- Cisco Catalyst 2960X-24PS-L, najbardziej wybredny w parku
- QTECH QSW-3750-28TX-AC i D-Link DGS-3420, na nich te same moduły wstają spokojnie
- moduły SNR-SFP+SR i SFP-10G-BX
W dumpie modułu, który Catalyst akceptuje, na początku widzę bajt kodu vendora, a zaraz po nim nazwę w ASCII:
0E 43 49 53 43 4F ...
Co próbowałem: zdjąłem dump z modułu, który wstaje na C2960X-24PS-L, i przepisałem do innego modułu tylko nazwę vendora z tego dumpa. Na QTECH i D-Link po tej zmianie wszystko wstaje, a Catalyst takiego modułu nie akceptuje, mimo że poprawione bajty zgadzają się z dawcą jeden do jednego.
Stąd pytanie o mechanizm weryfikacji. Co dokładnie Cisco liczy i po jakich bajtach, gdzie w module leży wynik i czemu przepisanej z działającego dumpa nazwy vendora do tego za mało? Zależy mi na logice, dalej sam sobie poradzę.
Comments 6
Mechanika jest tam prosta i dawno rozpracowana. Sprawdzane jest nie pojedyncze pole, tylko para: bajt kodu vendora plus bajty nazwy vendora. Z tej sekwencji liczony jest MD5, a wynik leży w samym module, switch liczy to samo i porównuje.
Odtwarza się to standardowymi narzędziami, nic specjalnego nie trzeba:
Podstawiasz swój kod i swoją nazwę vendora i dostajesz wartość, która powinna leżeć w module. Z kodów, które faktycznie trafiają się w dumpach: 02 - Finisar, 0E - Methode, 11 pojawia się regularnie, ale czyj jest, tak nigdy nie rozpoznano. Jeśli para kod-nazwa jest spójna, a hash jej odpowiada, moduł na C2960X-24PS-L przechodzi.
Do poprzedniego: pokaż, co naprawdę leży w odbiorniku. Jaki bajt kodu vendora tam został i jaka nazwa stoi obok? Sądząc po opisie, przeniosłeś nazwę, a kod albo sam hash zostawiłeś z modułu macierzystego, i wtedy para się rozjeżdża, a Catalyst odbija ją całkowicie zasadnie. Sprawdzaj wszystkie trzy rzeczy naraz, a nie tylko to pole, które widać w wyjściu switcha.
Sprawdziłem, wszystko zgadza się z waszą wersją. W dawcy 0E i dalej CISCO, a w odbiorniku nazwę faktycznie przepisałem, ale kod vendora został macierzysty, i hash też stary. Przepuściłem obie kombinacje przez xxd -r -p i md5sum: u dawcy wartość zgadza się z tym, co leży w module, w moim złożonym ręcznie nie.
Czyli przenosić trzeba parę w całości, a nie pojedyncze pole. Teraz przynajmniej jasne, na co patrzeć i co sprawdzać, zanim wstawi się moduł w port.
Ważny wniosek, o którym ciągle się zapomina: jeśli kod vendora i nazwa nie są spójne, moduł nie przejdzie na Catalyst nawet wtedy, gdy na switchu włączone jest zezwolenie na niewspierane moduły. Właśnie dlatego cudze dumpy działają co drugi raz - poprawiano je częściowo, a weryfikacja patrzy na parę.
Stąd praktyczny wniosek co do objętości: w 256-bajtowym dumpie znaczące jest pierwsze 128 bajtów, dalej idzie strefa producenta. Całego obrazu ciągnąć nie trzeba, ale pierwszą połowę trzeba przenosić spójnie, łącznie z polami, których gołym okiem w wyjściu switcha nie widać.
Nawiasem mówiąc, dumpem nie rozwiąże się wszystkiego. W Medick SFP-10G-BX siedzi nie pamięć, tylko mikrokontroler C8051F392: emuluje A0 i A2 i spokojnie może trzymać hasło albo zapytanie vendorskie. Tam choćby do bajtu zweryfikuj parę - z zewnątrz i tak jej nie przyjmą. Z żywych narzędzi mam w użyciu SNR SFP Writer i SFPTotal Plus, u kolegów jeszcze samoróbki na CH341.
Drobna poprawka, żeby nie wprowadzać w błąd tych, którzy trafią tu później. Ten MD5 nie ma nic wspólnego z sumami kontrolnymi MSA: CC_BASE i CC_EXT z SFF-8472 liczone są prostym sumowaniem bajtów i przelicza się je od ręki. Weryfikacja vendorska żyje ponad nimi, według własnych zasad, i odbija moduł dokładnie w momencie, gdy z sumami MSA wszystko jest w porządku - stąd wrażenie, że dump jest poprawny, a moduł i tak nieprzyjęty.
Cisco, nawiasem mówiąc, wcale nie jest tu najgorszym przypadkiem: mechanika jest przynajmniej zrozumiała i odtwarzalna. Najciężej jest z HP i Arubą, gdzie pamięć zachowuje się interaktywnie i wymaga kluczy - tam dumpami się już nie załatwi sprawy.