类 dpif_class 抽象的是OVS交换机用户空间和内核层datapath的通信接口(通过netlink),分层是出于性能和生产效率的考虑,通过接口dpif_class,用户层ovs-vswitchd会把发送各种端口,流表,查询等动作到内核层进行实际的执行,比如说我们增加一个端口到ovs中,那么就会从用户空间构造增加端口的 dpif_linux_vport 请求到datapath层。重点要知道的是 dpif_linux_class 就是这个类的一个实例,也是所谓默认的 system dpif实现,这里屡一 dpif_linux_class的创建过程。
我们知道 struct ofproto_class 代表openflow 交换机的接口,每个openflow交换机实例都需要实现这个接口,这里的实例是 ofproto_dpif_class,它引出一个交换机所有的资源。openflow protocol实例的生命周期四阶段是 alloc ->construct ->destruct ->dealloc。下面是从vswitchd启动到创建dpif的过程图: