Skip to content
 
 

Repository files navigation

lazybsd

Github Action GitHub code size in bytes GitHub all releases GitHub GitHub tag (latest by date) GitHub commit activity CodeFactor codecov Coverity Scan Build Status

FreeBSD 网络协议栈的 Linux 用户层移植实现

目录

项目背景

lazybsd 项目旨在将 FreeBSD 的高性能网络协议栈移植到 Linux 用户空间,为需要定制网络协议栈或进行网络协议开发的场景提供灵活的基础设施。项目特点包括:

  • 纯用户态实现,无需修改内核
  • 支持主流 CPU 架构(x86_64/AArch64)
  • 兼容 Linux 现有网络工具链
  • 提供标准 BSD Socket API

主要特性

✅ 完整移植 FreeBSD 13 网络协议栈
✅ 支持 TCP/UDP/ICMP 等核心协议
✅ 提供 epoll 兼容的事件驱动接口
✅ 集成 DPDK 高性能数据面支持
✅ 多线程安全架构设计
✅ 完善的单元测试覆盖(覆盖率 >85%)

快速开始

依赖安装

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y \
    build-essential \
    meson ninja-build \
    libnuma-dev \
    pkg-config \
    llvm-15 clang-15 \
    python3-pip

# 安装编译工具链
pip3 install --user pyelftools

编译安装

git clone https://github.com/mengdemao/lazybsd.git
cd lazybsd

# 使用构建脚本进行完整构建(包含依赖安装)
./build.py -a -c Release

# 安装到本地目录(默认安装到 ./install)
./build.py -i

# 或者使用CMake直接安装
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
make install DESTDIR=../install

安装完成后,文件将安装在 ./install 目录下:

  • 可执行文件:./install/bin/
  • 库文件:./install/lib/
  • 头文件:./install/include/

编译演示

使用指南

基础示例

#include <lazybsd.h>

int main() {
    lazybsd_init();

    int sock = lazybsd_socket(AF_INET, SOCK_STREAM, 0);
    // ... BSD socket 标准用法 ...

    lazybsd_cleanup();
    return 0;
}

运行测试用例

# 运行单元测试
./build/test/lazybsd_test

# 启动示例 HTTP 服务器
./build/examples/http_server

API 文档

项目提供完整的 API 文档,可通过以下方式访问:

开发贡献

我们欢迎各种形式的贡献!请先阅读贡献指南,以下是基本流程:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/your-feature)
  3. 提交修改 (git commit -am 'Add some feature')
  4. 推送到远程分支 (git push origin feature/your-feature)
  5. 创建 Pull Request

许可证

本项目采用 BSD 3-Clause License

致谢

  • FreeBSD 项目 - 提供优秀的网络协议栈实现
  • DPDK 社区 - 高性能数据面支持
  • LLVM 项目 - 现代编译工具链

About

用户态网络库实现

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages