http://blog.csdn.net/lineuman/article/details/52108191
原文一 Linux Switching – Interconnecting Namespaces
http://www.opencloudblog.com/?p=66
原文二 Linux Network Namespaces
http://www.opencloudblog.com/?p=42
传统的软交换工具是linuxbridge,它是linux内核实现的。在前端管理linuxbridge的是brctl。一个新的软交换工具是Openvswitch,它的前端主要管理工具是ovs-vsctl
tap interfaces
用tunctl 或ip tuntap创建的tap接口不能直接把命名空间链接到linux网桥或者ovs网桥上。
方法一:使用一对veth pair
veth pair
连接两个命名空间的一种简单的方法是用veth pair
过程如下:
# 创建命名空间
ip netns add ns1
ip netns add ns2
# 创建the veth pair
ip link add tap1 type veth peer name tap2
# 把接口移到命名空间中
ip link set tap1 netns ns1
ip link set tap2 netns ns2
# 开启连接
ip netns exec ns1 ip link set dev tap1 up
ip netns exec ns2 ip link set dev tap2 up
方法二:一个linux网桥和两对veth pairs
这种方法常用于把超过两个的命名空间连接到一个交换机上
linux bridge and two veth pairs
连接过程略
方法三:一个openvswitch交换机和两对veth pairs
openvswitch and two veth pairs
这种方法使用了openvswitch代替了古老的linuxbridge
这里我们使用了一个openvswitch和两对vethpairs
The commands to create this setup are(命令如下):
创建命名空间
ip netns add ns1
ip netns add ns2
创建openvswitch(译者注:如果在plc_kvm场景下可能是br-int或其他)
ovs-vsctl add-br ovs-test
port1
# 创建一对pair(create a port pair)
ip link add tap1 type veth peer name ovs-tap1
# 把一端挂到ovs上
ovs-vsctl add-port ovs-test ovs-tap1
# 把另一端挂到命名空间ns1中
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-portovs-test 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和两个ovs port
openvswitch and two openvswitch ports
ip netns add ns1
ip netns add ns2
ovs-vsctl add-br ovs-test
ovs-vsctl add-port
BRIDGEtap1–setInterfacetap1type=internaliplinksettap1netnsns1ipnetnsexecns1iplinksetdevtap1upovs−vsctladd−port
BRIDGE tap2 – set Interface tap2 type=internal
ip link set tap2 netns ns2
ip netns exec ns2 ip link set dev tap2 up