Open
Description
简介
unix domian socket(uds)作为一种IPC方式,与TCP/IP采用相同的socket接口,在本机通信中广泛应用。本机环境下由于不用经过网络协议栈,所以在性能上比TCP更有优势。比如Linux的X11,就是通过uds通信的。
同时由于uds具有传递文件描述符的能力,且共享内存作为最快的IPC方式,没有自己的同步机制。因此,一种常规做法是采用uds作为共享内存的同步机制,并通过uds在进程间传递memfd。这种方式在通信中间件的设计实现上很常见,例如字节跳动的采用go语言实现的shmipc。
目前的观测手段
目前查看下来,观测手段较少。
- 在系统调用跟踪方面,可以用strace跟踪到。
- 在信息展示方面,可以用ss观测。
- 而在数据包跟踪方面,没看到原生的跟踪工具,除了使用bpftrace可以跟踪一下之外,一种常规做法是,借助socat将uds的数据包转发到一个TCP连接上,然后使用wireshark监控TCP数据,间接观测uds的数据。
不知道是否还有其他的观测工具,大家知道可以说下。
结论
在经过必要性论证通过后,我们的net工具,增加uds(以及其他IPC)方面的观测。
开发过程: