오픈소스 레이어2 이더넷 스위치 설계와 구현
초록
**
본 논문은 IEEE 802.3 표준을 준수하는 4포트 레이어2 이더넷 스위치를 VLSI 수준에서 구현한 설계와 그 트레이드오프를 제시한다. GMII 인터페이스를 이용해 입력을 받아 MAC 주소 학습, 가상 출력 큐(V‑OQ), 중앙 집중형 SRAM, 라운드‑로빈 메모리 접근 제어 등을 구현하고, 플러딩, CRC 검증, 백프레셔 처리 등을 포함한 전체 데이터 흐름을 상세히 설명한다.
**
상세 분석
**
이 설계는 레이어2 스위치의 핵심 기능을 최소한의 하드웨어 자원으로 구현하려는 시도로, 몇 가지 중요한 설계 선택이 눈에 띈다. 첫째, 입력‑출력 포트를 모두 GMII(1 Gbps, 8‑bit, 125 MHz)로 통일함으로써 인터페이스 복잡성을 크게 낮추고, 클럭 도메인 교차(CDC)를 비동기 FIFO와 2‑stage 동기화 회로로 안전하게 처리한다. 둘째, 중앙 집중형 SRAM(64 × 64 B, 총 4 KB)을 사용하고 각 포트마다 가상 출력 큐를 두어 프레임 데이터를 복제하지 않고 포인터만 전달한다는 점은 메모리 사용 효율을 크게 향상시킨다. 특히, 블록당 63 B 페이로드와 1 B 풋터(다음 블록 인덱스와 EOP 비트)를 두어 링크드 리스트 방식으로 비연속 블록을 순회하도록 설계한 점은 대용량 프레임 처리에 유연성을 제공한다.
메모리 접근 제어는 두 가지 옵션을 검토했으며, 면적·전력·복잡도 측면에서 단일 쓰기 포트에 라운드‑로빈 아비트레이터를 적용하기로 결정했다. 이는 다중 포트 동시 쓰기 시 발생할 수 있는 SRAM 포트 수 증가와 라인‑레이트를 초과하는 전력 소모를 방지한다. 아비트레이터는 4 포트 입력을 순차적으로 서비스하므로 평균 대기 시간이 포트당 1 클럭 사이클 이하가 된다.
프리리스트는 스택 구조로 구현되어 블록 할당·해제 시 O(1) 연산을 보장한다. 플러딩 상황(주소 테이블 미스)에서는 동일 프레임을 모든 포트에 전송해야 하므로, 마지막 포트가 전송을 마칠 때까지 블록을 해제하지 않도록 레퍼런스 카운터를 두어 메모리 누수를 방지한다.
RX 모듈은 프리앰블(7 × 0x55)과 SFD(0xD5)를 검출한 뒤 MAC 주소를 추출하고, CRC32를 실시간으로 계산한다. 프레임 종료 시 CRC와 FCS를 비교해 오류를 판단하고, 오류가 있으면 메모리와 TX에 전달되지 않도록 즉시 드롭한다. 이 과정에서 백프레셔가 발생하면 RX는 데이터를 버퍼링하지 않고 프레임을 중단시켜 CRC 불일치를 유도함으로써 손실 프레임을 자동으로 식별한다.
TX 모듈은 각 포트별 메모리 읽기 컨트롤러와 연동해 V‑OQ 포인터를 따라 블록을 순차적으로 읽어 전송한다. 읽기 포트는 단일이며, 라운드‑로빈 방식으로 포트 간 접근을 스케줄링한다. 전송 중에도 포인터 기반 순회가 가능하도록 설계돼, 블록이 비연속이더라도 연속적인 데이터 흐름을 유지한다.
전체적으로 설계는 면적·전력·성능 사이의 균형을 잘 맞추었지만, 몇 가지 한계도 존재한다. 4 포트·4 KB SRAM 규모는 실험적인 프로토타입에 적합하지만, 상용 스위치에서 요구되는 수십 포트·수백 메가바이트 메모리로 확장하려면 메모리 아키텍처와 아비트레이터가 재설계돼야 한다. 또한, 실제 실리콘 구현 결과(주파수, 전력, 타이밍 마진 등)가 논문에 제시되지 않아 설계의 실현 가능성을 평가하기 어렵다. 마지막으로, 플러딩 시 모든 포트에 동일 프레임을 복제하는 방식은 대역폭 낭비를 초래하므로, 학습된 MAC 주소가 없을 때는 멀티캐스트 그룹에만 전송하는 등 보다 효율적인 대체 방안을 고려할 여지가 있다.
**
댓글 및 학술 토론
Loading comments...
의견 남기기