ovsdb-server与客户端通过json-rpc通信,参考
https://tools.ietf.org/html/rfc7047#section-1.1(The Open vSwitch Database Management Protocol)
使用strace分析ovs-vsctl 命令系统调用
strace ovs-vsctl list-br
部分输出内容如下,所以ovs-vsctl通过unix socker(/var/run/openvswitch/db.sock)与ovsdb-server通信
socket(AF_UNIX, SOCK_STREAM, 0)
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/openvswitch/db.sock"}, 31) = 0
如何监控unix socket通信数据
没有找到 “通过tcpdump监控unix socket通信数据” 的资料。
下面介绍通过socat监控unix socket通信数据。
1. 启动socat
socat -t100 -v UNIX-LISTEN:/tmp/duplicatesocket,mode=777,reuseaddr,fork UNIX-CONNECT:/var/run/openvswitch/db.sock
2. 执行ovs-vsctl命令时,设置--db参数
ovs-vsctl --db unix:/tmp/duplicatesocket list-br
socat输出结果部分内容
> 2017/04/26 10:04:24.271932 length=56 from=0 to=55
{"id":0,"method":"get_schema","params":["Open_vSwitch"]}< 2017/04/26 10:04:24.273208 length=8192 from=0 to=8191
{"id":0,"result":{"cksum":"2211824403 22535","name":"Open_vSwitch","version":"7.12.1","tables":{"Controller":{"columns":{"connection_mode":{"type":{"min":0,"key":{"type":"string","enum":["set",["in-band","out-of-band"]]}}},"is_connected":{"ephemeral":true,"type":"boolean"},"local_gateway":{"type":{"min":0,"key":"string"}},"enable_async_messages":{"type":{"min":0,"key":"boolean"}},"external_ids":{"type":{"max":"unlimited","min":0,"key":"string","value":"string"}},"other_config":{"type":{"max":"unlimited","min":0,"key":"string","value":"string"}},"status":{"ephemeral":true,"type":{"max":"unlimited","min":0,"key":"string","value":"string"}},"local_netmask":{"type":{"min":0,"key":"string"}},"controller_burst_limit":{"type":{"min":0,"key":{"minInteger":25,"type":"integer"}}},"local_ip":{"type":{"min":0,"key":"string"}},"controller_rate_l
参考
http://www.humbug.in/2013/sniffing-unix-domain-sockets/(Sniffing Unix Domain Sockets)