Skip to content

Repository files navigation

join

High-Performance Modular Networking for the Linux Ecosystem

Test StatusSecurity StatusCodacy BadgeCodacy BadgeCodecovCoverallsDoxygenGitHub ReleasesGitHub License

join is a modular C++ network runtime framework for Linux, designed for optimized throughput and latency system-level networking.

It provides a set of composable libraries covering networking primitives, concurrency, serialization, cryptography, and Linux network fabric management.


🚀 Design Goals

  • Linux-native networking (sockets, netlink, raw sockets)
  • Event-driven and reactor-based architecture
  • Low-jitter event processing
  • Strong separation of concerns via modular libraries
  • High test coverage and correctness-first design
  • Suitable for infrastructure, control-plane, and runtime components

🎯 Target Use Cases

Designed for:

  • Network services and microservices
  • Control plane and infrastructure components
  • System-level networking tools
  • High-performance servers (web, RPC, messaging)

Not designed for:

  • Sub-microsecond latency requirements (HFT, market data)
  • Kernel-bypass networking (use DPDK or RDMA instead)
  • Data plane packet processing at 100Gbps

✨ Why join?

join focuses on providing robust, efficient building blocks for:

  • network runtimes
  • system services
  • control planes
  • high-performance servers
  • infrastructure tooling

🏗 Modular Architecture

The framework is a collection of specialized modules that build upon one another:

ModulePurposeHighlights
coreFoundationEpoll Reactor, io_uring Proactor, TCP/UDP/ICMP/Raw & Unix Sockets, Thread Pools, Lock-Free Queues & Allocator.
fabricNetwork ControlNetlink Interface Manager, ARP client, ICMP Ping/Traceroute & Path MTU discovery, DNS/mDNS/DoT Resolver.
cryptoSecurityTLS/DTLS Sockets & Streams, OpenSSL Wrappers, HMAC, Digital Signatures, Base64.
dataSerializationHigh-perf JSON (DOM/SAX), MessagePack, Zlib Streams.
servicesProtocolsHTTP/1.1 & HTTPS (Client/Server), SMTP/SMTPS, message composition.

🛠️ Build & Integration

Prerequisites

Install build tools and compilers:

sudo apt install gcc g++ clang clang-tools libclang-rt-dev cmake ninja-build gdb-multiarch

Install required libraries and test dependencies:

sudo apt install pkg-config libssl-dev zlib1g-dev libgtest-dev libgmock-dev

Compilers: Both GCC and Clang are supported. Clang requires libclang-rt-dev for coverage instrumentation (--coverage).
OpenSSL provides the core TLS runtime.

Optional Dependencies

OptionLibraryDefaultDescription
JOIN_ENABLE_IO_URINGliburing-devOFFEnables the io_uring based proactor backend for async I/O.
JOIN_ENABLE_NUMAlibnuma-devOFFEnables NUMA aware memory binding for LocalMem and ShmMem.

Install as needed:

sudo apt install liburing-dev # for JOIN_ENABLE_IO_URING
sudo apt install libnuma-dev # for JOIN_ENABLE_NUMA

Build from Source

git clone https://github.com/joinframework/join.git
cd join
cmake -B build -DCMAKE_BUILD_TYPE=Release -DJOIN_ENABLE_TESTS=ON
cmake --build build

With optional backends:

cmake -B build -DCMAKE_BUILD_TYPE=Release \
-DJOIN_ENABLE_IO_URING=ON \
-DJOIN_ENABLE_NUMA=ON \
-DJOIN_ENABLE_TESTS=ON
cmake --build build

Build Options

OptionDefaultDescription
BUILD_SHARED_LIBSONBuild as shared libraries.
JOIN_ENABLE_CRYPTOONBuild the crypto module.
JOIN_ENABLE_DATAONBuild the data module.
JOIN_ENABLE_FABRICONBuild the fabric module.
JOIN_ENABLE_SERVICESONBuild the services module (requires crypto, data, fabric).
JOIN_ENABLE_IO_URINGOFFEnable io_uring based proactor backend (requires liburing-dev).
JOIN_ENABLE_NUMAOFFEnable NUMA support (requires libnuma-dev).
JOIN_ENABLE_SAMPLESOFFBuild sample programs.
JOIN_ENABLE_TESTSOFFBuild the test suite.
JOIN_ENABLE_COVERAGEOFFEnable code coverage instrumentation (requires Debug build).

Run Tests

ctest --test-dir build --output-on-failure

📦 Integration

join exports standard CMake targets. To use it in your project:

find_package(joinREQUIRED)
target_link_libraries(your_appPRIVATEjoin::corejoin::cryptojoin::datajoin::fabricjoin::services
)

📊 Quality & Performance

Every commit is validated against an extensive test suite to ensure stability in concurrent environments:

  • 1000+ Unit Tests covering networking, concurrency, and data parsing.
  • Security: Continuous scanning via Codacy and GitHub Security workflows.

📖 Documentation