esp32-ethernet-tester
A bench tool for stress-testing and validating Ethernet switch ports
ESP32 Ethernet Tester — A Full L1–L3 Network Assessment Bench in Your Pocket, Powered by W5500 MACRAW
#W5500 #MACRAW #ESP32S3 #NetworkTesting #RFC2544 #802.1X #PenTest #RawEthernet #PoE #PortValidation
📚 Context: Professional bench tool — built and tuned against a real Aruba CX6300 enterprise switch. Verified: MACRAW socket-0 driver, raw-TX path, and a full custom ARP/IP/UDP/ICMP stack are all confirmed at code level.
01 — What is this project?
Validating and stress-testing enterprise Ethernet switch ports usually means a rack of expensive gear — a dedicated traffic generator for RFC 2544, a protocol analyzer for LLDP/CDP, a separate box for 802.1X supplicant testing, and yet another for security assessment. It is heavy, wired to a bench, and far out of reach for most field engineers.
ESP32 Ethernet Tester collapses all of that into a single PoE-powered board that fits in one hand. An ESP32-S3 drives a WIZnet W5500 in raw MAC (MACRAW) mode, giving the firmware complete control over every byte placed on the wire. On top of that raw layer sits a deliberately minimal, purpose-built IPv4 stack (ARP / IP / UDP / ICMP) — the W5500's hardware TCP/IP engine is intentionally bypassed so nothing filters or normalizes the frames.
The result is a genuinely comprehensive network bench: RFC 2544 throughput/latency/frame-loss benchmarking, LLDP/CDP discovery and advertisement, seven DHCP failure scenarios, a full 802.1X/EAP supplicant (MD5/TLS/PEAP/TTLS), SNMP recon, TCP SYN port scanning with banner grab for 30+ services, an L2 attack suite (VLAN hopping, STP root claim, CAM flood), FHRP hijack testing, DHCPv6, WireGuard VPN management, OTA updates, PCAP capture to SD, and a cron-driven scripting engine — all controllable over a serial CLI or a tabbed Wi-Fi web UI.
02 — Why raw-frame testing?
🔷 Full control of the wire
A conventional NIC (or a hardware-offloaded TCP/IP chip) silently handles addressing, checksums, retransmission and framing for you. That is exactly what you do not want in a network tester. To inject giant frames, PAUSE frames, malformed DHCP DISCOVERs, spoofed BPDUs or forged HSRP advertisements, the firmware needs to build the entire Ethernet frame itself and hand it to the PHY untouched. Raw MAC access is the only way to do this.
🔷 One PHY, every layer
Because the tester owns the raw frame, a single device can operate at L1 (PHY speed/duplex forcing), L2 (VLAN/STP/LLDP/CDP/ARP), and L3 (its own IP/UDP/ICMP stack) — no separate tools per layer. Discovery, injection, benchmarking and security assessment all run through the same raw pipe.
🔷 WIZnet ecosystem fit
Among WIZnet's line, the W5500's MACRAW mode is the natural choice for this class of tool. Its hardened SPI interface and the well-documented Sn_MR_MACRAW socket mode give a clean, deterministic raw-frame path over a short onboard PCB trace — far simpler and more robust than bit-banging a discrete PHY (e.g. an ENC28J60) or wrestling with the RMII timing of a LAN8742A. For a battery/PoE-powered handheld, that integration density is decisive.
03 — System architecture
Every functional module — from the RFC 2544 benchmark suite to the rogue 802.1X authenticator — ultimately calls a single primitive: W5500Raw::sendFrame(). That one code path is what makes the whole architecture coherent.
04 — Why W5500? ⭐
🔷 The technical core: MACRAW gives raw L2 access with hardware reliability
The entire project is built on one capability: the ability to put an arbitrary Ethernet frame on the wire and to receive every frame back, unfiltered. The W5500 delivers exactly this through its MACRAW socket mode.
🔷 Mode used: MACRAW (Sn_MR_MACRAW, Sn_MR = 0x04) — verified in code
This is not inferred — it is confirmed directly in src/w5500_raw.cpp:
- Socket 0 is opened with
_writeReg8(Sn_MR, BSB_S0_REG, Sn_MR_MACRAW)and the code verifies the socket status register readsSOCK_MACRAW. - MAC filtering is deliberately disabled so the tester receives all frames on the segment (essential for passive recon, PCAP capture and protocol decode).
- On RX, the firmware correctly handles the 2-byte length prefix the W5500 prepends to each received MACRAW frame.
- On TX,
sendFrame()writes the frame into the socket TX buffer, advancesSn_TX_WR, and issuesSn_CR_SEND— a textbook raw transmit path.
Crucially, the W5500's hardware TCP/IP engine is bypassed entirely. The custom IpStack (src/ip_stack.cpp) builds ARP, IPv4, UDP and ICMP by hand and pushes each one through _eth.sendFrame(). This is the defining design decision: it preserves total raw-frame control while still enabling L3/DHCP testing.
🔷 Advantage over alternatives
- vs. ENC28J60: the W5500 offers a far more robust, well-abstracted SPI register interface and reliable MACRAW behavior, avoiding the notorious errata and manual buffer bookkeeping of the ENC28J60.
- vs. RMII PHYs (LAN8742A etc.): no RMII clock/timing headaches, no dependence on the ESP32's EMAC — just a clean SPI bus, which frees the internal MAC and simplifies a PoE handheld design.
- vs. using the W5500's own TCP/IP offload: offload would defeat the purpose; MACRAW is precisely why W5500 fits a tester rather than a client.
🔷 Verified evidence ✅
- ✅ MACRAW socket-0 configuration confirmed in
w5500_raw.cpp. - ✅ Raw TX path (
Sn_TX_WR+Sn_CR_SEND) confirmed. - ✅ Custom IP stack routing all frames through
sendFrame()confirmed inip_stack.cpp. - ✅ Built and tuned against a real Aruba CX6300 (per README).
- ✅ Honest, hardware-accurate documentation of MACRAW limits (FCS auto-append prevents true CRC-error and runt injection) — a mark of an author who actually ran this on silicon.
05 — Key components
🌐 WIZnet W5500 — MACRAW mode (raw L2 engine)
The heart of the tool. Runs on a Waveshare ESP32-S3-POE-ETH board where the W5500 is onboard and PoE-capable, connected over FSPI at 8 MHz (headroom to push toward 40 MHz on the short traces). All raw TX/RX, error injection, and the custom IP stack sit on top of it.
🧠 ESP32-S3 (Waveshare ESP32-S3-POE-ETH)
16 MB flash, 8 MB PSRAM, USB-C. Hosts the CLI parser, the ESPAsyncWebServer tabbed UI, mbedTLS for EAP-TLS/PEAP/TTLS, NVS persistence, and a dual-OTA partition scheme.
🔧 Custom minimal IPv4 stack
ARP (with cache) + IPv4 + UDP + ICMP, hand-built over MACRAW. Enables ping, DHCP DORA, DNS, SNMP and port scanning — without touching the W5500's hardware stack.
📡 Protocol & security suites
RFC 2544, LLDP/CDP (decode + advertise), 802.1X supplicant + rogue authenticator (hashcat-5500 output), DHCP/DHCPv6 scenarios, FHRP (HSRP/VRRP) assessment, L2 attack suite, SNMP recon, TCP SYN scanner with 30+ service banner probes.
💾 Field-ready infrastructure
Wi-Fi STA/AP web UI, HTTPS + basic-auth, WireGuard tunnel for remote management, SD-card PCAP/log/script storage, cron scheduler, TFTP/HTTP OTA.
06 — Application scenarios
01. Enterprise switch-port commissioning
Before handing a new switch to production, an engineer plugs in the tester, runs test all for RFC 2544 numbers, confirms LLDP neighbor data, verifies DHCP behavior, and validates 802.1X enforcement — all from one handheld.
02. Field troubleshooting without a laptop
PoE-powered and web-driven, the tester can be dropped on a remote port and reached over Wi-Fi (or WireGuard back to HQ), with results logged to SD and scheduled via cron for unattended overnight checks.
03. Authorized network security assessment
In armed mode, a pentester exercises ARP MITM, STP root claims, VLAN hopping, rogue DHCP/DHCPv6/DNS, FHRP hijack and a rogue 802.1X authenticator to validate that the network's hardening (DHCP snooping, Root Guard, DAI, 802.1X, FHRP auth) actually holds.
04. Protocol education & lab work
Because every frame is built by hand, the codebase is a living reference for how LLDP, CDP, HSRP, VRRP, EAP, DHCP and MS-CHAPv2 actually look on the wire — a genuinely instructive MACRAW project.
Conclusion
A single hand-sized, PoE-powered board turns the W5500's MACRAW mode into a full L1–L3 network test-and-assessment bench that was previously the domain of rack-mounted, five-figure instruments.
- ✅ Complete raw-frame control via W5500 MACRAW (verified in source)
- ✅ Custom ARP/IP/UDP/ICMP stack layered over raw L2 — hardware TCP/IP intentionally bypassed
- ✅ RFC 2544 benchmark suite (throughput/latency/loss/back-to-back)
- ✅ Full 802.1X/EAP supplicant + rogue authenticator with hashcat output
- ✅ Deep L2/L3 security assessment toolkit (VLAN/STP/ARP/FHRP/DHCP/DNS/SNMP)
- ✅ Tabbed Wi-Fi web UI + serial CLI + scripting/cron automation
- ✅ Field-grade infra: PoE, HTTPS, WireGuard, SD PCAP/logs, OTA
- ✅ Validated against real enterprise hardware (Aruba CX6300)
- ✅ Honest documentation of MACRAW hardware limits — engineering integrity
Q&A
Q. Which W5500 socket mode does this use, and why not the hardware TCP/IP stack? It uses MACRAW (Sn_MR_MACRAW) on socket 0 with MAC filtering off. A network tester must control and observe every byte on the wire, so the hardware TCP/IP offload is deliberately bypassed and a custom lightweight IP stack is built on top of the raw frames instead.
Q. Why can't it inject true CRC-error or runt frames? In MACRAW mode the W5500 always computes and appends a valid 4-byte FCS and auto-pads short frames to the 60-byte minimum. So corrupted-CRC and sub-64-byte runt frames can't leave the wire — a genuine hardware behavior the author documents honestly rather than hiding.
Q. Is the raw-frame path actually implemented, or is it just claimed? Confirmed in src/w5500_raw.cpp: sendFrame() writes to the socket TX buffer, advances Sn_TX_WR, and issues Sn_CR_SEND; every higher-level module (RFC 2544, injection, IP stack) routes through this one primitive.
Q. What board does it run on? A Waveshare ESP32-S3-POE-ETH with an onboard, PoE-capable W5500 over FSPI at 8 MHz — no external Ethernet wiring required.
[한글 버전] ESP32 Ethernet Tester — W5500 MACRAW로 구현한, 손바닥 위의 L1–L3 네트워크 진단 벤치
#W5500 #MACRAW #ESP32S3 #NetworkTesting #RFC2544 #802.1X #PenTest #RawEthernet #PoE #PortValidation
📚 컨텍스트: 실제 Aruba CX6300 엔터프라이즈 스위치를 상대로 제작·튜닝한 전문가용 벤치 툴. 검증됨: MACRAW 소켓 0 드라이버, raw-TX 경로, 커스텀 ARP/IP/UDP/ICMP 스택을 모두 코드 레벨에서 확인.
01 — 이 프로젝트는 무엇인가?
엔터프라이즈 이더넷 스위치 포트를 검증하고 스트레스 테스트하려면 보통 값비싼 장비 랙이 필요하다. RFC 2544용 전용 트래픽 제너레이터, LLDP/CDP 분석용 프로토콜 애널라이저, 802.1X 서플리컨트 테스트용 별도 장비, 보안 평가용 또 다른 장비까지. 무겁고, 벤치에 묶여 있고, 현장 엔지니어에게는 사실상 손이 닿지 않는다.
ESP32 Ethernet Tester는 이 모든 것을 PoE로 구동되는 손바닥만 한 보드 하나로 압축한다. ESP32-S3가 WIZnet W5500을 raw MAC(MACRAW) 모드로 구동하여, 펌웨어가 회선 위에 올라가는 모든 바이트를 완전히 제어한다. 그 raw 레이어 위에는 의도적으로 최소화한 전용 IPv4 스택(ARP / IP / UDP / ICMP)이 얹혀 있다 — W5500의 하드웨어 TCP/IP 엔진을 일부러 우회해서, 프레임을 필터링하거나 정규화하는 요소가 하나도 없도록 만들었다.
그 결과물은 진정한 의미의 종합 네트워크 벤치다. RFC 2544 처리량/지연/프레임손실 벤치마킹, LLDP/CDP 디스커버리 및 광고, 7가지 DHCP 실패 시나리오, 완전한 802.1X/EAP 서플리컨트(MD5/TLS/PEAP/TTLS), SNMP 정찰, 30종 이상 서비스 배너 그랩이 가능한 TCP SYN 포트 스캔, L2 공격 스위트(VLAN 홉핑, STP 루트 탈취, CAM 플러딩), FHRP 하이재킹 테스트, DHCPv6, WireGuard VPN 관리, OTA 업데이트, SD 카드 PCAP 캡처, cron 기반 스크립팅 엔진까지 — 이 전부를 시리얼 CLI 또는 탭 방식 Wi-Fi 웹 UI로 제어한다.
RFC2544 성능 테스트 — 처리량(무손실 최대 전송률), 지연(최소/최대/평균 RTT), back-to-back(무손실 최대 연속 버스트)을 측정. 스위치 포트의 순수 성능 수치를 뽑는 표준 벤치마크.
에러 프레임 주입 테스트 — runt(64바이트 미만), giant, jumbo, broadcast, multicast 등 비정상·대량 프레임을 주입해 포트가 어떻게 처리하는지 시험.
LLDP/CDP 디스커버리 — 이웃 장비가 광고하는 정보(포트 ID, VLAN, 관리 IP 등)를 수신·디코드. 반대로 자신의 정보를 광고하는 테스트도 가능.
DHCP 시나리오 테스트 — 정상 DORA 획득뿐 아니라 여러 실패/이상 시나리오를 검증. DHCPv6도 포함.
802.1X / EAP 인증 테스트 — MD5, TLS, PEAP, TTLS 방식의 서플리컨트 인증을 시도. 포트의 802.1X 강제 여부 검증.
포트 스캔 & 배너 그랩 — TCP SYN 스캔으로 열린 포트를 찾고, 30종 이상 서비스의 배너 정보를 수집.
SNMP 정찰 — SNMP로 대상 장비의 정보를 수집.
L2 공격 테스트 — VLAN 홉핑, STP 루트 클레임, CAM 테이블 플러딩 등 L2 계층 공격을 통해 스위치의 방어 설정이 실제로 작동하는지 검증.
FHRP 하이재킹 테스트 — HSRP/VRRP 같은 게이트웨이 이중화 프로토콜에 대한 탈취 시도.
기본 L3 진단 — ping(ICMP), DNS 조회 등 커스텀 IP 스택 기반의 기본 네트워크 도달성 확인.
크게 보면 성능 측정(RFC2544), 스트레스/에러 주입, 프로토콜 디스커버리(LLDP/CDP), 인증·DHCP 검증(802.1X/DHCP), 보안 평가(포트스캔·L2공격·FHRP·SNMP) 다섯 갈래로 나뉜다고 보면 돼.
02 — 왜 raw-frame 테스팅인가?
🔷 회선의 완전한 제어권
일반적인 NIC(또는 하드웨어 오프로드 TCP/IP 칩)는 주소 처리, 체크섬, 재전송, 프레이밍을 알아서 처리해준다. 그런데 네트워크 테스터에서는 바로 그것이 하면 안 되는 일이다. 자이언트 프레임, PAUSE 프레임, 변형된 DHCP DISCOVER, 위조 BPDU, 조작된 HSRP 광고를 주입하려면, 펌웨어가 이더넷 프레임 전체를 직접 만들어 PHY에 손대지 않은 채로 넘겨야 한다. Raw MAC 접근만이 이걸 가능하게 한다.
🔷 하나의 PHY, 모든 계층
테스터가 raw 프레임을 소유하기 때문에, 단일 장비가 L1(PHY 속도/듀플렉스 강제), L2(VLAN/STP/LLDP/CDP/ARP), L3(자체 IP/UDP/ICMP 스택)에서 모두 동작한다 — 계층마다 별도 장비가 필요 없다. 디스커버리, 인젝션, 벤치마킹, 보안 평가가 전부 동일한 raw 파이프를 통해 돌아간다.
🔷 WIZnet 생태계 내 적합성
WIZnet 라인업 중에서 이런 종류의 툴에는 W5500의 MACRAW 모드가 자연스러운 선택이다. 견고한 SPI 인터페이스와 잘 문서화된 Sn_MR_MACRAW 소켓 모드가, 짧은 온보드 PCB 트레이스 위에서 깨끗하고 결정론적인 raw-frame 경로를 제공한다 — 개별 PHY(예: ENC28J60)를 비트뱅잉하거나 LAN8742A의 RMII 타이밍과 씨름하는 것보다 훨씬 단순하고 안정적이다. 배터리/PoE 구동 핸드헬드에서는 이 통합 밀도가 결정적이다.
03 — 시스템 아키텍처
RFC 2544 벤치마크 스위트부터 로그(rogue) 802.1X 인증자까지, 모든 기능 모듈은 결국 단 하나의 프리미티브 W5500Raw::sendFrame()을 호출한다. 이 단일 코드 경로가 전체 아키텍처를 하나로 묶는 힘이다.
04 — 왜 W5500인가? ⭐
🔷 기술적 핵심: MACRAW가 하드웨어 신뢰성과 함께 raw L2 접근을 제공한다
이 프로젝트 전체는 단 하나의 능력 위에 세워져 있다. 임의의 이더넷 프레임을 회선 위에 올리고, 되돌아오는 모든 프레임을 필터링 없이 수신하는 능력. W5500은 이것을 MACRAW 소켓 모드로 정확히 제공한다.
🔷 사용 모드: MACRAW (Sn_MR_MACRAW, Sn_MR = 0x04) — 코드에서 검증됨
이건 추론이 아니라 src/w5500_raw.cpp에서 직접 확인된 사실이다.
- 소켓 0을
_writeReg8(Sn_MR, BSB_S0_REG, Sn_MR_MACRAW)로 열고, 소켓 상태 레지스터가SOCK_MACRAW로 읽히는지 검증한다. - MAC 필터링을 의도적으로 비활성화하여 세그먼트 상의 모든 프레임을 수신한다 (패시브 정찰, PCAP 캡처, 프로토콜 디코드에 필수).
- RX 시 W5500이 각 수신 MACRAW 프레임 앞에 붙이는 2바이트 길이 프리픽스를 올바르게 처리한다.
- TX 시
sendFrame()이 프레임을 소켓 TX 버퍼에 쓰고,Sn_TX_WR을 전진시킨 뒤Sn_CR_SEND를 발행한다 — 교과서적인 raw 전송 경로.
무엇보다도, W5500의 하드웨어 TCP/IP 엔진은 완전히 우회된다. 커스텀 IpStack(src/ip_stack.cpp)이 ARP, IPv4, UDP, ICMP를 손으로 직접 만들어 각각을 _eth.sendFrame()으로 밀어 넣는다. 이것이 이 프로젝트를 정의하는 설계 결정이다. 완전한 raw-frame 제어권을 유지하면서도 L3/DHCP 테스트를 가능하게 한다.
🔷 대체 솔루션 대비 우위
- vs. ENC28J60: W5500은 훨씬 견고하고 잘 추상화된 SPI 레지스터 인터페이스와 신뢰성 있는 MACRAW 동작을 제공하여, ENC28J60의 악명 높은 errata와 수동 버퍼 관리 부담을 피한다.
- vs. RMII PHY (LAN8742A 등): RMII 클록/타이밍 골칫거리가 없고 ESP32의 내장 EMAC에 의존하지 않는다 — 깨끗한 SPI 버스만으로 충분해, 내부 MAC을 해방시키고 PoE 핸드헬드 설계를 단순화한다.
- vs. W5500 자체 TCP/IP 오프로드: 오프로드는 목적 자체를 무너뜨린다. MACRAW야말로 W5500이 클라이언트가 아니라 테스터에 맞는 이유다.
🔷 검증된 증거 ✅
- ✅
w5500_raw.cpp에서 MACRAW 소켓 0 설정 확인. - ✅ raw TX 경로(
Sn_TX_WR+Sn_CR_SEND) 확인. - ✅
ip_stack.cpp에서 모든 프레임을sendFrame()으로 라우팅하는 커스텀 IP 스택 확인. - ✅ 실제 Aruba CX6300 상대로 제작·튜닝 (README 기재).
- ✅ MACRAW 하드웨어 한계(FCS 자동 부착으로 인한 진짜 CRC-에러/runt 주입 불가)를 정직하게 문서화 — 실제 실리콘 위에서 돌려본 저자의 흔적.
05 — 핵심 구성 요소
🌐 WIZnet W5500 — MACRAW 모드 (raw L2 엔진)
이 툴의 심장. Waveshare ESP32-S3-POE-ETH 보드 위에서 동작하며, W5500이 온보드 PoE 지원으로 통합되어 FSPI 8 MHz로 연결된다 (짧은 트레이스라 40 MHz까지 올릴 여유 있음). 모든 raw TX/RX, 에러 인젝션, 커스텀 IP 스택이 이 위에 얹혀 있다.
🧠 ESP32-S3 (Waveshare ESP32-S3-POE-ETH)
16 MB 플래시, 8 MB PSRAM, USB-C. CLI 파서, ESPAsyncWebServer 탭 UI, EAP-TLS/PEAP/TTLS용 mbedTLS, NVS 영속화, 듀얼 OTA 파티션 스킴을 호스팅한다.
🔧 커스텀 최소 IPv4 스택
ARP(캐시 포함) + IPv4 + UDP + ICMP를 MACRAW 위에 손으로 구현. W5500 하드웨어 스택을 건드리지 않고 ping, DHCP DORA, DNS, SNMP, 포트 스캔을 가능하게 한다.
📡 프로토콜 & 보안 스위트
RFC 2544, LLDP/CDP(디코드 + 광고), 802.1X 서플리컨트 + 로그 인증자(hashcat-5500 출력), DHCP/DHCPv6 시나리오, FHRP(HSRP/VRRP) 평가, L2 공격 스위트, SNMP 정찰, 30종 이상 서비스 배너 프로브 TCP SYN 스캐너.
💾 현장 대응 인프라
Wi-Fi STA/AP 웹 UI, HTTPS + basic-auth, 원격 관리용 WireGuard 터널, SD 카드 PCAP/로그/스크립트 저장, cron 스케줄러, TFTP/HTTP OTA.
06 — 응용 시나리오
01. 엔터프라이즈 스위치 포트 커미셔닝
새 스위치를 프로덕션에 넘기기 전, 엔지니어가 테스터를 꽂고 test all로 RFC 2544 수치를 뽑고, LLDP 이웃 정보를 확인하고, DHCP 동작을 검증하고, 802.1X 강제 여부를 확인한다 — 전부 핸드헬드 하나로.
02. 노트북 없는 현장 트러블슈팅
PoE 구동에 웹 기반이라, 원격 포트에 던져놓고 Wi-Fi(또는 본사로 이어지는 WireGuard)로 접속할 수 있다. 결과는 SD에 로깅되고 cron으로 예약해 무인 야간 점검까지 돌린다.
03. 인가된 네트워크 보안 평가
armed 모드에서 펜테스터가 ARP MITM, STP 루트 탈취, VLAN 홉핑, 로그 DHCP/DHCPv6/DNS, FHRP 하이재킹, 로그 802.1X 인증자를 실행하여, 네트워크의 하드닝(DHCP 스누핑, Root Guard, DAI, 802.1X, FHRP 인증)이 실제로 버티는지 검증한다.
04. 프로토콜 교육 & 랩 실습
모든 프레임을 손으로 만들기 때문에, 이 코드베이스는 LLDP, CDP, HSRP, VRRP, EAP, DHCP, MS-CHAPv2가 회선 위에서 실제로 어떻게 생겼는지 보여주는 살아있는 레퍼런스다 — 정말로 배울 게 많은 MACRAW 프로젝트.
결론
손바닥만 한 PoE 구동 보드 하나가, W5500의 MACRAW 모드를 예전엔 랙 마운트 5자리 수 장비의 영역이었던 완전한 L1–L3 네트워크 테스트·평가 벤치로 바꿔놓았다.
- ✅ W5500 MACRAW를 통한 완전한 raw-frame 제어 (소스에서 검증)
- ✅ raw L2 위에 얹은 커스텀 ARP/IP/UDP/ICMP 스택 — 하드웨어 TCP/IP 의도적 우회
- ✅ RFC 2544 벤치마크 스위트 (처리량/지연/손실/back-to-back)
- ✅ 완전한 802.1X/EAP 서플리컨트 + hashcat 출력 로그 인증자
- ✅ 깊이 있는 L2/L3 보안 평가 툴킷 (VLAN/STP/ARP/FHRP/DHCP/DNS/SNMP)
- ✅ 탭 방식 Wi-Fi 웹 UI + 시리얼 CLI + 스크립팅/cron 자동화
- ✅ 현장급 인프라: PoE, HTTPS, WireGuard, SD PCAP/로그, OTA
- ✅ 실제 엔터프라이즈 하드웨어(Aruba CX6300)로 검증
- ✅ MACRAW 하드웨어 한계를 정직하게 문서화 — 엔지니어링 진정성
Q&A
Q. W5500의 어떤 소켓 모드를 쓰며, 왜 하드웨어 TCP/IP 스택을 안 쓰나? 소켓 0을 MACRAW(Sn_MR_MACRAW)로, MAC 필터링을 끈 상태로 사용한다. 네트워크 테스터는 회선 위 모든 바이트를 제어하고 관찰해야 하므로, 하드웨어 TCP/IP 오프로드를 일부러 우회하고 raw 프레임 위에 커스텀 경량 IP 스택을 직접 올렸다.
Q. 왜 진짜 CRC-에러나 runt 프레임을 주입할 수 없나? MACRAW 모드에서 W5500은 항상 유효한 4바이트 FCS를 계산해 붙이고, 짧은 프레임을 60바이트 최소값으로 자동 패딩한다. 그래서 CRC가 깨진 프레임과 64바이트 미만 runt 프레임은 회선으로 나갈 수 없다 — 저자가 숨기지 않고 정직하게 문서화한 실제 하드웨어 동작이다.
Q. raw-frame 경로가 실제로 구현된 건가, 아니면 주장뿐인가? src/w5500_raw.cpp에서 확인됨: sendFrame()이 소켓 TX 버퍼에 쓰고, Sn_TX_WR을 전진시키고, Sn_CR_SEND를 발행한다. 상위 모듈 전부(RFC 2544, 인젝션, IP 스택)가 이 단일 프리미티브를 거친다.
Q. 어떤 보드에서 돌아가나? 온보드 PoE 지원 W5500을 FSPI 8 MHz로 얹은 Waveshare ESP32-S3-POE-ETH — 외부 이더넷 배선 불필요.
Original Link: https://github.com/micgresham/esp32-ethernet-tester
