CodingBox 문서

호스트의 동작: 탐지, 검증, 기동

규격은 모듈 쪽 — 핀, 메모리, 상태를 설명합니다. 이 페이지는 호스트 쪽을 설명합니다: 모듈이 삽입된 순간부터 트래픽이 흐르기까지 스위치, 라우터, NIC가 실행하는 순서이며, 각 단계가 사용하는 핀, 바이트, 타이밍을 다룹니다. 이를 알면 "포트가 미지원이라고 한다"가 "호스트가 4단계에서 멈췄다"로 바뀌며, 벤치에서는 완벽한 모듈이 포트에서는 여전히 실패할 수 있는 이유를 알 수 있습니다.

폼 팩터별 저속 신호

폼 팩터존재 감지리셋/전원인터럽트/장애기타
SFP / SFP+ / SFP28MOD_ABS(로우 = 존재)—(TX_DISABLE이 레이저를 제어)TX_FAULT, RX_LOSRS0, RS1 레이트 셀렉트
XFPMod_ABSP_Down/RSTInterrupt, Mod_NR(준비되지 않음), RX_LOSTX_DIS, Mod_DeSel
QSFP+ / QSFP28ModPrsLResetL, LPModeIntLModSelL
QSFP-DDModPrsLResetL, LPModeIntLModSelL
OSFPPRSnRSTn, LPWnINT—(선택 핀 없음, 포트당 버스 1개)
SFP-DDSFP와 동일한 모듈 부재 신호저전력 요청인터럽트SFP와 동일한 레이트 셀렉트

계열별 핀 기능과 핀 배치: SFP 하드웨어, QSFP 하드웨어, XFP.

시퀀스

#단계SFP(SFF-8472)QSFP(SFF-8636)CMIS실패 시 나타나는 현상
1감지MOD_ABS가 로우로 떨어짐; 디바운스ModPrsL 로우ModPrsL / PRSn 로우포트가 비어 있는 상태로 유지됨; 모듈 “감지되지 않음”
2전원과 대기3.3 V는 항상 켜져 있음; t_init 300 ms 대기LPMode 하이 상태로 전원 인가(클래스 1만); t_init 2 s 대기 또는 Data_Not_Ready 폴링동일; 모듈 상태가 MgmtInit을 벗어날 때까지 대기(≤ 2 s)읽기 결과가 FFh / 00h로 나옴; 식별 정보가 비어 있음
3식별A0h 0–95 읽기; 바이트 0 = 03h이면 SFF-8472 파서 선택0–127과 상위 00h 읽기; 바이트 0 = 0Dh/11h, 바이트 1은 리비전하위 페이지와 상위 00h 읽기; 바이트 0 = 18h/19h…, 바이트 1은 CMIS 버전unknown module type
4검증CC_BASE, CC_EXT; 식별자/커넥터/인코딩 일관성CC_BASE, CC_EXT페이지 00h 체크섬invalid EEPROM, checksum error체크섬
5유형 디코딩컴플라이언스 바이트 3–10, 36; 레이트 바이트 12/66; 길이; 파장바이트 131–138, 192; 140/222미디어 유형 85, 애플리케이션 디스크립터speed and type not supported컴플라이언스 코드
6정책벤더 이름/PN(경우에 따라 서명까지)을 호환성 표와 대조동일동일unsupported transceiver, errdisable — 벤더 락
7전력 클래스바이트 64 레벨 비트를 포트 버짓과 비교바이트 129 클래스; 저전력 해제 / 클래스 5–8 활성화하려면 바이트 93에 기록바이트 200 클래스를 포트와 비교; LPMode 해제 또는 LowPwrRequestSW 지우기 → 모듈 PwrUp → Ready저전력 상태로 유지됨, power exceeds전력과 발열
8구성RS0/RS1 또는 소프트 레이트 셀렉트; 호스트 측 속도, FEC, SGMII/1000BASE-XCDR 온/오프(98), 레이트 셀렉트(87–88), 호스트의 브레이크아웃 레인단계별 제어 세트에서 AppSel/DataPathID 선택 → ApplyDPInit → 데이터 경로 Init → InitializedLOL, FEC 불일치, 브레이크아웃 거부됨 — 속도와 레이트
9Tx 활성화TX_DISABLE 핀 로우 또는 소프트 비트 지우기(A2h 110.6)바이트 86 = 00h페이지 10h 바이트 130 = 00h → DPTxTurnOn → DPActivated원단에서 −40 dBm 관측 — 링크 없음 체크리스트
10링크PHY/MAC가 신호를 감지; DAC에서는 AN/링크 트레이닝레인마다 동일데이터 경로마다 동일수치는 정상인데 링크가 다운됨
11모니터링몇 초마다 A2h 모니터와 플래그 폴링; TX_FAULT / RX_LOS 핀IntL → 플래그 3–21 읽기; 모니터 폴링IntL → 모듈 플래그 + 페이지 11h 레인 플래그; VDM알람, 플래핑 — DDM 레벨, 링크 플래핑
12제거MOD_ABS 하이 → 종료 처리ModPrsL 하이ModPrsL 하이디바운스를 놓치면 오래된 상태가 남음

QSFP와 CMIS 모듈에서는 3–6단계가 저전력 상태에서 일어납니다: 호스트는 광학계에 전력을 쓰기 전에 먼저 검증합니다. 그래서 잠기거나 잘못 코딩된 모듈은 레이저가 절대 켜지지 않으며, 전기적으로는 멀쩡한 모듈인데도 원단에서 −40 dBm으로 읽히는 이유가 여기 있습니다.

호스트가 기다리는 타이밍

대기SFPQSFPCMIS
삽입 후 관리 기능 준비300 ms2 s≤ 2 s(MgmtInit) 이후 LowPwr 상태
저전력 해제 후Data_Not_Ready가 지워질 때까지모듈 상태가 Ready가 될 때까지(최대 지속 시간은 페이지 01h에 광고)
데이터 경로 초기화단계별로 광고(니블 코드: < 1 ms … < 50 min)
Tx 활성화부터 발광까지t_on ≤ 1 mston_txdis 100 ms / toff 400 msDPTxTurnOn 지속 시간 광고
플래그부터 인터럽트까지ton_IntL 200 ms하드웨어 규격에 따름

버스 수준 타이밍(t_WR, 클록 스트레치): 2선식 인터페이스.

호스트마다 다른 정책 지점

  • 화이트리스트 엄격도 — "벤더 이름만 확인"부터 서명된 벤더 지정 블록까지.
  • 거부 시 동작 — 포트 비활성화, 레이저 끄기, 또는 로그만 남기고 링크는 허용(서드파티 광학계).
  • CMIS 지원 깊이 — 애플리케이션/데이터 경로를 완전히 제어하는 방식부터 “LPMode를 풀고 기대하는” 방식까지(CMIS 문제).
  • FEC와 속도 기본값 — 컴플라이언스 코드에서 유도되거나 정적으로 구성됩니다.
  • DDM 폴링 — 주기, 임계값 초과 시 포트를 종료할지, 외부 교정을 적용할지(교정).

호스트가 어디서 멈췄는지 확인하는 벤더별 CLI: 스위치에서 옵틱스 검증.

프로그래머가 호스트와 다른 점

CodingBox 같은 프로그래머는 1–5단계와 11단계는 실행하지만 정책은 실행하지 않습니다: 벤더 영역과 비밀번호 바이트를 포함해 모듈이 노출하는 모든 것을 읽고, 별도로 요청하지 않는 한 CMIS 모듈을 저전력 상태로 유지하며, 레이저는 스스로 절대 켜지 않습니다. 그래서 모듈이 벤치에서는 건강해 보여도 포트에서는 여전히 실패할 수 있습니다 — 벤치에는 6단계가 없습니다.

CodingBox에서

Check transceiver는 호스트가 보는 것과 같은 방식으로 3–5단계의 결과 — 유형, 레이트, 체크섬, 전력 클래스 — 를 보여주고, 모듈이 포트에 도달하기 전에 불일치를 표시합니다; DDM은 실시간 모니터와 플래그로 11단계를 다룹니다.

6단계(정책) 뒤에 있는 하드웨어와 8단계 뒤에 있는 포트 그룹 한계: 스위치 내부, NOS마다 모듈을 검증하는 방법.


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