码迷,mamicode.com
首页 > 系统相关 > 详细

网络虚拟化基础一:linux名称空间Namespaces

时间:2017-04-01 19:12:25      阅读:472      评论:0      收藏:0      [点我收藏+]

标签:user   proc   世纪   网络虚拟化   lca   运行时   网络命名空间   时间   应用程序   

一 为何要学习网络命名空间

    名称空间

许多容器和虚拟化技术中都依赖于网络命名空间。

容器虚拟化技术的典型代表如LXC、Docker。Neutron也使用Linux网络命名空间。

当虚拟交换机,例如虚拟交换机,虚拟交换机 Openvswitch,已安装。

 

一 介绍

从Linux 2.6.24版的内核开始,Linux 就支持6种不同类型的命名空间。它们的出现,使用户创建的进程能够与系统分离得更加彻底,从而不需要使用更多的底层虚拟化技术。

 CLONE_NEWIPC: 进程间通信(IPC)的命名空间,可以将 SystemV 的 IPC 和 POSIX 的消息队列独立出来。
    CLONE_NEWPID: 进程命名空间。空间内的PID 是独立分配的,意思就是命名空间内的虚拟 PID 可能会与命名空间外的 PID 相冲突,于是命名空间内的 PID 映射到命名空间外时会使用另外一个 PID。比如说,命名空间内第一个 PID 为1,而在命名空间外就是该 PID 已被 init 进程所使用。
    CLONE_NEWNET: 网络命名空间,用于隔离网络资源(/proc/net、IP 地址、网卡、路由等)。后台进程可以运行在不同命名空间内的相同端口上,用户还可以虚拟出一块网卡。
    CLONE_NEWNS: 挂载命名空间,进程运行时可以将挂载点与系统分离,使用这个功能时,我们可以达到 chroot 的功能,而在安全性方面比 chroot 更高。
    CLONE_NEWUTS: UTS 命名空间,主要目的是独立出主机名和网络信息服务(NIS)。
    CLONE_NEWUSER: 用户命名空间,同进程 ID 一样,用户 ID 和组 ID 在命名空间内外是不一样的,并且在不同命名空间内可以存在相同的 ID。

在专业网络世界中,长时间使用虚拟路由并转发VRF(Virtual Routing Forwarding)是很常见的。Cisco, Alcatel-Lucent, Juniper等正在支持这项技术。在L2交换世界中,VLAN的概念自上世纪90年代以来一直被使用。一个物理交换机支持多个广播域。大多数交换机支持多达4k Vlans。

这个想法已经被采纳到了L3世界。许多网络设备现在都支持VRF。这意味着,可以在一个物理设备上运行多个虚拟路由器(三层转发实例)。

在Linux世界中,专业网络世界的VRF获得了名称“网络命名空间”。在Linux中,还有其他命名空间可用(如mount命名空间...)。 http://lwn.net/Articles/531114/上的acticle有更多的细节。

每个网络命名空间都有自己的路由表,它自己的iptables设置提供nat和过滤。 Linux网络命名空间还提供了在网络命名空间内运行进程的功能。

但为什么有人会使用这个功能。考虑在Linux系统上运行的防火墙。您应该将防火墙的所有服务接口分配到网络命名空间。之后,默认网络命名空间和防火墙网络命名空间正在运行不同的路由表。像SSH这样的应用程序只能在默认命名空间中可用,但不能在防火墙命名空间中。并且您可以在每个命名空间中使用相同的IP地址,而不会有任何干扰 - 但是请注意L2层!

 

 

 

 

 

 

 

 

 

参考链接:

https://lwn.net/Articles/531114/

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

网络虚拟化基础一:linux名称空间Namespaces

标签:user   proc   世纪   网络虚拟化   lca   运行时   网络命名空间   时间   应用程序   

原文地址:http://www.cnblogs.com/linhaifeng/p/6657119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!