CodingBox 문서

CMIS — 공통 관리

CMIS(Common Management Interface Specification)는 QSFP-DD, OSFP, OSFP-XD, QSFP112, SFP-DD, SFP112(SFP+ with CMIS로), DSFP, COBO, CMIS 지원 QSFP까지 모든 신형 고속 폼 팩터의 관리 모델입니다. QSFP-DD MSA(CMIS 3.0, 2018년)에서 시작해 OSFP와 COBO 그룹이 채택했으며, 버전 5.0(2021년)부터는 OIF가 관리합니다. SFF-8636과 비교하면 단순히 더 큰 메모리 맵이 아니라 다른 모델입니다: 최대 32레인을 위한 뱅크화된 페이지, 모듈과 각 데이터 경로를 위한 명시적 상태 머신, 컴플라이언스 비트 필드 대신 쓰는 애플리케이션, 다양한 진단 기능(VDM), 펌웨어와 확장 기능을 위한 명령 채널(CDB)입니다. 버전 바이트와 이력: 규격 리비전.

메모리 모델

영역주소 지정내용
하위 페이지(바이트 0–127)항상 접근 가능식별자, 리비전, 모듈 상태, 플래그, 모듈 모니터, 전역 제어, 미디어 유형, 애플리케이션 디스크립터 1–8, 비밀번호, 뱅크 선택 126, 페이지 선택 127
상위 페이지 00h(128–255)페이지 127 = 00h벤더 블록, 전력 클래스, 커넥터, 케이블 길이, 미디어 기술, 체크섬
01h광고펌웨어/하드웨어 리비전, 링크 길이, 파장, 지원되는 페이지와 뱅크, 지속 시간, 신호 무결성 제어, 디스크립터 9–15
02h임계값모듈과 레인의 알람/경고 임계값
04h레이저 기능튜너블 레이저 그리드와 범위(SFF-TA-1004 계열)
10h(뱅크화)레인 제어데이터 경로 비활성화, Tx disable, 극성, 스퀠치, 등화, 단계별 제어 세트
11h(뱅크화)레인 상태데이터 경로 상태, 레인별 플래그, 레인 모니터, 구성 상태, 활성 제어 세트
12h(뱅크화)튜너블 레이저 제어레인별 채널/파장
13h–14h(뱅크화)진단루프백, PRBS 생성기와 검사기
20h–2Fh(뱅크화)VDM디스크립터, 샘플, 임계값, 플래그
9FhCDB명령 블록: 명령 ID, 길이, 체크섬, 로컬 페이로드
A0h–AFhCDB EPL대용량 전송(펌웨어 이미지)을 위한 확장 페이로드
80h–FFh(기타)벤더벤더 지정 페이지

뱅크는 레인 8개를 다룹니다: 뱅크 0은 레인 1–8, 뱅크 1은 레인 9–16, 이런 식입니다; 몇 개가 구현되어 있는지는 페이지 01h에 광고됩니다. 페이지 00h만 있는 모듈은 플랫 메모리 비트(바이트 2 비트 7)를 세팅합니다. 버스: 단일 주소 A0h, 최대 400 kHz, 슬롯별 ModSelL — 2선식 인터페이스.

하위 페이지 — 호스트가 의존하는 바이트

바이트필드비고
0식별자18h QSFP-DD, 19h OSFP, 1Eh QSFP with CMIS…(SFF-8024)
1CMIS 리비전메이저.마이너 니블: 50h = 5.0, 40h = 4.0, 30h = 3.0
2메모리 특성비트 7 플랫 메모리, 그 외 stepped-config-only 등 기능 비트
3모듈 상태비트 3–1: 1 LowPwr, 2 PwrUp, 3 Ready, 4 PwrDn, 5 Fault; 비트 0 인터럽트 비활성화
8–11모듈 플래그상태 변경, 온도/Vcc 알람, 보조 알람, 벤더 지정; 래치되며 읽으면 지워짐
14–25모듈 모니터온도, Vcc, Aux1–Aux3(TEC 전류, 레이저 온도, 추가 공급 전압), 벤더 지정
26전역 제어5.x: 비트 6 LowPwrAllowRequestHW, 비트 5 스퀠치 방식, 비트 4 LowPwrRequestSW, 비트 3 소프트웨어 리셋(4.x: 비트 6 LowPwr, 비트 4 ForceLowPwr)
37–38CDB 상태명령 블록 1과 2의 처리 중 / 성공 / 실패
39–40활성 펌웨어실행 중인 이미지의 메이저.마이너
85미디어 유형01h MMF, 02h SMF, 03h 패시브 구리, 04h 액티브 케이블, 05h BASE-T
86–117애플리케이션 디스크립터 1–8각 4바이트: 호스트 인터페이스 ID, 미디어 인터페이스 ID, 호스트/미디어 레인 수, 호스트 레인 할당 옵션
118–121비밀번호 변경벤더 정의
122–125비밀번호 입력벤더 정의 — 쓰기 보호 비밀번호가 들어가는 위치
126뱅크 선택
127페이지 선택

모듈 상태 머신

Reset ──► MgmtInit ──► ModuleLowPwr ──► ModulePwrUp ──► ModuleReady
                            ▲                              │
                            └──────── ModulePwrDn ◄────────┘
                       (ModuleFault from any state on a fatal error)
  • MgmtInit — 모듈이 컨트롤러를 부팅합니다; 식별 정보는 아직 읽을 수 없습니다(하드웨어 규격 기준 최대 2 s).
  • ModuleLowPwr — 식별 정보, 광고, 임계값을 읽을 수 있습니다; 전력은 클래스 1로 제한됩니다; 호스트가 여기서 모듈을 검증합니다.
  • ModulePwrUp → ModuleReady — 호스트가 LPMode 핀을 해제하면(또는 LowPwrRequestSW를 지우면) 모듈이 광학계에 전력을 공급합니다; 이제 데이터 경로를 초기화할 수 있습니다.
  • ModulePwrDn — LPMode가 인가되면 역순으로 진행됩니다.

LowPwr에서 절대 벗어나지 못하는 모듈은 CMIS의 전형적인 장애 티켓입니다: CMIS 문제, 전력과 발열.

애플리케이션과 데이터 경로

컴플라이언스 비트 대신, CMIS 모듈은 애플리케이션을 광고합니다 — 호스트 전기 인터페이스와 미디어 인터페이스의 조합에 레인 수를 더한 것입니다:

디스크립터호스트 인터페이스미디어 인터페이스호스트 레인 / 미디어 레인
App 112h 400GAUI-8 C2M1Ch 400GBASE-DR48 / 4400G 링크 1개
App 20Eh 100GAUI-2 C2M14h 100GBASE-DR2 / 14 × 100G 브레이크아웃

호스트는 레인마다 AppSel(비트 7–4), DataPathID(비트 3–1), explicit-control 비트를 단계별 제어 세트 0(페이지 10h 바이트 145–152)에 기록해 애플리케이션을 선택한 뒤, ApplyDPInit(페이지 10h 바이트 143)을 인가합니다. 모듈은 ConfigStatus(페이지 11h 바이트 202–205: 승인, 거부, AppSel 오류, 레인 조합 오류…)로 응답하고, 승인된 값을 활성 제어 세트(페이지 11h 206–221)에 복사합니다. 이후 각 데이터 경로는 자신만의 상태 머신을 따라갑니다:

DPDeactivated ──► DPInit ──► DPInitialized ──► DPTxTurnOn ──► DPActivated
       ▲                                                          │
       └────────── DPDeinit ◄───────── DPTxTurnOff ◄──────────────┘

상태는 페이지 11h 바이트 128–131에 레인별로 보고되며(레인당 니블 1개), 각 단계의 최대 지속 시간은 호스트가 얼마나 기다려야 하는지 알 수 있도록 페이지 01h에 광고됩니다. 레인별 Tx disable은 페이지 10h 바이트 130에 있습니다. 모듈이 애플리케이션으로 나열하지 않은 브레이크아웃은 그냥 사용할 수 없습니다 — 속도와 레이트.

모니터링: 플래그, 모니터, VDM

  • 모듈 모니터(하위 페이지 14–25)와 레인 모니터(페이지 11h: Tx 파워 154–169, Tx 바이어스 170–185, Rx 파워 186–201, 레인당 2바이트)는 SFP/QSFP와 동일한 16비트 형식을 사용합니다(단위).
  • 임계값은 페이지 02h에 있습니다; 플래그는 래치되며 읽으면 지워지고, 플래그마다 마스크가 있습니다; IntL은 마스크되지 않은 플래그가 있으면 신호를 보냅니다.
  • VDM(페이지 20h–2Fh)은 예전 규격에는 없던 관측값을 추가합니다: pre-FEC BER, 정정 불가능한 FEC 프레임, 레인별 SNR, 레이저 온도와 노화, eSNR, PAM4 레벨 전환 파라미터 — 각각 자체 디스크립터, 임계값, 플래그를 가집니다. 이것이 400G 모듈이 오류가 호스트에 도달하기 전에 링크 품질을 보고하는 방법입니다(모니터링).

CDB — 명령 데이터 블록

페이지 9Fh는 메일박스입니다: 호스트가 명령 ID(바이트 128–129), 페이로드 길이(130–132), 체크섬(133), 최대 120바이트의 로컬 페이로드(136–255)를 기록하고, 필요하면 EPL 페이지 A0h–AFh에 더 기록합니다; 모듈이 이를 실행하고 상태 바이트 37–38과 응답 페이로드로 보고합니다. 표준 명령은 다음과 같습니다:

명령용도
0000h상태 조회
0040h / 0041h모듈 기능 / 펌웨어 관리 기능
0100h펌웨어 정보 가져오기(실행 중 이미지와 비활성 이미지)
0101h펌웨어 다운로드 시작
0103h / 0104hLPL/EPL을 통한 펌웨어 블록 쓰기
0107h다운로드 완료
0109h / 010Ah이미지 실행 / 이미지 커밋
0102h중단

CDB는 벤더 도구가 현장에서 모듈 펌웨어를 업데이트하는 방법이며, 일부 벤더가 구성과 잠금 해제 기능을 구현하는 방법이기도 합니다. 지원 여부와 기능은 페이지 01h에 광고됩니다.

체크섬과 비밀번호

페이지 00h 바이트 222는 바이트 128–221의 체크섬입니다; 페이지 01h, 02h, 04h는 바이트 255에 페이지 체크섬을 담습니다(체크섬). 비밀번호(122–125)와 벤더 락 해제 방식은 규격 범위 밖입니다 — EEPROM 재코딩.

호스트 지원

네트워크 운영체제가 CMIS 4.0과 5.x를 구현하는 정도는 제각각입니다: 애플리케이션/데이터 경로 전체 흐름을 직접 제어하는 것도 있고, LPMode만 해제한 뒤 모듈이 스스로 기동하기를 기대하는 것도 있습니다. 이 차이가 “인식은 되지만 절대 준비되지 않는” 대부분의 장애 티켓 뒤에 있습니다 — CMIS 문제, 호스트의 동작.

CodingBox에서

CodingBox는 식별자와 리비전 바이트로 CMIS를 감지하고, 하위 메모리와 페이지 00h, 01h, 02h, 뱅크화된 레인 페이지를 읽으며, 애플리케이션 디스크립터를 SFF-8024와 대조해 디코딩하고, 모듈과 데이터 경로 상태, 레인별 모니터를 DDM에서 보여주며, EEPROM editor에서 페이지 체크섬을 재계산하면서 식별 정보를 편집합니다. CDB를 통한 펌웨어 작업은 벤더마다 다르며 에디터의 범위 밖입니다.

레지스터 수준 표: 하위 페이지 맵, 상위 페이지 맵 00h/01h/02h, 레인 페이지 맵 10h/11h, VDM, CDB.


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