主动查询ovs的信息

openvswitch的flow信息获取途径现在通常是通过命令行CLI的方式(ovs-ofctl),或是部署agent,如neutron-ovs-agent,但通常这两种方法都需要在ovs所在的节点上部署,比较麻烦。

还有一种办法是网络controller通过openflow协议获取ovs的信息(如流信息),不过其负载就加重了。那么能否模拟网络controller的功能去获取流信息呢?当然可以,不过如果将ovs的控制器设置为主动模式连接我们的软件的话,那么这个软件就需要实现controller的功能,并且要与其他controller协作,更加麻烦。

其实openvswitch可以以服务端的形态存在,我们的软件可以连接ovs,从而获取其信息。要点在于

  1. 设置ovs为被动模式
  2. ovs-vsctl set-controller br-tun tcp:30.0.0.1 ptcp:6601
    这样ovs既可以主动连接网络controller(30.0.0.1:6633),又可以监听6601端口,接受客户端请求。此处br-tun与6601是一对,如果获取其他网桥的信息,则需要监听新的端口

  3. 设置ovs-ofctl为远程模式
  4. 在controller和node1两台机器上分别运行下面的命令:

    可见从不同主机都可以访问controller节点的br-tun桥,信息相同。

虽然ovs-ofctl不是自动化的方法,当时可以使用管道等技术实现程序化的办法。

在此感谢@Outlook的提示

Leave a Comment

Your email address will not be published. Required fields are marked *