3 个版本
0.0.2 | 2020 年 2 月 8 日 |
---|---|
0.0.1 | 2020 年 1 月 4 日 |
0.0.1-wip | 2019 年 5 月 6 日 |
在 #ethernet 中排名第 21
1MB
19K SLoC
用户空间网络和 unikernels 的独立库。
目录
这也是推荐的阅读顺序,但您也可以自由跳过,每个章节都尽可能独立。
亮点
概述中最有趣的功能
- 零拷贝和无缓冲的 TCP(重传)
- 自由选择数据包队列策略
- 可选的 tuntap 和原始套接字适配器,具有千兆比特数据速率
此外,我非常感谢 @whitequark 的 smoltcp
。 整体结构可能完全不同,但线模块的大部分内容没有它是不可能实现的,而且从中学习到的经验对于设计至关重要。(也许您有时间也可以看看她的其他项目,非常有趣。)
设计和相关核心概念
这个库使用回调树处理网络数据包。虽然可以使用该库编写适配器,但请不要期待内置的套接字接口。
在 ethox
中,永远不会动态分配内存(也没有任意递归)。它可能会调用用户回调,但这是可选的,而不是操作所必需的。这可能在最初看起来很限制,但在实践中,这意味着设置代码将明确传递预分配的内存以供使用,而不是在运行时选择。事前的、明确的资源管理哲学也扩展到了分配之外。如果有任何连接可能争夺的资源,它将尝试在预先分区中将其分区,以保证每个连接都至少有一份最小份额,或者在这种情况下不可能明确实现,则将其选择暴露给调用者。