·发布于
为什么把 NDN 放进内核
从名字解析、地址兼容与逐包状态三个约束出发,理解 iStack 的设计空间。
NDN操作系统协议栈
NDN 的转发依据是名字。这个简单的变化会一路传导到操作系统:报文如何分流、接口如何抽象、状态放在哪里,都需要重新回答。
用户态转发器的边界
用户态转发器容易迭代,也方便实验。但当 NDN 想成为通用网络能力时,报文要在内核与用户态之间来回,接口与应用的配合也变得别扭。iStack 的出发点是:把这一层放回内核。
三个约束
- 名字解析要进入数据路径:转发与本地交付都依赖它。
- 不能假装地址不存在:MAC、IP、端口仍然是设备与链路的现实。
- 状态不是免费的:逐包状态带来性能收益,也带来内存与查找开销。
iStack 的应对方式是内核名字解析、双层 face 系统与 socket 兼容接口。三者不是独立的功能点,而是在同一套约束下的组合。
一个值得关注的结果
论文报告了 6.50 Gbps 的转发吞吐、相对 NDN-testbed 转发器 16.25 倍的提升,以及缓存包 46.08% 的转发时延降低。对内核协议栈来说,这些数字比“能不能跑”更能说明问题。
更完整的讨论见NSDI '24 论文。