Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Rust
  3. smoltcp

smoltcp

0BSDRustv0.13.0

A standalone, event-driven TCP/IP stack for bare-metal, real-time systems written in Rust.

GitHubGitHub
4.5k stars546 forks0 contributors

What is smoltcp?

smoltcp is a standalone TCP/IP networking stack implemented in Rust for bare-metal and real-time systems. It provides a complete networking implementation without requiring an operating system or heap allocation, solving the problem of adding network connectivity to resource-constrained embedded devices. The stack supports Ethernet, IPv4, IPv6, TCP, UDP, and ICMP protocols with a focus on simplicity and reliability.

Target Audience

Embedded systems developers working on IoT devices, real-time systems, and bare-metal applications that require network connectivity without the overhead of a full operating system. Rust developers building networking infrastructure for constrained environments.

Value Proposition

Developers choose smoltcp because it's one of the few production-ready TCP/IP stacks written in Rust with zero heap allocation, making it ideal for safety-critical and resource-constrained applications. Its clean design, extensive documentation, and focus on robustness differentiate it from heavier alternatives like lwIP.

Overview

a smol tcp/ip stack

Use Cases

Best For

  • Adding network connectivity to bare-metal embedded systems
  • Building real-time systems with TCP/IP networking requirements
  • Creating IoT devices with constrained memory resources
  • Implementing custom network stacks for specialized hardware
  • Educational purposes for learning TCP/IP protocol implementation
  • Networking in Rust-based embedded projects without OS dependencies

Not Ideal For

  • Projects requiring advanced TCP optimizations like selective acknowledgements or PLPMTU for high-loss networks
  • Development on non-Linux systems where hosted testing is needed
  • Applications that already have a full OS with a built-in, optimized networking stack
  • Teams wanting plug-and-play network setup without manual interface configuration

Pros & Cons

Pros

No Heap Allocation

Uses only stack memory with zero dynamic allocation, critical for resource-constrained embedded systems, as emphasized in the no-std design and feature list.

Bare-Metal Compatibility

Runs without an operating system, ideal for IoT and real-time applications, confirmed by its design for bare-metal, no-OS environments.

Comprehensive Protocol Suite

Supports IPv4, IPv6, TCP, UDP, and 6LoWPAN with full dual-stack implementation, detailed in the IP and transport layer sections of the README.

High Performance Benchmarks

Achieves Gbps throughput in loopback tests against Linux TCP stack, demonstrated in the benchmark.rs example with real-world results.

Cons

Missing Advanced Features

Lacks selective acknowledgements, PLPMTU, and timestamping, which are important for TCP efficiency, as admitted in the TCP layer omissions list.

Linux-Only Hosted Support

Hosted usage examples currently only work on Linux, limiting cross-platform testing, stated in the 'Hosted usage examples' section.

Complex Manual Setup

Requires manual configuration of tap interfaces and routing for testing, which is tedious compared to higher-level libraries, as shown in the installation steps.

Frequently Asked Questions

Quick Stats

Stars4,539
Forks546
Contributors0
Open Issues80
Last commit10 days ago
CreatedSince 2016

Tags

#embedded-systems#bare-metal#embedded#tcp-ip-stack#network-protocols#rust-library#embedded-networking#no-std#real-time#low-level-networking

Built With

R
Rust

Included in

Rust56.6k
Auto-fetched 16 hours ago

Related Projects

HurlHurl

Hurl, run and test HTTP requests with plain text.

Stars19,092
Forks730
Last commit16 hours ago
tonictonic

A native gRPC client & server implementation with async/await support.

Stars12,382
Forks1,233
Last commit23 hours ago
irohiroh

IP addresses break, dial keys instead. A library that adds QUIC + NAT Traversal to your apps.

Stars11,817
Forks609
Last commit1 day ago
quichequiche

🥧 Savoury implementation of the QUIC transport protocol and HTTP/3

Stars11,700
Forks1,038
Last commit2 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub