SDN 与 Mininet 概述
SDN 全名为(Software Defined Network)即软件定义网络,是现互联网中一种新型的网络创新架构,其核心技术 OpenFlow 通过网络设备控制面与数据面分离开来,从而实现网络流量的灵活控制,为网络及应用提供了良好的平台。而 Mininet 是一个轻量级软件定义网络和测试平台;它采用轻量级的虚拟化技术使一个单一的系统看起来像一个完整的网络运行想过的内核系统和用户代码,也可简单理解为 SDN 网络系统中的一种基于进程虚拟化平台,它支持 OpenFlow、OpenvSwith 等各种协议,Mininet 也可以模拟一个完整的网络主机、链接和交换机在同一台计算机上且有助于互动开发、测试和演示,尤其是那些使用 OpenFlow 和 SDN 技术;同时也可将此进程虚拟化的平台下代码迁移到真实的环境中。
Mininet 实现的特性
- 支持 OpenFlow、OpenvSwitch 等软定义网路部件
- 支持系统级的还原测试,支持复杂拓扑,自定义拓扑等
- 提供 Python API, 方便多人协作开发
- 很好的硬件移植性与高扩展性
- 支持数千台主机的网络结构
MiniNet在一台机器(VM、Cloud或Native)上创建了一个真实的虚拟网络,运行真实的内核、交换机和应用程序代码,只需几秒钟
Mininet在/mininet/node.py中定义了Node、OVSSwitch和Controller等重要的类。在OVSSwitch类中,通过使用命令OVS的命令创建交换机从而得到一个OVS实例。
Mininet创建的host,switch等实例实际上是运行在不同namespace下的某个进程。默认情况下Host运行在自己的namespace中,交换节点运行在root namespace中。
- Mininet的源码安装
1. 从github上获取Mininet源码。
2. 查看当前获取的Mininet版本
Mininet2.1.0p1及以后的版本可以原生支持OpenFlow1.3,所以我们这次安装的Mininet2.3.0d4版本支持OpenFlow1.3协议。
3. 源码树获取成功以后,安装Mininet。
# install.sh –a ##完整安装(默认安装在home目录下)
# install.sh -s mydir –a ##完整安装(安装在其他目录)
# install.sh –nfv ##安装Mininet+用户交换机+OVS(安装在home目录下)
# install.sh -s mydir –nfv ##安装Mininet+用户交换机+OVS(安装在其他目录下)
4. 安装完成以后,通过简单的命令测试Mininet的基本功能。
5. python自定义拓扑后验证拓扑结构(先用mn自带的模板)
简单网络示例图
在 Mininet 网络系统中直接输入 mn 命令,可以在此系统中创建单层的拓扑网络,从中默认创建了两台 host 和一个交换机,并且激活了控制器和交换机。同时也可以通过命令 net 查看到链路情况
在 Mininet 系统上,实现两主机互连测试。