IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]三种方式使用vlan (by quqi99)

    quqi99发表于 2016-04-22 11:53:28
    love 0

    作者:张华  发表于:2016-04-22
    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

    ( http://blog.csdn.net/quqi99 )


    Use OVS port in QEMU

    sudo apt-get install qemu-system qemu-kvm virtinst libvirt-bin openvswitch-datapath-source openvswitch-controller openvswitch-switch virt-top virt-manager Python-libvirt

    sudo ovs-vsctl add-br br-mano
    sudo ovs-vsctl add-port br-mano eth2

    sudo virsh net-destroy default
    sudo virsh net-define /tmp/br-mano.xml
    <network>
      <name>br-mano</name>
      <forward mode='bridge'/>
      <bridge name='br-mano'/>
      <virtualport type='openvswitch'/>
    </network>
    #sudo virsh net-undefine default
    sudo virsh net-start br-mano  
    sudo virsh net-autostart br-mano

    Linux Bridge VLAN

    sudo modprobe 8021q
    sudo ip link add link eth1 name eth1.2 type vlan id 2
    #sudo vconfig add eth1 2
    #sudo ifconfig eth1.2 down
    #sudo vconfig rem eth1.2
    sudo ip link set eth1.2 up
    sudo brctl addbr br2
    sudo brctl setfd br2 0
    sudo brctl stp br2 on
    sudo ip link set br2 up
    sudo brctl addif br2 eth1.2
    sudo ifconfig br2 192.168.9.122/24
    sudo ip tuntap add gw2 mode tap
    sudo ip link set gw2 up
    sudo brctl addif br2 gw2
    hua@node1:~$ ip -d link show eth1.2
    22: eth1.2@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br2 state UP mode DEFAULT group default qlen 1000
        link/ether 2c:53:4a:02:20:3c brd ff:ff:ff:ff:ff:ff promiscuity 1
        vlan protocol 802.1Q id 2 <REORDER_HDR>

    OVS Bridge VLAN

    sudo ovs-vsctl add-br br-veth0
    sudo ovs-vsctl add-port br-veth0 eth1
    sudo ip link add veth0 type veth peer name veth1
    sudo ovs-vsctl add-port br-veth0 veth0
    sudo ovs-vsctl add-port br-mano veth1
    sudo ip link set veth0 up
    sudo ip link set veth1 up
    #sudo ovs-vsctl add-port br-veth0 veth0 -- set Interface veth0 type=patch options:peer=veth1
    #sudo ovs-vsctl add-port br-mano veth1 -- set Interface veth1 type=patch options:peer=veth0
    #sudo ovs-vsctl del-port br-mano veth1
    #sudo ovs-vsctl del-port br-veth0 veth0

    #Create ACCESS VLAN:
    sudo ovs-vsctl set port vnet0 tag=2
    #sudo ovs-vsctl remove port vnet0 tag 2
    #Enable both ACCESS VLAN as well as TRUNK VLAN:
    sudo ovs-vsctl set port vnet0 vlan_mode=trunk trunks=2 #access, native-tagged, native-untagged, trunk
    #sudo ovs-vsctl set port eth2 vlan_mode=access trunks=[]

    Verify VLAN

    Inside VM: ping 10.0.3.1 -I eth0

    sudo  tcpdump -i eth1  -e -n 'arp or icmp' and src host 10.0.3.1


    listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
    11:38:20.754894 52:54:00:f2:17:37 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 46: vlan 2, p 0, ethertype ARP, Request who-has 10.0.3.1 tell 10.0.3.2, length 28

    Conclusion

    OVS Bridge br-mano上的VM无论是采用在VM里打Tag还是在br-mano vnet0处打Tag后的vlan流量能到达eth1(vlan数据只在物理网卡上能使用tcpdump看到),但无法到达同一机器上linux bridge br2上的eth1.2,反之亦然




沪ICP备19023445号-2号
友情链接