3 个版本
0.1.5 | 2021 年 3 月 11 日 |
---|---|
0.1.4 | 2020 年 5 月 11 日 |
0.1.3 | 2020 年 4 月 4 日 |
#258 在 FFI 中
每月 52 次下载
用于 2 crates
1.5MB
39K SLoC
Capsule
网络功能开发的框架。用 Rust 编写,受 NetBricks 启发,基于英特尔 数据平面开发套件。
目录
概述
Capsule
的目标是提供一个易于使用的框架,用于网络功能开发,这对于开发者来说传统上具有很高的入门门槛。我们创建了一个工具,可以高效地操作网络数据包,同时保证类型安全、内存安全和线程安全。在 DPDK
和 Rust
的基础上,Capsule
提供了以下功能:
- 一个使用最少 CPU 周期的快速数据包处理器。
- 一个丰富的数据包类型系统,保证内存安全和线程安全。
- 一个强调简单性的声明式编程模型。
- 一个可扩展和可测试的框架,易于开发和维护。
快速入门
开始开发 Capsule
应用的最简单方法是使用我们团队提供的 Vagrant
虚拟机 和 Docker
沙盒。沙盒预先配置了所有必要的工具和库,用于 Capsule
开发,包括:
DPDK
19.11Clang
和LLVM
Rust1.50
rr
5.3
首先,在您的系统上安装 Vagrant
和 VirtualBox
。同时安装以下 Vagrant
插件:
host$ vagrant plugin install vagrant-reload vagrant-disksize vagrant-vbguest
然后克隆我们的沙盒仓库,启动并使用 ssh 登录到 Vagrant VM。
host$ git clone https://github.com/capsule-rs/sandbox.git
host$ cd sandbox
host$ vagrant up
host$ vagrant ssh
一旦进入已创建的安装了 Docker
的 Debian
VM,运行沙盒,使用以下命令:
vagrant$ docker run -it --rm \
--privileged \
--network=host \
--name sandbox \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
-v /lib/modules:/lib/modules \
-v /dev/hugepages:/dev/hugepages \
getcapsule/sandbox:19.11.6-1.50 /bin/bash
请记住,也要将您的项目工作目录挂载为沙盒的卷。然后您可以在容器内部使用 Cargo
命令,就像平常一样。
将 Capsule
添加为您的 Cargo.toml
的依赖项,并开始编写您的应用程序。
[dependencies]
capsule = "0.1"
如果您想在 Vagrant
中不使用 Docker
开发 Capsule
,请查看我们的 沙盒仓库,了解如何运行我们的 Vagrant VM 环境,以及其他不使用 Vagrant
或 Docker
的选项。
贡献
感谢您帮助改进项目!我们有一个 贡献指南,可以帮助您参与 Capsule
项目。
行为准则
本项目及其所有参与人员均受 Capsule 行为准则 的约束。通过参与,您同意此准则。如有违反行为准则的行为,请向 [email protected] 报告。
联系
维护者
当前维护人员及其合并 PR 的角色如下:
了解更多关于 Capsule 的信息
许可证
本项目采用 Apache-2.0 许可。
依赖项
~12–26MB
~355K SLoC