NIC의 트랜시버 호환성: 드라이버 화이트리스트
스위치에서는 모듈 정책이 네트워크 OS의 한 줄짜리 설정이지만, 서버에서는 NIC 드라이버와 펌웨어가 내리는 결정이며 벤더, 운영체제, 드라이버 버전마다 다릅니다. 목록에 없는 모듈을 거부하는 쪽은 Intel 어댑터이며, 대부분의 다른 어댑터는 파싱만 되면 무엇이든 받아들입니다. 이 페이지는 벤더와 OS별 동작, 문서화된 오버라이드, DAC와 광학 부품의 링크 여부를 좌우하는 FEC/자동 협상 규칙, 서버 측에서 코딩된 식별 정보가 만족해야 할 조건을 다룹니다.
벤더별 동작
| 벤더/드라이버 | 확인 방식 | 실패 시 | 오버라이드 | 참고 |
|---|---|---|---|---|
| Intel ixgbe(X520, X540, X550 SFP+) | Intel 인증 SFP+의 벤더 OUI/PN 목록 | failed to load because an unsupported SFP+ or QSFP module type was detected, 포트 다운 | 모듈 파라미터 allow_unsupported_sfp=1(Linux), 드라이버 재로드 | DAC는 대체로 허용, 1G SFP는 제한적 |
| Intel i40e(X710, XXV710, XL710) | 펌웨어 수준의 모듈 인증 | dmesg의 unsupported module, 링크 다운 또는 ethtool의 “module not qualified” | 최신 i40e는 allow_unsupported_sfp=1, 이전 빌드는 없음 | XXV710 25G 모듈은 엄격하게 검사 |
| Intel ice(E810) | NVM/펌웨어 인증 | Possible mis-configuration of the Ethernet port detected / 미인증 모듈 | NVM과 드라이버 릴리스에 따라 다름, 일부 빌드는 unsupported-SFP 설정을 존중하고 일부는 거부 — Intel 릴리스 노트를 확인 | 최근 NVM에서는 Intel 제품군 중 가장 허용적 |
| Intel on Windows(PROSet 드라이버) | 동일한 목록 | 장치에 “Network cable unplugged” 표시, 이벤트 로그 경고 | 문서화된 오버라이드 없음 | Intel 목록에 있거나 Intel 코드가 적용된 모듈을 사용 |
| Intel on VMware ESXi(ixgben, i40en, icen) | 동일한 목록 | 링크 다운, vmkernel.log의 “unsupported module” | 드라이버가 allow_unsupported_sfp를 노출하는 경우 esxcli system module parameters set으로 모듈 파라미터 설정, 모든 버전에 있는 것은 아님 | 프로덕션에서는 인증된 모듈을 우선 사용 |
| Nvidia / Mellanox mlx5(ConnectX) | EEPROM만 파싱, 이더넷: 목록 없음 | 링크 업, mlxlink가 모듈 정보 표시 | 불필요 | InfiniBand 모드: 패브릭 매니저가 케이블/모듈 식별 정보를 검증하며 플래그를 달거나 다운그레이드할 수 있음(IB 케이블) |
| Broadcom bnxt_en(NetXtreme-E) | 파싱만, 대부분의 SKU는 목록 없음 | 업 | — | OEM 브랜드(Dell, HPE) 펌웨어는 검사를 추가할 수 있음 |
| Marvell / QLogic qede | 파싱만 | 업 | — | — |
| AMD Solarflare sfc | 파싱만 | 업 | — | — |
| Chelsio cxgb4 | 파싱만 | 업 | — | — |
| Pensando ionic | 파싱만 | 업 | — | — |
| Server-vendor OEM NIC(Dell, HPE, Lenovo, Cisco UCS VIC) | 자체 목록을 추가할 수 있음, 특히 Cisco VIC | CIMC/UCSM의 “unsupported transceiver” | 공식적으로는 없음 | UCS VIC는 Cisco 코드가 적용된 모듈을 허용 |
동작은 드라이버와 펌웨어(NVM) 버전에 따라 달라지므로, 정확한 조합에서 확인해야 합니다(호환성 매트릭스와 펌웨어).
Intel 오버라이드 적용(Linux)
# temporary (until reload)
modprobe -r ixgbe && modprobe ixgbe allow_unsupported_sfp=1
# persistent
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe.conf
echo "options i40e allow_unsupported_sfp=1" > /etc/modprobe.d/i40e.conf
dracut -f # or update-initramfs -u
# verify
cat /sys/module/ixgbe/parameters/allow_unsupported_sfp
dmesg | grep -iE 'sfp|module|unsupported'
ethtool -m eth0
멀티포트 카드의 경우 일부 드라이버에서는 이 파라미터가 쉼표로 구분된 목록(포트당 값 1개)을 받습니다. 이 설정은 Intel이 프로덕션용으로 지원하지 않으며, 검사만 없앨 뿐 전기적 요구 사항까지 없애지는 않습니다.
NIC에서의 FEC와 자동 협상
| 링크 유형 | AN | FEC | 참고 |
|---|---|---|---|
| 25G DAC | 양쪽 모두 켬(Clause 73) | 협상됨(케이블 등급에 따라 RS 또는 BASE-R) | “DAC에서 링크가 안 된다” 사례 대부분은 한쪽에서 AN이 꺼져 있는 경우 |
| 25G SR / LR 광학 부품 | 끔, 25000으로 강제 | SR은 RS-FEC(필수), LR은 RS 또는 없음 — 스위치와 일치해야 함 | ethtool --set-fec eth0 encoding rs |
| 100G DAC | 켬 | RS-FEC | — |
| 100G SR4 / CWDM4 / DR | 끔 | RS-FEC 필수 | — |
| 100G LR4 | 끔 | 없음(일부 플랫폼은 RS) | 스위치와 일치시킴(FEC와 AN) |
| 200G / 400G | 광학 부품은 끔 | 항상 RS(544) KP4 | — |
| 10G | 끔 | 없음 | — |
OS별 명령어: NIC 도구와 진단, 스위치 측: 포트 구성 레시피.
NIC에서 코딩된 모듈이 충족해야 할 조건
| 대상 | 최소 요건 |
|---|---|
| 오버라이드 없는 Intel ixgbe/i40e | Intel 인증 목록에 있는 벤더명과 PN(Intel 브랜드 E10GSFPSR/E10GSFPLR/E25GSFP28SR 또는 Intel이 재판매하는 OEM 부품), 일관된 컴플라이언스 코드와 체크섬 |
| 오버라이드를 적용한 Intel, 모든 허용적 벤더 | 유효한 체크섬과 컴플라이언스 코드 — OEM 코딩 불필요 |
| Cisco UCS VIC | Cisco 스위치와 동일한 방식의 Cisco 스타일 식별 정보(NOS별 모듈 검증 방식) |
| InfiniBand HCA | IBTA와 패브릭 벤더의 목록에 맞는 올바른 케이블/모듈 식별 정보 |
NIC 측의 일반적인 증상
| 증상 | 가능성 있는 원인 | 확인 |
|---|---|---|
| 포트가 없거나 dmesg에 “unsupported module” | 드라이버 화이트리스트 | dmesg, ethtool -m, 오버라이드 또는 코딩된 모듈 |
| 링크 다운, 모듈은 인식됨, 레벨은 정상 | FEC/AN 불일치, 속도가 잘못 강제됨 | ethtool eth0, ethtool --show-fec eth0(속도와 레이트) |
| 잘못된 속도로 링크 업 | 듀얼레이트 모듈에서 auto가 10G를 선택 | 속도를 강제 |
| 링크 업, 낮은 처리량 | PCIe 폭/속도 | lspci -vv(포트와 PCIe) |
| 모듈 발열, 온도 알람 | 카드가 배기 기류에 있음 | ethtool -m으로 DDM 확인, 카드를 옮기거나 기류를 개선 |
| Linux에서는 동작, Windows/ESXi에서는 안 됨 | 드라이버 정책이 다름 | 해당 OS용 인증 모듈을 사용 |
| InfiniBand 링크가 축소된 폭/속도로 동작 | 케이블이 목록에 없거나 너무 김 | ibstat, mlxlink |
CodingBox에서
서버 측 거부는 스위치 측과 동일한 바이트로 진단합니다. Check transceiver에서 벤더명, PN, OUI, 컴플라이언스 코드, 체크섬을 확인하십시오. Intel 전용 환경이라면 드라이버가 허용하는 Intel 식별 정보를 code database에 보관해 둘 수 있습니다.