Checksum: CC_BASE, CC_EXT, CC_DMI, các trang CMIS · Đặc tả và tiêu chuẩn · Transceiver quang và cáp · Tài liệu · CodingBox
CodingBox Tài liệu

Checksum: CC_BASE, CC_EXT, CC_DMI, các trang CMIS

Mọi đặc tả quản lý đều bảo vệ khối nhận dạng của mình bằng một hoặc nhiều checksum — một byte duy nhất giúp host phát hiện một EEPROM bị hỏng hoặc ghi dở trước khi tin vào nội dung của nó. Chúng tầm thường để tính nhưng dễ quên: một checksum lỗi thời sau khi chỉnh sửa là lý do phổ biến nhất khiến một module vừa được mã hóa lại bị báo là invalid.

Thuật toán

Tất cả đều dùng chung một quy tắc: cộng các byte trong phạm vi được bao phủ như các giá trị 8-bit không dấu và giữ lại 8 bit thấp của tổng (tổng theo modulo 256). Không CRC, không đa thức.

sum = 0
với mỗi byte b trong phạm vi:
    sum = (sum + b) & 0xFF
checksum = sum

Ví dụ — năm byte đầu tiên của một SFP 10GBASE-SR: 03 04 07 10 00 → 3 + 4 + 7 + 16 + 0 = 30 = 1Eh. Tiếp tục đến hết byte 62 thì kết quả chính là CC_BASE.

Mỗi checksum nằm ở đâu

Đặc tảChecksumVị tríPhạm vi
SFF-8472 (SFP)CC_BASEA0h byte 63A0h byte 0–62
SFF-8472CC_EXTA0h byte 95A0h byte 64–94
SFF-8472CC_DMIA2h byte 95A2h byte 0–94 (ngưỡng và các hằng số hiệu chuẩn)
SFF-8636 (QSFP)CC_BASEbyte 191trang trên 00h byte 128–190
SFF-8636CC_EXTbyte 223byte 192–222
INF-8077i (XFP)CC_BASEbyte 191byte 128–190
INF-8077iCC_EXTbyte 223byte 192–222
CMISchecksum trangtrang 00h byte 222trang 00h byte 128–221
CMISchecksum trangtrang 01h byte 255trang 01h byte 130–254 (128–129 chứa phiên bản firmware không hoạt động và bị loại trừ)
CMISchecksum trangtrang 02h byte 255trang 02h byte 128–254
CMISchecksum trangtrang 04h byte 255trang 04h byte 128–254

Không được checksum nào bao phủ: các vùng riêng nhà sản xuất (SFP A0h 96–127, QSFP 224–255, CMIS 223–255), EEPROM người dùng, các giám sát và cờ trực tiếp, ngưỡng trang 03h của QSFP, và các trang làn của CMIS. Nhà sản xuất có thể thêm các trường toàn vẹn riêng của họ trong vùng nhà sản xuất — những trường đó không phải một phần của đặc tả.

Host làm gì với chúng

Hành viKết quả khi checksum sai
Kiểm tra CC_BASE (hầu hết switch và router)module hiển thị là invalid, unsupported hoặc EEPROM checksum error; cổng có thể vào errdisable; laser thường bị giữ tắt
Kiểm tra cả CC_EXTnhư trên, hoặc chỉ ghi log, tùy nền tảng
Kiểm tra CC_DMIDDM hiển thị là not supported hoặc giá trị bị bỏ qua; bản thân liên kết không bị ảnh hưởng
Bỏ qua checksum (nhiều NIC, một số switch mở)module vẫn hoạt động; lỗi chỉ lộ ra trong các công cụ

Lỗi checksum được báo cáo cùng với thông tin nhận dạng, nên một module vừa có vấn đề checksum vừa có vấn đề chính sách sẽ chỉ hiện một thông báo che khuất thông báo kia — hãy kiểm tra checksum trước, đó là cách khắc phục rẻ nhất. Bản đồ triệu chứng: Chỉ mục triệu chứng.

Khi nào cần tính lại

  • Sau khi chỉnh sửa bất cứ điều gì trong các phạm vi được bao phủ — tên nhà sản xuất, mã sản phẩm, số sê-ri, mã ngày, mã tuân thủ, bước sóng, các chiều dài, tùy chọn, cấp công suất.
  • Sau khi áp dụng ngưỡng hoặc các hằng số hiệu chuẩn trên SFP (CC_DMI).
  • Sau khi khôi phục một ảnh một phần từ module khác.
  • Không cần thiết đối với thay đổi trong vùng nhà sản xuất, EEPROM người dùng hoặc các byte điều khiển A2h.

Thứ tự thao tác: chỉnh sửa → tính lại mọi checksum bị ảnh hưởng → ghi → đọc lại → xác minh. Ghi byte checksum trước dữ liệu mà nó bao phủ sẽ để lại một khoảng hở, nơi mất điện có thể tạo ra một module không hợp lệ.

Checksum và khóa nhà sản xuất

Checksum đúng là điều kiện cần, không phải điều kiện đủ. Một nền tảng nghiêm ngặt còn kiểm tra khối riêng của nhà sản xuất và, trên các thiết kế bị khóa, một chữ ký độc quyền trong vùng nhà sản xuất mà các checksum của đặc tả hoàn toàn không biết tới. CC_BASE đúng nhưng thông tin nhận dạng bị từ chối trông giống một trường hợp khóa nhà sản xuất, không phải trường hợp checksum — Khóa nhà sản xuất, Trường của nhà sản xuất.

Trong CodingBox

CodingBox tự động tính lại CC_BASE, CC_EXT, CC_DMI và các checksum trang của CMIS ở mỗi lần ghi, và tô sáng khi phát hiện sai lệch lúc đọc một module — một trường checksum màu đỏ trên Check transceiver hoặc trong EEPROM editor nghĩa là module đã bị chỉnh sửa ở nơi khác mà không sửa lại checksum, hoặc EEPROM bị hỏng.

Mỗi checksum nằm ở đâu giữa các byte lân cận: SFF-8472 A0h (63, 95), A2h (95), SFF-8636 trang trên (191, 223), các trang trên của CMIS (222, 255), XFP (191, 223).


Nếu bạn phát hiện thông tin chưa chính xác hoặc lỗi trong bài viết này, hãy chọn đoạn liên quan và nhấn Ctrl+Enter để .