zoukankan      html  css  js  c++  java
  • network namespace连接的4种方法及性能

    veth pair

    # add the namespaces
    ip netns add ns1
    ip netns add ns2
    # create the veth pair
    ip link add tap1 type veth peer name tap2
    # move the interfaces to the namespaces
    ip link set tap1 netns ns1
    ip link set tap2 netns ns2
    # bring up the links
    ip netns exec ns1 ip link set dev tap1 up
    ip netns exec ns2 ip link set dev tap2 up
    # now assign the ip addresses

    linux bridge and two veth pairs

    # add the namespaces
    ip netns add ns1
    ip netns add ns2
    # create the switch
    BRIDGE=br-test
    brctl addbr $BRIDGE
    brctl stp   $BRIDGE off
    ip link set dev $BRIDGE up
    #
    #### PORT 1
    # create a port pair
    ip link add tap1 type veth peer name br-tap1
    # attach one side to linuxbridge
    brctl addif br-test br-tap1 
    # attach the other side to namespace
    ip link set tap1 netns ns1
    # set the ports to up
    ip netns exec ns1 ip link set dev tap1 up
    ip link set dev br-tap1 up
    #
    #### PORT 2
    # create a port pair
    ip link add tap2 type veth peer name br-tap2
    # attach one side to linuxbridge
    brctl addif br-test br-tap2
    # attach the other side to namespace
    ip link set tap2 netns ns2
    # set the ports to up
    ip netns exec ns2 ip link set dev tap2 up
    ip link set dev br-tap2 up
    #

    openvswitch and two veth pairs

    # add the namespaces
    ip netns add ns1
    ip netns add ns2
    # create the switch
    BRIDGE=ovs-test
    ovs-vsctl add-br $BRIDGE
    #
    #### PORT 1
    # create a port pair
    ip link add tap1 type veth peer name ovs-tap1
    # attach one side to ovs
    ovs-vsctl add-port $BRIDGE ovs-tap1 
    # attach the other side to namespace
    ip link set tap1 netns ns1
    # set the ports to up
    ip netns exec ns1 ip link set dev tap1 up
    ip link set dev ovs-tap1 up
    #
    #### PORT 2
    # create a port pair
    ip link add tap2 type veth peer name ovs-tap2
    # attach one side to ovs
    ovs-vsctl add-port $BRIDGE ovs-tap2 
    # attach the other side to namespace
    ip link set tap2 netns ns2
    # set the ports to up
    ip netns exec ns2 ip link set dev tap2 up
    ip link set dev ovs-tap2 up
    #

    openvswitch and two openvswitch ports

    # add the namespaces
    ip netns add ns1
    ip netns add ns2
    # create the switch
    BRIDGE=ovs-test
    ovs-vsctl add-br $BRIDGE
    #
    #### PORT 1
    # create an internal ovs port
    ovs-vsctl add-port $BRIDGE tap1 -- set Interface tap1 type=internal
    # attach it to namespace
    ip link set tap1 netns ns1
    # set the ports to up
    ip netns exec ns1 ip link set dev tap1 up
    #
    #### PORT 2
    # create an internal ovs port
    ovs-vsctl add-port $BRIDGE tap2 -- set Interface tap2 type=internal
    # attach it to namespace
    ip link set tap2 netns ns2
    # set the ports to up
    ip netns exec ns2 ip link set dev tap2 up

     性能测试:

    http://www.opencloudblog.com/?p=96

    http://www.opencloudblog.com/?p=386

    结论:

    The short summary is:

    • Use Openvswitch and Openvswitch internal ports – in the case of one iperf thread you get 6.9 GBit/s throughput per CPU Ghz. But this solution does not provide any iptables rules on the link.
    • If you like the old linuxbridge and veth pairs you get only 0.7 GBit/s per CPU Ghz throughput. With this solution it’s possible to filter the traffic on the network namespace links.

    Openstack

    If you are running Openstack Neutron, you should use the Openvswitch. Avoid linuxbridges. When connecting the Neutron networking Router/LBaas/DHCP namespaces DO NOT enable ovs_use_veth.

  • 相关阅读:
    管理者的四种不同授权风格
    centos7 未启用swap导致内存使用率过高。
    Dynamically create a div element with JavaScript/jQuery
    sql server: Parent/Child hierarchy tree view
    视频编解码系列(一)压缩编码基础常识
    mac 常用终端命令
    Linux下安装Python3.6.8
    SQL特殊字符转义
    Ehcache缓存监控
    指标管理体系设计
  • 原文地址:https://www.cnblogs.com/allcloud/p/4919674.html
Copyright © 2011-2022 走看看