OVS源码--ovs-vsctl(八)

ovs-vsctl 根据用户的命令和ovsdb-server 通信,用于查询和更新数据库配置。而vswithcd 会在需要重新更新配置的时候和ovsdb 交互,然后和内核dp 模块通过netlink消息执行真正的操作。本节以添加网桥、端口、vxlan 端口为例分析主要实现流程,其中ovsctl 进程的主要处理流程如下:
OVS源码--ovs-vsctl(八)_第1张图片

一、添加网桥

用户态shell 键入命令ovs-vsctl add-br br0,启动vsctl 进程用户完成数据库配置,流程如上面所述,最后调用add-br 对应的run 函数cmd_add_br(),流程如下:
OVS源码--ovs-vsctl(八)_第2张图片
vswitchd 检测到数据库的设置后完成业务配置,流程如下:
OVS源码--ovs-vsctl(八)_第3张图片
内核datapath 通过OVS_DATAPATH_FAMILY 通道收到一个 OVS_DP_CMD_NEW 类型的添加网桥的命令,该命令绑定的回调函数为ovs_dp_cmd_new(),处理流程如下:
OVS源码--ovs-vsctl(八)_第4张图片

二、添加端口

shell 键入命令ovs-vsctl add-port br0 eth0(这里分析netdev 类型的vport 端口,vxlan 在下一章节单独分析),vsctl 调用add-port 对应的函数cmd_add_port()配置数据库,流程如下:
OVS源码--ovs-vsctl(八)_第5张图片
vswitchd 调用dpif_netlink_port_add()通过netlink 发送对应消息到内核,流程和上一节所述的添加网桥类似,如下所示:
OVS源码--ovs-vsctl(八)_第6张图片
内核datapath 通过OVS_VPORT_FAMILY 通道收到一个类型OVS_VPORT_CMD_NEW 的添加端口的命令,该命令绑定的回调函数为ovs_vport_cmd_new (),处理流程如下:
OVS源码--ovs-vsctl(八)_第7张图片

原文链接:https://www.sdnlab.com/my_sdnlab/wp-content/uploads/2017/02/cntctfrm_1a5b490b5708a374ad0d207df48ec29e_Openvswitch%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0.pdf

你可能感兴趣的:(云)