OVS网络设备和简单网络模型

网桥   

      br-ex
            连接外部(external)网络的网桥

     br-int
           集成(integration)网桥,所有 instance 的虚拟网卡和其他虚拟网络设备都将连接到该网桥

           br-int 上各个 port     每个port相当于交换机上面的端口

     br-tun
           隧道(tunnel)网桥,基于隧道技术的 VxLAN 和 GRE 网络将使用该网桥进行通信

   使用的是 Open vSwitch 而非 Linux Bridge,brctl show 命令却看不到它们

  1. tap interface 命名为 tapXXXX。                一般是代表虚拟机的虚拟网卡

  2. linux bridge 命名为 qbrXXXX。

  3. veth pair 命名为 qvbXXXX, qvoXXXX        veth pair 是一种成对出现的特殊网络设备,它们象一根虚拟的网线连接两个网络设备

  4. OVS provider bridge  命名为 br-ethX(X 为 interface 的序号)
  5. patch port      ovs独有的虚拟网线设备

         veth pair 和 patch port的区别:

             patch port 是 ovs bridge 自己特有的 port 类型,只能在 ovs 中使用

             如果是连接两个 ovs bridge,优先使用 patch port,因为性能更好

             连接两个 ovs bridge,优先使用 patch port.技术上veth pair 也能实现,但性能不如 patch port

             连接 ovs bridge 和 linux bridge,只能使用 veth pair

             连接两个 linux bridge,只能使用 veth pair

                 

local network网络模型

     local network 不会与宿主机的任何物理网卡连接  流量只被限制在宿主机内   同时也不关联任何的 VLAN ID

      1.每个蓝色的框代表一个local network 每个网络有独立的网络命名空间 用命名空间隔离每个dhcp服务

      2.每个虚拟机通过tap设备连接到对应到自己Linux Bridge上 这个Linux Bridge主要用来实现自己的防火墙规则

      3.Linux Bridge设备通过veth pair 虚拟网线连接到 ovs 创建的br-int

      4.所有的虚拟机都会连接到br-int设备上 每个虚拟机通过tag这个虚拟vlan来做数据包的隔离

      5.只有属于同一个local 网络的虚拟机才能相互ping通  不同local网络之间的虚机是不能通信的

      6.所有的虚拟机是不能和外界通信的

       

flat network网络模型

      flat network 是不带 tag 的网络,宿主机的物理网卡通过网桥与 flat network 连接,每个 flat网都会占用一个物理网卡   每个网络与物理网卡一一对应

      每创建一个flat network需要占用一张独立的物理网卡  所有属于这个flat 网络下的虚拟机都是通过这个被占用的物理网卡进行跨主机通信

      如果没有跨越主机之间的虚拟机进行通信就相当于一个local 网络通信   下图创建的 flat网络 占用每个物理机的eth1网卡

vlan网络模型

      vlan network 是带 tag 的网络

      在 Open vSwitch 实现方式下,不同 vlan instance 的虚拟网卡都接到 br-int 上. 这一点与 linux bridge 非常不同,linux bridge是不同 vlan 接到不同的网桥上.

      收发 vlan 数据的物理网卡为 eth1,上面可以走多个 vlan.所以物理交换机上与 eth1 相连的的 port 要设置成 trunk 模式,而不是 access 模式

 

   cirros-vm1 位于控制节点,属于 vlan100

   cirros-vm2 位于计算节点,属于 vlan100

   cirros-vm3 位于计算节点,属于 vlan101

   cirros-vm1 与 cirros-vm2 都在 vlan100,它们之间能通信    cirros-vm3 在 vlan101,不能与 cirros-vm1 和 cirros-vm2 通信

   OVS 如何实现 vlan100 和 vlan101 的隔离: 

                与 Linux Bridge不同,Open vSwitch并不通过 eth1.100, eth1.101 等 VLAN interface 来隔离不同的 VLAN.所有的 instance 都连接到同一个网桥 br-int

               Open vSwitch 通过 flow rule(流规则)来指定如何对进出 br-int 的数据进行转发,进而实现 vlan 之间的隔离           

               当数据进出 br-int 时,flow rule 可以修改,添加或者剥掉数据包的 VLAN tag,Neutron 负责创建这些 flow rule 并将它们配置到 br-int,br-eth1 等 Open vSwitch 上

               数据包在物理网络中通过 VLAN 100 和 VLAN 101 隔离,在计算节点 OVS br-int 中则是通过内部 VLAN 1 和 VLAN 5 隔离

  两个OVS桥的作用:

     br-eth1桥

      实现当虚拟机向物理机网卡发送数据包的时候   把数据包中的ovs内部vlan tag修改成物理网络对应的vlan tag 然后再转发给物理机网卡

      br-eth1 跟 VLAN 相关的 flow rule

          priority=4,in_port=2,dl_vlan=1 actions=mod_vlan_vid:100,NORMAL   

          priority=4,in_port=2,dl_vlan=5 actions=mod_vlan_vid:101,NORMAL

         第一条的含义是: 从 br-eth1 的端口 phy-br-eth1(in_port=2)接收进来的包,如果 VLAN ID 是 1(dl_vlan=1)那么需要将 VLAN ID 改为 100(actions=mod_vlan_vid:100)

        

      从上面的网络结构我们可知,phy-br-eth1 连接的是 br-int,phy-br-eth1 的 inbound(接收) 包实际上就是 instance 通过 br-int 发送给物理网卡的数据

      br-int 通过 tag 隔离不同的 port,这个 tag 可以看成内部的 VLAN ID

     从 qvo4139d09b-30(对应 cirros-vm2,vlan100)进入的数据包会被打上 1 的 VLAN tag

     从 qvo98582dc9-db(对应 cirros-vm3,vlan101)进入的数据包会被打上 5 的 VLAN tag

    因为 br-int 中的 VLAN ID 跟物理网络中的 VLAN ID 并不相同,所以当 br-eth1 接收到 br-int 发来的数据包时,需要对 VLAN 进行转换.Neutron 负责维护 VLAN ID 的对应关系,并将转换规则配置在 flow rule 中.

   br-int桥

     实现当物理机网卡向虚拟机发送数据包的时候 把数据包中的物理网络vlan tag 修改成ovs内部的虚拟vlan tag 然后再转发给虚拟机

     priority=3,inport=1,dl_vlan=100 actions=mod_vlan_vid:1,NORMAL

     priority=3,inport=1,dl_vlan=101 actions=mod_vlan_vid:5,NORMAL

     port 1 为 int-br-eth1,那么这两条规则的含义就应该是:

        1. 从物理网卡接收进来的数据包,如果 VLAN 为 100,则改为内部 VLAN 1

        2. 从物理网卡接收进来的数据包,如果 VLAN 为 101,则将为内部 VLAN 5

        数据包在物理网络中通过 VLAN 100 和 VLAN 101 隔离,在计算节点 OVS br-int 中则是通过内部 VLAN 1 和 VLAN 5 隔离

   

      

     

猜你喜欢

转载自www.cnblogs.com/yxh168/p/9633613.html