原理
模拟多数据中心流量带宽实验
案例目的:
通过Mininet模拟搭建基于不同数据中心的网络拓扑;
掌握多数据中心网络拓扑的搭建;
熟悉网络性能测试工具lperf,根据实验限额是SDN网络的性能;
通过程序生成真实网络流量。
数据中心应用价值:
- 树状拓扑结构容错能力强
- 降低数据中心成本消耗
- 提供重新排列的全带宽无阻碍路径
- 提高带宽利用率
- 分析数据中心网络流量性能
- 为真实数据中心和仿真测试床提供有用信息
流量模拟介绍
网络性能评估中一个巨大的挑战就是如何生成真实的网络流量,可以通过程序来创造人工的网络流量,通过建立测试环境来模拟真实的状况。
此应用主要以数据中心网络为目标场景,在mininet仿真环境中尽可能地还原数据中心内部的真实流量情况。
数据中心拓扑逻辑网络
核心交换机:c1,c2
聚合交换机:a1-a4
边缘交换机:e1-e4
主机:h1-h8
Mininet中自带的iperf性能测试工具可以测试不同主机之间哦通信的带宽性能质量,可以针对相同边缘交换机、相同聚合交换机不同边缘交换机、相同核心交换机不同聚合交换机下的主机进行测试。
如图自上而下分为三层,左右分为两个数据中心。
【核心交换机】
【多层聚合交换机】
【边缘交换机】
流量随机模型在Mininet中的应用
流量随机模型:主机向在网络中的另一任意主机以等概率发送数据包。
使用Mininet中的iperf工具在网络中生成UPD流量,iperf客户端传送数据流到iperf的服务端,由服务端接受并记录相关信息。
我们需要实现的是将批处理流的自定义命令添加到mininet 中,在mininet 中使用此自定义命令,实现上述功能。
Mininet自定义命令拓展实现
在mininet中进行自定义命令功能拓展主要分为4步:
- 修改mininet/net.py ##功能代码实现
- 修改mininet/cli.py ##注册命令
- 修改bin/mn ##加入到可执行文件中
- 重新安装Mininet核心文件:~/mininet/util/install.sh -n
具体实现
mininet/net.py中定义iperf_single()函数
在两个主机间进行iperf udp测试,并且在server端记录,实现iperf_single函数:
def iperf_single(self,hosts=,udpBw=,period=,port=):
(代码看不清,就记了名字)
net.py中添加自定义命令iperfmulti()函数
依次为每一台主机随机选择另一台主机作为iperf的服务端,通过调用iperf_single,自身以客户端按照指定参数发送UDP流。
def iperfMulti(self,bw,period=):
mininet/cli.py中注册iperfmulti命令
解析用户输入的命令,net.py定义的iperfmulti命令需要在CLI类中注册。
def do_iperfmulti(self,line):
bin/mn中加入iperfmulti可执行命令
将iperfmulti加入到对应的列表中。
重新编译mininet
进入mininet/util目录,重新编译安装mininet.
#~/mininet/util/install.sh -n
重新创建网络,如mn,输入iperf,可用table补全iperfmulti,从而可使用iperfmulti进行流量随机模型的测试。
演示
如图即为实现了。
模拟拓扑
数据中心拓扑创建——添加库
通过python脚本自定义拓扑,创建包含两个数据中心的网络拓扑:
- #cd custom
- #vi fattree.py
数据中心拓扑创建——拓扑函数及变量定义
数据中心拓扑创建——交换机添加
数据中心拓扑创建——交换机之间链路添加
数据中心拓扑创建——主机及其相关链路添加
数据中心拓扑脚本执行
启动Mininet,生成测试拓扑结构:
#mn --custom/home/sdnlab/mininet/cusstom/fattree.py --topo mytopo --controller=remote,ip=10.0.0.20,port=6633
注:
设置控制器IP地址,这里使用ryu控制器,其监听端口为6633,进入/ryu/ryu/add目录,执行命令:
#ryu-manager simple_switch_stp.py
–custom指定自定义拓扑文件
–topo指定加载拓扑的名字
(一张糊图)
退出命令
mininet>exit
演示
root@ccf:/opt/mininet/custom# ls(查看脚本文件)
root@ccf:/opt/mininet/custom# vi fattree.py(选择了胖树)
root@ccf:/home/ccf/ryu/ryu/add# ryu-manager simple_switch_stp.py(生成树协议)
root@ccf:/opt/mininet/custom# ls(查看脚本文件)
root@ccf:/opt/mininet/custom# vi fattree.py(选择了胖树)
root@ccf:/opt/mininet/custom# mn --custom fattree.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633
测试
mininet>iperf h1 h2
数据中心拓扑网络测试——iperfmulti UDP测试
在mininet中执行iperfmulti命令,设置带宽参数为0.025M,我们能看到8台主机随机地向另外一台主机发送数据包。
mininet>iperfmulti 0.025M
实现
root@ccf:~# cd /home/ccf/log/(路径是自定义的)
root@ccf:/home/ccf/log# ls
root@ccf:/home/ccf/log# vi 1.out
回车后进入
查看udp的带宽,,,一秒记录一次。。
也可以看客户端的数据
root@ccf:/home/ccf/log# vi client1.out
回车后进入
【Mininet入门——完】