VDM과 FEC 지표: PAM4 링크
레인당 50G 이상에서는 광파워만으로는 더 이상 충분한 상태 지표가 되지 못합니다: Rx 파워가 완벽한 PAM4 링크도 커넥터 하나만 오염되면 정정 불가능한 오류로 이어질 수 있으며, 그 첫 신호는 dBm이 아니라 비트 오류율입니다. 이 수치는 두 가지 출처에서 얻을 수 있습니다. 모듈 내부에서는 CMIS VDM(다목적 진단 모니터링)이 레인별로 pre-FEC BER, SNR, 레이저 상태를 보고하고, 호스트에서는 FEC 디코더가 정정된 코드워드와 정정되지 않은 코드워드를 셉니다. 두 값을 함께 보면 링크가 손실 없이 트래픽을 나르는 동안에도 장애까지 얼마나 남았는지 알 수 있습니다.
FEC가 진단 방식을 바꾼 이유
PAM4 기반 25G 이상의 모든 이더넷 PMD는(그리고 대부분의 25G NRZ도) Reed-Solomon FEC를 전제로 합니다. 옵틱스는 10⁻⁵–10⁻⁴의 원시 오류율을 내도 되는데, FEC가 이를 10⁻¹² 이하로 복구해 주기 때문입니다. 그 결과: 열화되고 있는 링크도 FEC 한계를 넘기 전까지는 MAC에 오류가 전혀 없는 것으로 보이다가, 그 순간 갑자기 장애가 발생합니다. pre-FEC BER만이 마진을 매끄럽게 보여주는 유일한 지표입니다.
| FEC | 코드 | 코드워드당 정정 능력 | 10⁻¹² 출력을 위한 pre-FEC BER 한계(근사) | 사용처 |
|---|---|---|---|---|
| BASE-R(“FC-FEC”, Clause 74) | Fire code(2112, 2080) | 11비트 버스트 | ≈ 10⁻⁷ … 10⁻⁸, 이득 ~2 dB | 10G/25G NRZ, CA-25G-S |
| RS-FEC KR4(Clause 91/108) | GF(2¹⁰) 기반 RS(528, 514) | 심볼 7개 | ≈ 5 × 10⁻⁵ | 25GBASE-CR/SR/LR, 100GBASE-SR4/CWDM4/CR4 |
| RS-FEC KP4(Clause 119/134) | RS(544, 514) | 심볼 15개 | ≈ 2.4 × 10⁻⁴ | 모든 50G PAM4 레인: 50G/100G/200G/400G/800G |
| 연쇄형/oFEC(코히어런트) | 내부+외부 코드 | — | ≈ 10⁻² … 2 × 10⁻² | 400ZR(CFEC), OpenZR+(oFEC) |
설정 불일치: FEC, 자동 협상, 링크 트레이닝.
VDM — 모듈이 보고하는 것
VDM은 CMIS 페이지 20h–2Fh에 있으며(8레인 단위로 뱅크 구성), 페이지 01h에 지원 여부가 표시됩니다. 각 관측값은 기존 모니터와 똑같이 디스크립터(종류, 레인), 실시간 샘플, 네 개의 임계값, 플래그를 갖습니다.
| 페이지 | 내용 |
|---|---|
| 20h–23h | 디스크립터: 어떤 관측값인지, 어떤 레인인지, 어떤 임계값 세트인지 |
| 24h–27h | 샘플(각 2바이트) |
| 28h–2Bh | 임계값: 하이/로우 알람, 하이/로우 경고 |
| 2Ch–2Fh | 플래그와 마스크 |
관측값 종류(CMIS 4.0/5.x)
| ID | 관측값 | 단위/형식 | 의미 |
|---|---|---|---|
| 1 | 레이저 노화도 | %(U16) | 벤더가 추정한 소모 수명 |
| 2 | TEC 전류 | 최대치 대비 %(S16) | 냉각기 부하 — 온도와 전압 |
| 3 | 레이저 주파수 오차 | MHz(S16) | DWDM/ZR: 그리드로부터의 편차 |
| 4 | 레이저 온도 | °C(S16, 1/256) | 냉각형 레이저 |
| 5/6 | eSNR, 미디어/호스트 입력 | dB(U16, 1/256) | 등화 이후의 전기적 SNR — PAM4의 “아이 높이”; > 18–20 dB면 여유, < 15 dB면 아슬아슬(벤더에 따라 다름) |
| 7/8 | PAM4 레벨 전이 매개변수, 미디어/호스트 | dB | 네 레벨의 선형성 |
| 9/10 | Pre-FEC BER 최솟값, 미디어/호스트 | F16 | 구간 내 최선값 |
| 11/12 | Pre-FEC BER 최댓값 | F16 | 구간 내 최악값 — 경보에 사용할 수치 |
| 13/14 | Pre-FEC BER 평균값 | F16 | — |
| 15/16 | Pre-FEC BER 현재값 | F16 | 최근 샘플 |
| 17–24 | 프레임 오류율 카운트(FERC) 최소/최대/평균/현재, 미디어/호스트 | F16 | post-FEC 정정 불가 프레임 — 0이어야 함 |
| 128+ | 코히어런트 세트(CMIS 5.x): 변조기 바이어스, CD, DGD, SOPMD, OSNR, eSNR, Q-factor, Rx 총/신호 파워, 반송파 주파수 오프셋 등 | 다양 | 400ZR/ZR+ 모듈 |
F16은 CMIS의 16비트 비율 형식입니다: 5비트 지수와 11비트 가수로 구성되며, 값 = 가수 × 10^(지수 − 24)입니다. 예를 들어 pre-FEC BER 1.5 × 10⁻⁶은 가수 1500, 지수 15로 저장됩니다. 미디어 쪽은 광 회선을, 호스트 쪽은 스위치 ASIC로 이어지는 전기 인터페이스를 뜻합니다 — 호스트 쪽 BER이 나쁘면 광섬유가 아니라 커넥터나 보드를 의심해야 합니다.
호스트 측 FEC 카운터
스위치나 NIC는 포트별로, 흔히 레인별로도 다음을 집계합니다:
| 카운터 | 정상 | 주의 | 장애 |
|---|---|---|---|
| 정정된 코드워드 | 서서히 증가(pre-FEC BER 10⁻⁸ … 10⁻⁶) | 빠르게 증가(KP4 기준 10⁻⁵) | 한계에 근접 |
| 정정 불가 코드워드 | 0 | 조금이라도 증가 | 꾸준히 증가 = 프레임 손실 |
| 레인별 심볼 오류 | 레인 간 균등 | 한 레인에 집중 | 해당 레인의 광섬유/커넥터/레이저 |
| Pre-FEC BER(산출값) | < 10⁻⁷ | 10⁻⁶ … 10⁻⁵ | > 10⁻⁴(KP4) |
확인 위치: 대부분의 NOS에서는 show interfaces … fec / phy detail(옵틱스 검증), Linux에서는 ethtool -S(fec_corrected_blocks, fec_uncorrectable_blocks)와 ethtool --show-fec, SONiC에서는 show interfaces counters fec. 카운터는 누적값입니다 — 초기화한 뒤 증가율을 지켜보십시오.
둘을 함께 읽기
| Rx 파워 | Pre-FEC BER/eSNR | 정정 불가 | 진단 |
|---|---|---|---|
| 범위 내 | < 10⁻⁷, eSNR 높음 | 0 | 마진 있는 정상 상태 |
| 범위 내 | 10⁻⁵, 한 레인에서 eSNR 하락 | 0 | 그 레인이 열화 중: MPO 광섬유 오염, VCSEL 노화, 아슬아슬한 커넥터 — 장애가 나기 전에 조치(레인별 진단) |
| 낮음 | 높음 | 일부 | 버짓 문제 — Rx 파워와 링크 버짓 |
| 범위 내, 양쪽 끝 모두 | 호스트 쪽에서 높음 | 일부 | 전기적 문제: 케이지/커넥터 접촉, 보드, DAC 품질, 잘못된 등화 설정 |
| 범위 내 | 미디어 쪽에서 높음, 모든 레인 | 일부 | 분산, 잘못된 전송 거리 등급, 다중화기 파장 이탈, 부분적인 극성 오류 |
| 정상 | 오류 0, 링크 플래핑 | 0 | 신호 문제가 아님 — FEC/AN 불일치, 열 문제, 소프트웨어 |
임계값과 경보
VDM 임계값은 벤더가 설정합니다; pre-FEC BER의 일반적인 하이 경고는 FEC 한계의 대략 10분의 1 수준입니다(KP4 기준 2 × 10⁻⁵). 경보에는 증가율과 추세를 사용하십시오: pre-FEC BER이 일주일 만에 한 자릿수(10배) 상승했다면 임계값과 무관하게 작업 지시가 필요합니다(모니터링). post-FEC 정정 불가 오류는 예외 없이 장애입니다.
VDM이 없는 경우
SFF-8472와 SFF-8636 모듈에는 VDM이 없습니다: 10G/25G/100G NRZ 링크는 호스트의 FEC 카운터와 Rx 파워에 의존합니다. 일부 SFF-8636 모듈은 페이지 20h–21h나 벤더 전용 바이트에 벤더 고유의 SNR이나 BER을 노출하지만 — 벤더의 도구로만 읽을 수 있습니다. FEC가 없는 NRZ(10G LR, 1G)의 경우, 인터페이스의 CRC/입력 오류 카운터가 비트 수준을 볼 수 있는 유일한 창입니다.
CodingBox에서
CMIS 모듈의 경우 CodingBox는 VDM 디스크립터와 샘플을 읽어 DDM에서 기존 모니터와 나란히 레인별로 보여주며, F16 비율을 일반 숫자로 디코딩합니다. 호스트의 FEC 카운터는 모듈과 프로그래머 바깥의 영역입니다 — 이는 스위치에서 나옵니다.