什么是Mininet?
Mininet在一台机器上模拟由主机、链路和交换机组成的完整网络。要创建两台主机、一台交换机的示例网络,只需运行:
sudo mn
Mininet对于交互式开发、测试和演示非常有用,尤其是那些使用OpenFlow和SDN的开发、测试和演示。在Mininet中建立原型的基于OpenFlow的网络控制器通常可以转移到硬件上,只需最少的更改即可实现全线速执行
它怎麽工作?
Mininet使用基于进程的虚拟化和网络命名空间创建虚拟网络-这些特性在最近的Linux内核中都可用。在Mininet中,主机被模拟为bash
进程在网络命名空间中运行,因此任何通常在Linux服务器(如Web服务器或客户端程序)上运行的代码应该在Mininet“Host”中运行良好。Mininet“主机”将拥有自己的专用网络接口,并且只能看到自己的进程。Mininet中的交换机是基于软件的交换机,如Open vSwitch或OpenFlow参考交换机。链路是虚拟以太网对,它们驻留在Linux内核中,并将我们的仿真交换机连接到仿真主机(进程)
功能
Mininet包括:
- 命令行启动器(
mn
)实例化网络 - 用于创建各种大小和拓扑的网络的便捷Python API
- 示例(在
examples/
目录)来帮助您入门 - 通过Python提供完整的API文档
help()
文档字符串,以及使用生成PDF/HTML文档的能力make doc
- 参数化拓扑(
Topo
子类)使用Mininet对象。例如,可以使用以下命令创建树网络:mn --topo tree,depth=2,fanout=3
- 命令行界面(
CLI
类),它提供有用的诊断命令(如iperf
和ping
),以及向节点运行命令的能力。例如,mininet> h11 ifconfig -a
通知主机H11运行该命令
ifconfig -a
- 清除垃圾(/tmp中的接口、进程、文件等)的“清理”命令它可能会被Mininet或Linux留下。如果事情不起作用,试试这个!
mn -c
Python 3支持
- Mininet 2.3.0支持Python3和Python2!
- 您可以并排安装Mininet的Python 3和Python 2版本,但最新安装将确定默认情况下使用哪个Python版本
mn
- 你可以跑
mn
直接使用Python 2或Python 3,只要安装了适当版本的Mininet,例如$ sudo python2 `which mn`
- 有关Python 3和Python 2支持的详细信息,请参阅上的发行说明http://docs.mininet.org
其他增强功能和信息
- 支持Ubuntu 20.04 LTS(以及18.04和16.04)
- 通过GitHub操作实现更可靠的测试和CI
- 有关此版本和以前版本的更多信息,请参阅上的版本说明http://docs.mininet.org
安装
看见INSTALL
有关安装说明和详细信息,请参阅
文档
除了API文档(make doc
),上提供了许多有用的信息,包括Mininet演练和Python API简介Mininet Web Site还有一个维基,鼓励您阅读并参与其中,特别是常见问题解答(FAQ),网址为http://faq.mininet.org
支持
Mininet是由社区支持的。我们鼓励您加入Mininet邮件列表,mininet-discuss
在:
https://mailman.stanford.edu/mailman/listinfo/mininet-discuss
加入我们吧
再次感谢所有Mininet的贡献者和用户!
Mininet是一个开源项目,目前托管在https://github.com/mininet我们鼓励您下载、检查、修改代码,并提交错误报告、错误修复、功能请求、新功能和其他问题以及拉取请求。感谢为Mininet项目贡献代码的每个人(有关更多信息,请参阅贡献者!)正是因为每个人的辛勤工作,Mininet才能不断成长和完善
享受Mininet吧
玩得开心!我们期待着看到您将如何使用Mininet来改变网络世界
鲍勃·兰茨,代表Mininet的贡献者