sdn/nfv学习---mininet---1. 什么是mininet?
起因:
最近在接触SDN和NFV相关的技术,不可避免的要学习mininet,再者想要记下些什么记录每天的收获,所以想起编辑一些概念的东西。由于像这种概念的东西,权威的机构说得最靠谱。最近拜读图解TCP/IP一书,其中1.4节提到了概念标准化的概念,任何概念标准化才会有助于概念或工程产品更好地推进,关于sdn走在前列的就是ONF和ONRC了吧,所以我就以ONF官网(https://www.opennetworking.org/projects/mininet/)为基参考并翻译了些关于mininet的事宜,由于概念设计的东西,我能展示出也只是冰山一角,所以还请大家多多努力。
细节:
ONF官网:
“从原理上较深刻地介绍了mininet的架构与功能”
Mininet为软件定义网络(SDN)提供虚拟测试平台和开发环境。 Mininet可以在任何笔记本电脑或PC上进行SDN开发,并且SDN设计可以在Mininet(允许廉价和简化的开发)和实际部署中的线速运行的真实硬件之间无缝移动。 Mininet启用
+ 快速建立软件定义网络的原型
+ 复杂的拓扑测试,无需连接物理网络
+ 多个并发开发人员在同一拓扑上独立工作
Mininet网络运行真正的代码,包括标准的Unix / Linux网络应用程序以及真正的Linux内核和网络堆栈。
Mininet为网络创建和实验提供了可扩展的Python API。 它是在宽松的BSD开源许可下发布的,并且由社区和SDN爱好者积极开发和支持。
Mininet网络由以下组成成分组成
+孤立的主机
一组用户级进程移动到提供接口,端口和路由表的独占所有权的网络名称空间中。
+模拟链接
Linux流量控制(tc)强制每个链路的数据速率将流量整形为配置的速率。 每个仿真主机都有自己的虚拟以太网接口。
+仿真开关
在内核模式下运行的默认Linux Bridge或Open vSwitch用于跨接口交换数据包。 交换机和路由器可以运行在内核或用户空间中。
============================================================================
Mininet官网(http://mininet.org/):
“介绍偏重于功能与宣传”
Mininet使用单个命令在几秒钟内创建一个真实的虚拟网络 ,在单台计算机(虚拟机,云或本机)上运行真实的内核,交换机和应用程序代码 :
因为您可以使用Mininet CLI (和API )轻松地与网络进行交互 ,对其进行定制 ,与其他人共享或将其部署在真实硬件上,Mininet对于开发 , 教学和研究很有用。
Mininet也是开发,共享和试验OpenFlow和软件定义网络系统的好方法。
Mininet积极开发和支持,并在宽松的BSD开源许可下发布。
==========================================================================
Mininet的GitHub上(https://github.com/mininet/mininet):
“推荐看,包括了比较全的讲解和全部代码”
什么是Mininet?
Mininet在单台机器上模拟主机,链路和交换机的完整网络。 要创建示例双主机,单交换机网络,请运行:
sudo mn
Mininet对交互式开发,测试和演示非常有用,尤其是那些使用OpenFlow和SDN的演示。 Mininet原型的基于OpenFlow的网络控制器通常可以在完全线路速率执行时以最小的改变传输到硬件。
它是如何工作的?
Mininet使用基于进程的虚拟化和网络名称空间创建虚拟网络 - 最近的Linux内核中可用的功能。 在Mininet中,主机模拟为在网络名称空间中运行的bash进程,因此任何通常在Linux服务器上运行的代码(如Web服务器或客户端程序)都应该在Mininet“主机”中正常运行。 Mininet“主机”将拥有自己的专用网络接口,只能看到自己的进程。 Mininet中的交换机是基于软件的交换机,如Open vSwitch或OpenFlow参考交换机。 链接是虚拟以太网对,它们位于Linux内核中,并将我们的仿真交换机连接到仿真主机(进程)。
特征
Mininet包括:
+ 一个命令行启动程序( mn )来实例化网络。
+ 一个方便的Python API,用于创建不同大小和拓扑的网络。
+ 示例(在examples/目录中)帮助您开始。
+ 通过Python help() docstrings获得完整的API文档,以及使用make doc生成PDF / HTML文档的能力。
+ 使用Mininet对象的参数化拓扑( Topo子类)。 例如,可以使用以下命令创建树型网络:
mn --topo tree,depth=2,fanout=3
+ 提供有用诊断命令(如iperf和ping )的命令行界面( CLI类),以及向节点运行命令的功能。 例如,
mininet> h11 ifconfig -a
告诉主机h11运行ifconfig -a命令
+ 一个“清理”命令可以清除Mininet或Linux可能留下的垃圾(接口,进程,/ tmp中的文件等)。 试试这个,如果事情停止工作!
mn -c
========================================================================
在Nick Feamster的网课上:
什么是mininet?
+ 一个能在个人PC上运行的网络虚拟化环境
+ 在单一机器上运行kernel内核,交换机和程序代码
+ 适应大多数的openflow特性
结尾:
关于mininet的研究只是作为指向标,是一个开始,以后会持续关注。