## Mininet实践
`Mininet`是SDN实践必不可少的工具之一,可用于快速构建SDN网络。Mininet可以在普通个人电脑的操作系统上模拟出包括交换机、主机和控制器等软件定义网络的节点,从而满足网络研究人员对搭建网络环境的需求。
### 环境配置
Mininet只支持Ubuntu、CentOS、RedHat等系统。
`Docker`下的Ubuntu配出来有问题,可以不用折腾了。这本书是在Ubuntu下的教程,所以我也直接在虚拟机上安装了Ubuntu14.04。
`Ubuntu`下:
```bash
# 更新源
apt-get update
# 下载sudo、git
apt-get install sudo git
# 下载Mininet
cd /tmp
git clone git://github.com/mininet/mininet
# 安装
cd mininet/util
sudo bash ./install.sh
```
如果运行`sudo mn`没有卡住,而是进入了Mininet的交互界面就表示成功了。
在`Docker`下会卡在node建立的地方,目测问题出现在`OVS`的问题上。例如,在Docker中执行`ovs-vsctl add-br s1`会db连接报错。
如果把OVS装在本机上应该是可以的。
###系统架构
![](https://file.hurray0.com/uploads/menu/23/ad3be7211dfee4690c72f96474d89809.jpg)
Mininet默认采用`Open vSwitch`作为交换机。
ofprotocol模块用于和控制器建立连接并解析OpenFlow协议。
Mininet建立的Host,实际上是一个Namespace,其中运行着`/bin/bash`等进程。
主机和交换机端口之间的链路及交换机之间的链路由Veth Pairs(Virtual Ethernet Pairs)来模拟完成。
支持TC(Traffic Control),用户可以自定义链路的宽带、丢包率等具体参数。
Mininet运行时,首先运行`/bin/mn`文件,这是一个Python文件。在mn文件中定义了`MininetRunner`类,用于完成Mininet的启动。启动分为参数解析、运行环境构建、Mininet拓扑和主机创建等内容,可以分别由`MininetRunner`类的`self.parseArgs()`、`self.setup()`和`self.begin()`方法来完成。
版权属于:Hurray's InfoShare
本文链接:https://hurray0.com/menu/23/
如果没有特别声明,则为本博原创。转载时须注明出处及本声明!