Catalyst 2960X가 SFP 덤프에서 계산하는 것: 벤더 코드, 이름, MD5, 그리고 덤프를 복사해도 안 되는 이유
통신사 네트워크를 관리하고 있는데 모듈 구성이 뒤섞여 있어서, 특정 스위치에 맞게 모듈을 준비하는 일이 정기적으로 생깁니다. 이제는 덤프를 감으로 맞추는 대신 체크 메커니즘을 제대로 이해하고 싶습니다.
다루는 장비:
- Cisco Catalyst 2960X-24PS-L, 장비 중 가장 까다로움
- QTECH QSW-3750-28TX-AC와 D-Link DGS-3420, 여기서는 같은 모듈이 조용히 올라옴
- SNR-SFP+SR과 SFP-10G-BX 모듈
Catalyst에서 받아들여지는 모듈의 덤프를 보면, 맨 앞에 벤더 코드 바이트가 있고 그다음에 ASCII로 된 이름이 있습니다:
0E 43 49 53 43 4F ...
시도해본 것: C2960X-24PS-L에서 올라오는 모듈의 덤프를 뜬 다음, 다른 모듈에는 그 덤프에서 벤더 이름만 옮겨 썼습니다. QTECH와 D-Link에서는 이렇게 하면 전부 올라오는데, Catalyst는 수정한 바이트가 도너와 완전히 일치하는데도 그 모듈을 받아들이지 않습니다.
그래서 체크 구조에 대한 질문입니다. Cisco가 정확히 뭘, 어떤 바이트를 기준으로 계산하나요? 그 결과는 모듈 어디에 저장되나요? 그리고 정상 동작하는 덤프에서 옮겨 쓴 벤더 이름만으로는 왜 부족한가요? 저는 로직만 알면 되고 나머지는 직접 해결하겠습니다.
Comments 6
거기 메커니즘은 단순하고 예전에 이미 다 밝혀졌습니다. 개별 필드가 아니라 조합을 검사합니다. 벤더 코드 바이트 더하기 벤더 이름 바이트요. 이 시퀀스에서 MD5를 구하고, 결과는 모듈 자체에 저장되며, 스위치는 똑같이 계산해서 비교합니다.
일반 유틸리티로 재현됩니다, 특별한 건 필요 없습니다:
본인의 코드와 벤더 이름을 넣으면 모듈에 있어야 할 값이 나옵니다. 실제 덤프에서 보이는 코드 중에는: 02 - Finisar, 0E - Methode, 11도 자주 나오는데 누구 건지는 끝내 밝혀지지 않았습니다. 코드-이름 쌍이 맞고 해시가 그것과 일치하면, 모듈은 C2960X-24PS-L을 통과합니다.
앞 답변에 덧붙이자면: 실제로 수신 모듈에 뭐가 들어 있는지 보여주세요. 거기 남아 있는 벤더 코드 바이트는 뭐고 옆에 있는 이름은 뭔가요? 설명을 보면 이름은 옮겼는데 코드나 해시 자체는 원래 모듈 것을 그대로 남겨둔 것 같고, 그러면 조합이 어긋나서 Catalyst가 완전히 정당하게 튕기는 겁니다. 스위치 출력에 보이는 필드 하나만 보지 말고 세 가지를 한꺼번에 확인하세요.
확인해봤는데 말씀하신 대로 다 맞습니다. 도너에는 0E 다음에 CISCO가 있고, 수신 쪽에서는 정말 이름만 옮겨 썼는데 벤더 코드는 원래 것 그대로 남아 있었고 해시도 예전 것이었습니다. 두 조합 다 xxd -r -p와 md5sum에 돌려봤는데, 도너는 모듈에 있는 값과 일치하고 제가 직접 조립한 쪽은 일치하지 않습니다.
그러니까 필드 하나씩이 아니라 조합 전체를 옮겨야 하는 거네요. 이제 적어도 모듈을 포트에 꽂기 전에 어디를 보고 뭘 대조해야 하는지는 알겠습니다.
다들 계속 잊어버리는 중요한 결과가 있습니다. 벤더 코드와 이름이 맞지 않으면, 스위치에서 미지원 모듈을 허용해뒀다 해도 Catalyst에서는 모듈이 통과하지 못합니다. 남의 덤프가 되다 안 되다 하는 게 바로 이래서입니다. 부분적으로만 고쳤는데, 체크는 조합을 보기 때문입니다.
여기서 용량에 대한 실용적인 결론도 나옵니다. 256바이트 덤프에서 의미 있는 건 앞쪽 128바이트뿐이고, 그다음은 제조사 영역입니다. 이미지 전체를 끌고 다닐 이유는 없고, 앞쪽 절반은 스위치 출력에 눈으로 안 보이는 필드까지 포함해서 조합에 맞게 옮겨야 합니다.
그런데 덤프로 전부 해결되는 건 아닙니다. Medick SFP-10G-BX에는 메모리가 아니라 마이크로컨트롤러 C8051F392가 들어 있습니다. 이게 A0과 A2를 에뮬레이션하고 비밀번호나 벤더 챌린지를 얼마든지 걸어둘 수 있습니다. 거기서는 조합을 바이트 단위까지 맞춰도 외부에서는 그냥 안 받아줍니다. 제가 실제로 쓰는 도구로는 SNR SFP Writer와 SFPTotal Plus가 있고, 동료들은 CH341 기반 자작 장비도 씁니다.
나중에 여기 오는 사람들이 헷갈리지 않도록 작은 정정을 하나 하자면. 이 MD5는 MSA 체크섬과는 아무 관계가 없습니다. SFF-8472의 CC_BASE와 CC_EXT는 바이트를 단순히 더해서 계산하고 순식간에 재계산됩니다. 벤더 체크는 그 위에 자기만의 규칙으로 얹혀 있고, MSA 합이 전부 정상인 바로 그 순간에 모듈을 튕겨냅니다. 그래서 덤프는 맞는데 모듈은 여전히 안 받아들여진다는 느낌이 드는 겁니다.
덧붙이자면 Cisco는 여기서 결코 최악의 케이스가 아닙니다. 적어도 메커니즘이 이해 가능하고 재현 가능하니까요. 제일 힘든 건 HP와 Aruba로, 메모리가 인터랙티브하게 동작하고 키를 요구합니다. 거기서는 덤프만으로는 이미 답이 안 나옵니다.