原理讲解:

  当我们创建一个交换机(网桥)之后即(ovs-vsctl add-br brname),此时网络功能不受影响,但是会产生一个虚拟网卡,名字为brname(与网桥名字同名,可以使用  ifconfig brname查看),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能,有了这个交换机以后,还需要为这个交换机增加端口(port),一个  端口就相当于一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了;

  再执行(ovs-vsctl add-port brname port)之后,即网卡加入网桥之后,按照网桥的工作标准工作,则加入的端口(网卡)必须以混杂模式工作,工作在链路层,处理2  层的帧,所以这个port就不需要配置IP的(应该没有见过哪个交换机的端口有IP的吧)

  那么接下来你可能会问,通常的交换机不都是有一个管理接口,通过telnet到交换机上进行配置的,那么在OVS中创建的虚拟机有没有该接口呢,有的!上面提到创建交换机brname的时候产生了一个虚拟网口brname,那么,给这个虚拟网卡配置了ip之后,就相当于给交换机的管理接口配置了IP,对此一个正常的虚拟交换机就搞定了!!

  除此之外,与网桥同名的网卡(端口)起到了桥的功能;

二、工作场景

  ovs主要是用来虚拟化环境中,虚拟机之间的一个虚拟机和外网之间的通信场景,如下一个典型的结构图:

openvswitch常用操作-LMLPHP

  

  • 1 VM实例instance产生一个数据包并发送至实例内的虚拟网络接口VNIC,图中就是instance中的eth0.
  • 2 这个数据包会传送到物理节点上的VNIC接口,如图就是vnet接口。
  • 3 数据包从vnet NIC出来,到达桥(虚拟交换机)br100上.
  • 4 数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理节点上的eth0.
  • 5 数据包从eth0出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。

1、添加网桥br0:

  #ovs-vsctl add-br  br0

2、列出open vswitch中所有的网桥:

  #ovs-vsctl list-br

3、判断网桥是否存在:

  #ovs-vsctl br-exists br0

4、将物理网卡挂接到网桥:

  #ovs-vsctl add-port br0  eth0

5、新建虚拟端挂接到网桥中:

  #ovs-vsctl add-port br0 my_port_name

  eg:ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip = XX.XX.XX.XX

6、列出网桥中所有端口:

  #ovs-vsctl list-ports br0

7、列出所有挂接到网卡的网桥:

  #ovs-vsctl port-to-br eth0

8、查看open vswitch的网络状态:

  #ovs-vsctl show

9、删除网桥上已挂接的网口:

  #ovs-vsctl del-port  br0 eth0

10、删除网桥:

  #ovs-vsctl  del-br br0

参见:http://blog.chinaunix.net/uid-20737871-id-4333314.html

05-06 14:06