CodingBox 문서

체크섬: CC_BASE, CC_EXT, CC_DMI, CMIS 페이지

모든 관리 규격은 식별 정보 블록을 하나 이상의 체크섬으로 보호합니다. 체크섬은 한 바이트로, 호스트가 내용을 신뢰하기 전에 손상되었거나 절반만 기록된 EEPROM을 감지할 수 있게 해줍니다. 계산 자체는 아주 간단하지만 잊어버리기도 쉽습니다. 방금 코딩한 모듈이 invalid로 표시되는 가장 흔한 원인은 편집 후 갱신하지 않은 낡은 체크섬입니다.

알고리즘

모든 체크섬은 같은 규칙을 씁니다: 해당 범위의 바이트를 부호 없는 8비트 값으로 더하고 합계의 하위 8비트만 남깁니다(합계 modulo 256). CRC도, 다항식도 쓰지 않습니다.

sum = 0
for each byte b in range:
    sum = (sum + b) & 0xFF
checksum = sum

예시: 10GBASE-SR SFP의 첫 다섯 바이트 03 04 07 10 00 → 3 + 4 + 7 + 16 + 0 = 30 = 1Eh. 바이트 62까지 이어서 계산한 결과가 CC_BASE입니다.

각 체크섬의 위치

규격체크섬위치범위
SFF-8472(SFP)CC_BASEA0h 바이트 63A0h 바이트 0–62
SFF-8472CC_EXTA0h 바이트 95A0h 바이트 64–94
SFF-8472CC_DMIA2h 바이트 95A2h 바이트 0–94(임계값과 교정 상수)
SFF-8636(QSFP)CC_BASE바이트 191상위 페이지 00h 바이트 128–190
SFF-8636CC_EXT바이트 223바이트 192–222
INF-8077i(XFP)CC_BASE바이트 191바이트 128–190
INF-8077iCC_EXT바이트 223바이트 192–222
CMIS페이지 체크섬page 00h 바이트 222page 00h 바이트 128–221
CMIS페이지 체크섬page 01h 바이트 255page 01h 바이트 130–254(128–129는 비활성 펌웨어 버전을 담고 있어 제외)
CMIS페이지 체크섬page 02h 바이트 255page 02h 바이트 128–254
CMIS페이지 체크섬page 04h 바이트 255page 04h 바이트 128–254

어떤 체크섬으로도 보호되지 않는 영역: 벤더 전용 영역(SFP A0h 96–127, QSFP 224–255, CMIS 223–255), 사용자 EEPROM, 실시간 모니터와 플래그, QSFP page 03h 임계값, CMIS 레인 페이지입니다. 벤더는 벤더 영역에 자체 무결성 필드를 추가하기도 하지만, 이는 규격의 일부가 아닙니다.

호스트의 대응 방식

동작잘못된 체크섬의 결과
CC_BASE를 검증(대부분의 스위치와 라우터)모듈이 invalid, unsupported, EEPROM checksum error로 표시됨; 포트가 errdisable될 수 있음; 레이저가 꺼진 채로 유지되는 경우가 많음
CC_EXT도 함께 검증위와 동일하거나, 플랫폼에 따라 로그 기록만 남음
CC_DMI를 검증DDM이 not supported로 표시되거나 값이 무시됨; 링크 자체는 영향받지 않음
체크섬을 무시(많은 NIC, 일부 오픈 스위치)모듈은 정상 동작함; 오류는 도구에서만 드러남

체크섬 오류는 식별 정보와 함께 보고되므로, 정책 문제까지 겹친 모듈은 한 메시지가 다른 메시지를 가리기도 합니다. 체크섬은 고치기 쉬우니 먼저 확인하십시오. 증상별 정리: 증상 색인.

다시 계산해야 하는 경우

  • 보호 범위 안의 어떤 내용이든 편집한 뒤: 벤더명, 부품 번호, 시리얼 번호, 날짜 코드, 컴플라이언스 코드, 파장, 길이, 옵션, 전력 등급.
  • SFP에서 임계값이나 교정 상수를 적용한 뒤(CC_DMI).
  • 다른 모듈에서 가져온 부분 이미지를 복원한 뒤.
  • 벤더 영역, 사용자 EEPROM, A2h 제어 바이트를 변경한 경우에는 필요 없음.

작업 순서: 편집 → 영향받는 모든 체크섬 재계산 → 쓰기 → 다시 읽기 → 검증. 체크섬 바이트를 그 대상 데이터보다 먼저 쓰면, 그 사이에 전원이 끊길 경우 모듈이 invalid 상태가 되는 취약한 구간이 생깁니다.

체크섬과 벤더 락

올바른 체크섬은 필요조건이지 충분조건이 아닙니다. 엄격한 플랫폼은 벤더 블록도 확인하며, 락이 걸린 설계에서는 규격의 체크섬이 전혀 알지 못하는 벤더 영역의 독자 서명까지 확인합니다. CC_BASE는 통과했는데 식별 정보가 거부된다면 이는 체크섬 문제가 아니라 벤더 락 사례입니다: 벤더 락, 벤더 필드.

CodingBox에서

CodingBox는 쓰기 때마다 CC_BASE, CC_EXT, CC_DMI, CMIS 페이지 체크섬을 자동으로 다시 계산하고, 모듈을 읽을 때 불일치를 강조 표시합니다. Check transceiverEEPROM editor에서 체크섬 필드가 빨간색이면, 다른 곳에서 모듈을 편집하고 체크섬을 고치지 않았거나 EEPROM이 손상되었다는 뜻입니다.

각 체크섬이 주변 바이트 사이 어디에 있는지: SFF-8472 A0h(63, 95), A2h(95), SFF-8636 상위(191, 223), CMIS 상위 페이지(222, 255), XFP(191, 223).


이 문서에서 부정확한 내용이나 오류를 발견하면 해당 부분을 선택하고 Ctrl+Enter를 눌러 해 주세요.