OVS源码--ovs-vsctl(六)

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

一、添加网桥

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

二、添加端口

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