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 pyelftoolsgit 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 文档,可通过以下方式访问:
- 在线文档:https://mengdemao.github.io/lazybsd/
- 本地构建文档:
sudo apt install doxygen graphviz doxygen docs/Doxyfile xdg-open docs/html/index.html
我们欢迎各种形式的贡献!请先阅读贡献指南,以下是基本流程:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/your-feature) - 提交修改 (
git commit -am 'Add some feature') - 推送到远程分支 (
git push origin feature/your-feature) - 创建 Pull Request
本项目采用 BSD 3-Clause License
- FreeBSD 项目 - 提供优秀的网络协议栈实现
- DPDK 社区 - 高性能数据面支持
- LLVM 项目 - 现代编译工具链