Mininet 是一款轻量级的进程虚拟化网络仿真工具,其最重要的一个特点就是它的所有代码几乎可以无缝迁移到真实的硬件环境,方便为网络添加新的功能并进行相关测试。
Mininet 是一个可以在有限资源的普通电脑上快速建立大规模 SDN 原型系统的网络仿真工具。该系统由虚拟的终端节点、OF交换机和控制器组成,这使得它可以模拟真实网络,可对各种想法或网络等进行开发验证。由于 Mininet 是基于 Linux 容器这一内核虚拟化技术开发出的进程虚拟化平台,因此其实现进程虚拟化主要是用到了 Linux 内核的 Namespace(命名空间)机制。从 Linux 2.6.27 版本开始支持命名空间机制,可以实现进程级的虚拟化。在 Linux 中不同命名空间的进程看到的系统资源可能是不同的。默认所有进程都在 Root Namespace 中,某个进程可以通过 unshare
系统调用拥有一个新的命名空间,通过命名空间机制可以虚拟化 3 类系统资源。
网络协议栈:通俗来讲,每个命名空间都可以独自拥有一块网卡(可以是虚拟出来的),Root Namespace 看到的就是物理网卡,不同命名空间里的进程看到的网卡是不一样的。
进程表:简单来说,就是每个命名空间中的第一个进程看到自己的 PID 是 1,以为自己是系统中的第一个进程(实际是 init)。同时,不同命名空间中的进程之间是不可见的。
挂载表:不同命名空间中看到文件系统挂载情况是不一样的。
正