AI 요약
Oxide Computer Company의 임베디드 소프트웨어 엔지니어인 Matt Keeter는 랙 스케일 컴퓨터의 관리 네트워크에서 발생한 간헐적인 링크 작동 오류를 추적했습니다. 관리 네트워크의 핵심은 52포트 및 80G 성능을 가진 VSC7448 이더넷 스위치 칩으로, 문제의 근본 원인은 스위치 IC의 설정 오류로 밝혀졌습니다. 필자는 이를 해결하기 위해 단순한 소프트웨어 도구를 넘어 하드웨어에 차동 프로브를 직접 납땜하고 오실로스코프로 전압 파형을 캡처하는 방식을 선택했습니다. 1 TSPS(Tera-sample per second)의 초고속 샘플링을 통해 100µs의 데이터를 확보했으며, 이를 통해 전압 신호를 디지털 데이터인 UDP 패킷으로 변환하는 과정을 상세히 기술했습니다. 이 과정에서 Rust의 nom 라이브러리를 사용해 Tektronix의 .wfm 파일 파서를 직접 구현하는 등 물리 계층에서 전송 계층까지의 심층적인 디버깅 과정을 보여줍니다.
핵심 인사이트
- 대상 하드웨어: Oxide Computer Company의 랙 스위치에 탑재된 52포트, 80G 성능의 VSC7448 이더넷 스위치 칩 분석.
- 데이터 수집 규모: 1 TSPS(Tera-sample per second) 속도로 100M 샘플을 수집하여 100µs 분량의 데이터 확보.
- 패킷 포착: 초당 약 30,000개의 UDP 패킷(33µs당 1개)이 생성되는 환경에서 191MB 크기의 .wfm 파일로 1~3개의 패킷을 성공적으로 캡처.
- 파싱 기술: Rust 언어와 nom 라이브러리를 사용하여 약 400줄의 코드로 Tektronix 바이너리 포맷(.wfm) 파서 구현.
주요 디테일
- 물리적 접근: 고속 액티브 차동 프로브를 스위치 하드웨어에 직접 납땜하여 L1(물리 계층)의 원시 전압 데이터를 추출함.
- 분석 도구 부재: 오실로스코프 내장 QSGMII 분석기가 없어 원시 데이터를 PC로 내보내 수동으로 프로세싱함.
- OSI 모델 추적: L1(물리 계층)의 전압 파형에서 시작하여 최종적으로 L4(전송 계층)의 UDP 패킷까지 디코딩하는 전체 과정을 수행.
- 효율적인 파싱: 복잡한 사양서 전체를 디코딩하는 대신 데이터 스트림의 시작점만 찾아내어 처리하는 파이썬(Python) 3줄 코드 대안도 제시.
- 관리 네트워크 구조: 서버의 서비스 프로세서(Service Processor) 간 통신을 담당하는 저속 관리 네트워크의 신뢰성 문제 해결에 집중.
향후 전망
- 하드웨어와 소프트웨어의 접점에서 발생하는 복잡한 버그 해결을 위해 엔지니어의 L1~L4 통합 분석 역량이 점점 더 중요해질 것임.
- 고성능 스위치 IC의 미세한 설정 오류가 전체 랙 시스템의 안정성에 미치는 영향을 고려할 때, 물리적 계층의 신호 무결성 검증은 필수적인 절차로 남을 전망임.
출처:hackernews
