Mininet 源代码*有 bin、custom、doc、mininet.egg-info、build、debian、examples、dist、mininet、util 10个子目录以及mnexec.c、setup.py等文件,目录结构如图所示。
(1)bin/:该文件夹下的mn文件是Mininet的运行文件,应用Python程序编写的文件,定义了MininetRunner类,Mininet安装后执行mn时即调用本程序,为整个测试创建基础平台。
Mininet运行文件mn执行过程中函数调用如下:首先,应用parseArgs()解析命令行传递的参数;然后通过setup()调用Mininet.net.init()来校验运行环境配置;再调用 begin()执行给定参数,完成包括创建拓扑、地址分配等操作;接着调用Mininet.net.Mininet()创建网络平台mn;应用Mininet.cli.CLI()函数创建CLI对象;并通过调用mn.start()启动网络实例;启动网络实例后,执行指定的测试命令,默认为cli,即调用CLI(mn)进入交互环境;执行结束后调用mn.stop()退出应用的网络实例。
(2)custom/:可以防止用户自定义的Python文件,如自定义的拓扑等。
(3)doc/:doxygen.cfg文件执行doxygen生成文档时的配置文件。
(4)debian/:生成deb安装包时的配置文件。
(5)mininet/:mininet的核心代码都在该文件夹内,下一小节将对各模块进行详细介绍。此外,该文件夹中的_init_.py文件用于将Python代码导入控制文件;clean.py文件提供两个函数:sh(cmd)调用shell来执行cmd,cleanup()用于清理残余进程或临时文件;test子文件夹用于存放测试的例子。
(6)util/:可放置辅助文件,包括安装脚本、文档辅助生成等。
(7)INSTALL:安装说明。
(8)setup.py:安装Python包时的配置文件,在Makefile中调用。
(9)CONTRIBUTORS:作者信息。
(10)README.md:说明文件。
(11)mnexec.c:执行一些快速命令,如关闭文件描述等,该文件是C程序,编译后生成的二进制文件mnexec被Python 库调用。