Linux的网络虚拟化得益于namespace和cgroup技术,其中namespace实现了资源的隔离,cgroup实现了资源的控制。
namespace概念
namespace 是 Linux 内核用来隔离内核资源的方式。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。
Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前 namespace 里的进程,对其他 namespace 中的进程没有影响。
namespace 隔离的资源有
查看Linux是否启用的namespace:
[root@worker1 ~]# cat /boot/config-3.10.0-693.el7.x86_64 | grep CONFIG_USER_NS
CONFIG_USER_NS=y
同理可以查看其他namespace是否开启
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
Linux中虚拟桥有普通的bridge,也有openstack等云系统中采用的openvswitch技术,在云计算中,openvswitch采用较为广泛。
OVS常用的组件
namespace和openvswitch操作将在后续文章中更新!