高性能网络SIG月度动态:推动 SMC 用户态工具支持细粒度透明替换和共享内存占用监控
本次月报总结了 SIG 在 7 月和 8 月的工作进展,涵盖 SMC 新特性推进及多个稳定性问题的修复:
01 整体进展
1、特性:推动上游 smc-tools 用户态工具对 IPPROTO_SMC 协议的透明替换支持。
2、特性:推动上游内核和 smc-tools 用户态工具对 SMC 持有共享内存数量的监控支持。
3、修复:修复多个通用内核网络、SMC 和 virtio-net 相关的 bug。
02 ANCK 通用内核网络协议栈
Bugfix
- 修复 sch_multiq 中潜在的 OOB 写异常问题。(PR3462)
- 修复 sockmap 中未被 accept 的 child sock 记录残留的问题。(PR3451)
- 修复 tcp 的异常警告问题。(PR3788)
- 修复 GRE 隧道发送路径上未捕获 pskb_trim 异常返回值导致的错误。(PR3612)
- 修复在 __skb_tstamp_tx 中存在的 skb 泄漏问题。(PR3615)
- 修复 SOCK_RAW socket 访问 icmp 头中未初始化字段导致的访问错误。(PR3606)
- 修复 netlink_set_err 中可能发生死锁的问题。(PR3609)
安全
- 修复 CVE-2024-36886:在 tipc_buf_append 错误处理路径中存在的 use-after-free 漏洞。(PR3529)
- 修复 CVE-2024-41090 和 CVE-2024-41091:禁止 tap/tun 设备传递长度小于以太网头的数据报文以避免潜在安全风险。(PR3559, PR3560)
03 SMC
双月 SMC 相关工作集中在推进上游 smc-tools 支持 IPPROTO_SMC 协议、smc 共享内存数量监控特性及稳定性问题修复。
smc-tools 支持 IPPROTO_SMC
随着 6 月 SIG 提交的 IPPROTO_SMC 特性合入上游,相关的对 smc-tools 用户态工具的补充也已提交上游 [1],此提交使 smc-tools 能够基于 eBPF 完成 IPPROTO_SMC 的透明替换。
共享内存数量监控
smc-tools 提供的 SMC 状态统计中缺少对每个 link group 或当前活跃连接持有共享内存的统计。为此,SIG 在 8 月向上游提交了共享内存监控相关的补丁[2],相应的用户态工具修改也已提交至上游 smc-tools 仓库[3],目前均已合入。
稳定性问题修复
修复了 IPPROTO_SMC 协议在 socket 创建失败时可能导致的 use-after-free 问题 [4]。
04 virtio
稳定性问题修复
修复了 virtio 网卡未协商 VIRTIO_NET_F_VQ_NOTF 特性时 vq resize 可能失败的问题 [5]。
相关链接:
[1] https://github.com/ibm-s390-linux/smc-tools/pull/10
[2]https://lore.kernel.org/netdev/20240814130827.73321-1-guwen@linux.alibaba.com/
[3] https://github.com/ibm-s390-linux/smc-tools/pull/11
[4]https://lore.kernel.org/netdev/1722224415-30999-1-git-send-email-alibuda@linux.alibaba.com/
[5] https://gitee.com/anolis/cloud-kernel/pulls/3774
注:更多龙蜥 SIG 月度动态可点击这里查看。
高性能网络 SIG(Special Interest Group) :在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想,打造高性能网络协议栈,提升云计算时代数据中心应用的网络性能。
高性能网络 SIG 主页:https://openanolis.cn/sig/high-perf-network