尽管Linux 7.0的功能合并窗口已于上周末结束,且该内核正式稳定版需待四月才会发布,但已有若干新特性被提上日程,预计将在无重大问题或Linus Torvalds反对的前提下并入Linux 7.1内核。其中一项极有可能提交至Linux 7.1的功能是对套接字扩展属性的支持。
Christian Brauner一直致力于实现套接字的扩展属性支持。他上周在重构简易扩展属性并为套接字添加user.*扩展属性支持时解释道:
"通过搭建这一基础架构,本系列补丁实现了对套接字user.*扩展属性的支持。基于路径的AF_UNIX套接字可从底层文件系统(如tmpfs)继承扩展属性功能,但位于sockfs中的套接字——包括通过socket()创建的所有套接字及抽象命名空间的AF_UNIX套接字——此前完全不具备扩展属性支持能力。"
为套接字提供user.*扩展属性支持的主要动机源于GNOME和systemd的实际应用场景。
Brauner在该系列补丁的说明信中补充道:
"实际需求来自多个方向。systemd和GNOME正在扩大对Varlink作为IPC机制的应用范围。对于D-Bus,存在诸如dbus-monitor之类的工具可监控系统内的IPC通信,但这仅因D-Bus具有中央代理机制才得以实现。
而Varlink没有代理机制,目前无法识别哪些套接字使用Varlink协议。通过套接字的user.*扩展属性,服务可为其套接字标记所使用的IPC协议(例如user.varlink=1),随后eBPF程序便能选择性捕获这些套接字上的流量。结合网络链路枚举与这些扩展属性标签,可发现所有Varlink IPC入口点以进行调试和内省分析。
类似地,systemd-journald希望在/dev/log套接字上使用扩展属性进行协议协商,以表明是否支持RFC 5424结构化系统日志,或是否仅应使用传统的RFC 3164格式。
在容器环境中,这些标签尤为实用,因为高权限或更复杂的套接字识别方案往往不可行。"
这些补丁已被纳入VFS.Git的vfs-7.1.xattr Git分支。随着补丁就位,它们很可能在四月Linux 7.1合并窗口开启时被正式提交。