一、Mininet简单介绍:
Mininet网络仿真工具基于 linux Container架构。最重要的特点:几乎可以迁移到真实的硬件环境,支持 OpenFlow、OpenvSwitch 等软定义网路部件。 Mininet可以模拟真实网络,主要是用到了Linux 内核的namespace机制,通俗来说,namespace机制就是可以给模拟网络中的每一个虚拟设备分一个空间,各个虚拟设备之间彼此没有关系(看不到对方,但是可以连接起来)。namespace机制按照datapath的运行权限不通,分为kernel datapath和userspace datapath两种,这里不再详细说明。
二、Mininet源代码分析解读:
Mininet网络仿真工具主要基于Python语言,代码主要有两大部分:运行文件和Python库。代码结构图如下:
1)bin/:包含模拟运行文件mn
定义了MininetRunner类:
这个类中的主要函数有:
-->
作用:解析命令行传递的参数
-->
作用:校验运行环境配置
-->
作用:执行给定的参数
2)custom/:用户配置文件,拓扑图等
3)doc/:doxygen.cfg文件执行doyxgen生成文档时的配置文件(Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件。)
4)debian/:生成deb安装包时的配置文件
5)mininet/:核心代码所在
-->cli模块:用于节点间的交互
-->
link.TCIntf类:限制带宽、延迟、分组丢失率、最大排队长度等
-->
link.Link类:表示链路,连接两个虚拟以太网接口
-->net模块:创建拓扑图,配置namespace,ip,连接控制器
-->log模块:记录日志
-->node模块:表示网络中的各个基本元素,也是最重要的
包含node.Host主机基类,node.Controller控制器基类,node.Switch交换机基类
-->topo模块:维护网络拓扑的相关信息。
classTopo( object ): 拓扑基类
class SingleSwitchTopo( Topo ): 继承于Topo类,表示星型拓扑,若挂载在同一个交换机上,主机序号按照从小到大的顺序挂载到交换机的端口上
class SingleSwitchReversedTopo( Topo ): 继承于Topo类,表示星型拓扑,若挂载在同一个交换机上,主机序号按照从大到小的顺序挂载到交换机的端口上
topolib.classTreeTopo( Topo ):表示树形拓扑
6)util/:辅助文件,脚本等
7)其他文件
--> INSTALL安装说明
-->CONTRIBUTORS作者信息
-->README.md说明文件
-->mnexec.c执行快速命令,c语言编写。
-->setup.py安装Python包时的配置文件,在Makefile中调用
Mininet源代码下载地址:https://github.com/mininet/mininet
(小白一枚,上文中亦有本人个人观点,若有片面或错误,多谢指出=^_^=,--<-<-<@ )
(@^o^@)
(⌒:⌒)
(~):(~)
(~)v(~)