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(六)

相关文章:

  • 2021-12-03
  • 2022-01-10
  • 2022-12-23
  • 2021-05-27
  • 2022-12-23
  • 2021-07-10
  • 2021-09-01
猜你喜欢
  • 2022-01-14
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
  • 2021-05-04
  • 2021-10-22
  • 2021-08-27
相关资源
相似解决方案