本文分析ovs中对conntrack的支持,分为命令行解析ct action及ovs-vswitchd端对conntrack和nat的处理流程。
根据datapath不同,实现也不一样,但是原理都类似。对于kernel datapath来说,使用kernel的conntrack来实现,对于userspace datapath来说,ovs本身来实现,可参考 lib/conntrack.c 文件。
conntrack相关字段
匹配域
可参考 http://openvswitch.org/support/dist-docs/ovs-fields.7.txt
- ct_state 连接状态,可能的值如下
new 通过ct action指定报文经过conntrack模块处理,不一定有commit。通常是数据流的第一个数据包
est 表示conntrack模块看到了报文双向数据流,一定是在commit 的conntrack后
rel 表示和已经存在的conntrack相关,比如ic