---
title: "[ESP32-S3] Geekble Nano TOE VS LWIP Iperf Performance Test"
url: "https://maker.wiznet.io/Lihan__/projects/esp32-s3-geekble-nano-toe-vs-lwip-iperf-performance-test/"
markdown_url: "https://maker.wiznet.io/Lihan__/projects/esp32-s3-geekble-nano-toe-vs-lwip-iperf-performance-test/md"
type: "WCC: WIZnet Created Content"
author: "Lihan__"
author_url: "https://maker.wiznet.io/Lihan__/"
original_author: "Lihan"
published: "2025-11-13"
language: "en"
tags: ["ESP32", "W5500", "Ipref"]
hardware: ["Espressif ESP32-S3", "Geekble nano", "WIZnet WIZ550io"]
likes: 0
views: 686
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# [ESP32-S3] Geekble Nano TOE VS LWIP Iperf Performance Test

> Ethernet performance comparison between ESP32-S3 with WIZnet TOE and LWIP using iperf tests

Original author: Lihan

## Components

- **Espressif ESP32-S3** x 1
- **Geekble nano** x 1
- **WIZnet WIZ550io** x 1 ([docs](https://docs.wiznet.io/Product/ioModule/wiz550io))
- Software: **Esspressif ESP-IDF**

## Documents and links

- [TOE iperf TEST](https://github.com/seok930927/ESP32-iperf-W5500/releases/tag/Iperf_TOE_V1.0) (code)
- [LWIP iperf TEST](https://github.com/seok930927/ESP32-iperf-W5500/releases/tag/Iperf_LWIP_V1.0) (code)

## Article

## Introduction

Although the ESP32-S3 is a powerful MCU with built-in Wi-Fi and BLE capabilities, its software-based TCP/IP stack (LWIP) can cause performance degradation in high-speed Ethernet environments.
In this experiment, **LWIP was removed and WIZnet’s TCP Offload Engine (TOE)** was integrated to verify the impact of hardware-based TCP/IP processing on the ESP32-S3’s communication performance.
The test was conducted by modifying the iperf example provided in ESP-IDF to compare the LWIP and TOE environments under identical conditions.

---

### Test Environment Configuration

**MCU:** ESP32-S3

**TOE Chip:** WIZnet W5500 (SPI Interface)

**Tool:** iperf3

**Test scenarios **

1. Standard iperf test

2. iperf test under Ping flood attack

3. iperf Performance under CPU Load

---

## Test Result - Standard iperf test

Average Bandwidth (iperf test results)

ESP32 + TOE : 34.8 Mbps
ESP32 + LWIP: 9.22 Mbps

![](https://maker.wiznet.io/upload/ckeditor5/616178329%5F1763026566%2Epng)

---

## Test Result - iperf test under Ping flood attack

A continuous Ping flood of approximately 1500 ICMP echo requests per second was applied to generate network load.

Average Bandwidth (iperf test results)

ESP32 + TOE : 34.3 Mbps
ESP32 + LWIP: 1.52 Mbps

![](https://maker.wiznet.io/upload/ckeditor5/616178329%5F1763026756%2Epng)

The ESP32-S3 with TOE maintained stable throughput under both normal and Ping flood conditions.
While the LWIP-based setup showed severe performance degradation under heavy ICMP load,
the TOE-based system demonstrated almost no drop in bandwidth — clearly proving the benefit of hardware TCP/IP offloading.

---

## Test Result - iperf Performance under CPU Load

#### Experiment Objective

To evaluate how much network performance degrades when a high-priority CPU load task runs on the ESP32-S3,
and to verify the effectiveness of WIZnet TOE’s hardware TCP/IP offloading in maintaining performance under CPU stress.

#### Test Conditions

Source code of the `cpu_load_task` function used to generate artificial CPU load.
It runs with a higher priority than the network task to intentionally increase CPU utilization.

![](https://maker.wiznet.io/upload/ckeditor5/616178329%5F1763028633%2Epng)

*"cpu_load_task()" function*

![](https://maker.wiznet.io/upload/ckeditor5/616178329%5F1763029470%2Epng)

*`cpu_load_task` to FreeRTOS and assigning it to run on Core 0.*

Output of the FreeRTOS `tasks` command.
The `load0` task operates with a higher priority than the `iperf_traffic` task, confirming the intended CPU load condition.

![](https://maker.wiznet.io/upload/ckeditor5/616178329%5F1763029184%2Epng)

*"tasks" command.*

Comparison of average throughput between TOE and LWIP under CPU load.
While TOE showed only about a 25% reduction, LWIP performance dropped by approximately 49%.

| Category | Normal | Under CPU Load | Drop | Reduction Rate |
| --- | --- | --- | --- | --- |
| **TOE** | 34.8 Mbps | 26.1 Mbps | ↓ 8.7 Mbps | ~25% decrease |
| **LWIP** | 9.22 Mbps | 4.66 Mbps | ↓ 4.56 Mbps | ~49% decrease |

![](https://maker.wiznet.io/upload/ckeditor5/616178329%5F1763027267%2Epng)

Although the absolute drop in throughput appears larger for TOE,
the reduction rate of LWIP (approximately 49%) is nearly twice that of TOE (25%).
This indicates that TOE not only delivers higher overall throughput but also maintains much more stable performance under CPU stress.

In the TOE configuration, even when the CPU is heavily loaded,
TCP session management, retransmission control, and checksum calculations are handled by the hardware,
minimizing the performance impact.
In contrast, with LWIP, all TCP/IP processing is performed by the CPU itself; therefore,
when a high-priority computation task (load task) consumes CPU time, network task scheduling is delayed, leading to a sharp decline in throughput.

---

## Evaluation

Through this series of experiments, the **practical benefits of combining the ESP32-S3 with WIZnet’s TOE** were clearly verified.
Three types of tests were conducted — standard iperf performance, stability under Ping flood conditions, and network performance under CPU load.

**Standard iperf Test**
The TOE configuration achieved an average throughput of **34.8 Mbps**, compared to **9.22 Mbps** with LWIP — approximately **3.8 times higher performance**.
This confirms that hardware TCP/IP offloading significantly improves transmission efficiency.

**Ping Flood Test**
The TOE-based system maintained **34.3 Mbps**, showing almost no degradation,
while the LWIP setup dropped drastically to **1.52 Mbps**.
This demonstrates the **superior stability and resilience of TOE** against heavy ICMP traffic.

**CPU Load Test**
Under CPU stress, TOE maintained **26.1 Mbps** (about 25% drop),
whereas LWIP decreased to **4.66 Mbps** (about 49% drop).
These results experimentally confirm that TOE is highly resistant to CPU scheduling interference thanks to hardware TCP/IP offloading.

---

## Practical Application

With TOE integration, the ESP32-S3 achieves a stable wired network performance of approximately **25–35 Mbps (3–4 MB/s)**.
This improvement enables the development of **real-time network processing applications** that were previously impractical under the LWIP environment (~9 Mbps).
The table below summarizes potential application areas that can fully utilize this enhanced throughput.

| **Field** | **Example** | **Technical Feasibility** |
| --- | --- | --- |
| **Industrial Automation / IoT Gateway** | High-speed sensor data acquisition, quality inspection video transmission, motion control networking | ✅ Enables stable real-time data transfer and deterministic control |
| **Video & Image Streaming** | MJPEG or low-bitrate H.264 streaming (CCTV, inspection camera) | ✅ Supports real-time streaming of 720p–1080p low-compression video |
| **Robotics / AGV / Drone Communication** | TCP-based remote control and status feedback | ✅ Ensures low latency and reliable bidirectional communication |
| **Firmware OTA / Large Log Transfer** | Firmware update, data backup, or log upload | ✅ Provides fast and stable bulk data transmission |
| **Secure Node / Encryption Gateway (WCC Architecture)** | Real-time encryption/decryption relay | ✅ Enables parallelized data processing with minimal CPU overhead via hardware offloading |

---

Source: https://maker.wiznet.io/Lihan__/projects/esp32-s3-geekble-nano-toe-vs-lwip-iperf-performance-test/
