真实的SDN网络需要很多OpenFlow设备包括控制器、交换机、功能虚拟化等一系列设备共同依赖来搭建并应用,但因条件有限,每一位实验者不可能有这样真实的环境来验证或者实验,此文将主要介绍在没有OpenFlow硬件设备下模拟搭建通过Mininet基于不同数据中心的网络拓扑。使用Mininet设计模拟不同网络数据中心拓扑,可以用来分析网络的总流量,而且除此之外,还可以通过负载均衡策略来保证数据中心的可用性。不同数据中心网络拓扑管理设计,主要是基于胖树(Fat-Tree)拓扑创建网络,胖树网络的好处是具有一个多层次的树状拓扑结构固有的容错能力。
1 实验目的
掌握多数据中心网络拓扑的构建;
掌握多数据中心数据交换过程;
2 实验介绍
基于树型拓扑来创建弹性的树状网络能够展现多层次的树型拓扑结构固有的容错能力。假设每层具有不同的级别,具体分为:核心层、汇聚层、边缘层,每一层都只含有交换机。因此,一个简单的交换机/主机层网络可以由核心交换机、汇聚交换机、边缘交换机以及主机组成,也可以根据扇出大小来配置不同的数据中心网络拓扑。在该拓扑中,一个或多个核心交换机构成根;汇聚交换机的一层或多层位于树的中间;终端主机连接至顶端交换机,形成了树的叶子(边缘)。
当拓扑创建完成后,本实例的主要目的是实现交换机下挂主机间的连通。实现过程如下:主机间发送消息上报给交换机,交换机对收到的报文信息进行分析判断,如果交换机中存在此消息相对应的流表,则交换机直接下发流表,将报文消息转发给目的主机;如果交换机中没有相对应的流表,交换机将此发送消息给控制器,控制器根据消息分析关键字段内容,进行流表下发决策,交换机再将消息发送给目的主机,实现主机间通信的目的。
3 模拟拓扑
使用Mininet设计模拟一个多数据中心网络。用Mininet模拟仿真测试,主要是用Mininet中的OpenFlow交换机和自己提供的POX控制器进行测试,帮助在真实数据中心和仿真测试床数据中心提供有用的信息评估不同数据中心的网络应用性能。一个简单的基于两个数据中心的网络拓扑,如图1所示:
图中c1和c2为核心交换机,a1-a4为聚合交换机,e1-e4为边缘交换机,h1-h8为主机。本实验主要测试及验证交换机下挂主机间的连通性以及主机间通信收发数据包的速度。Mininet中自带的iperf性能测试工具可以测试不同主机间通信的性能带宽质量,在此例中,主要是对相同边缘交换机下的主机间、相同聚合交换机下不同边缘交换机间、相同核心交换机不同聚合交换机下的主机间进行测试。
4 实例代码
在此实验中,使用Mininet通过python自定义拓扑编写脚本创建两个数据中心的网络拓扑,且使用已准备的POX控制器(IP地址为192.168.5.104)进行管控。
应用Mininet创建两个数据中心的网络拓扑设计的脚本代码如下:
在代码中可以通过L1变量改变核心交换机的数量,进而边缘交换机数量也会改变,主机个数也随之改变,继而改变整个数据中心的网络拓扑。应用Mininet的易用可扩展性,生成多个不同数据中心的网络拓扑,可以实现更好更高效率的全局统配。
拓扑创建代码完成后,可以在Mininet命令行操作界面通过ping操作和iperf命令进一步验证主机间的连通性以及性能带宽分析,也可以通过编写测试脚本应用Mininet的操作命令进行全自动化测试连通性及性能带宽质量,代码如下:
通过测试脚本,验证所有主机的连通性测试以及各主机间的带宽性能测试。使用iperf指定特定两个主机进行测试并显示测试结果。
5 实验结果
本次实验中应用Mininet模拟不同数据中心的网络拓扑,如上述拓扑所示,除上面的测试脚本外,也可以通过Mininet命令控制台进行手动输入命令测试验证或通过实例开发中的测试脚本进行主机间的连通性及性能带宽进行验证。
通过Mininet手动操作命令创建拓扑:
测试结果如下:
(1)同一交换机内部的主机间连通性及通信带宽测试:h1和h2之间进行ping操作,经验证主机间能够ping通。当操作iperf h1 h2 命令时,h1和h2的带宽性能测试结果为:测试TCP带宽发送数据的速率为102Mbit/s,接收数据的速率为102Mbit/s。
(2)相同汇聚交换机下不同边缘交换机的主机间测试: h1和h3之间进行ping操作,经验证,两主机间能够通信。h1和h3的带宽性能测试结果为:测试TCP带宽发送数据的速率为49.9Mbit/s,接收数据的速率为49.9Mbit/s。
(3)相同核心交换机不同汇聚交换机下的主机间测试:h1和h5主机在相同汇聚同核心交换机不同汇聚交换机下,h1和h5之间进行ping操作,经验证,两主机间能够通信。h1和h5的带宽性能测试结果为:测试TCP带宽发送数据的速率为40.1Mbit/s,接收数据的速率为40.1Mbit/s。
如有理解不到位或有不正确的地方,敬请谅解多指正!谢谢!
本文来源于SDNLAB,可点击此阅读原文。如果您对本文感兴趣,可参与以下互动方式与作者近距离交流。
(1) 微博(http://weibo.com/sdnlab/)
(2) 微信(账号:SDNLAB)
(3) QQ交流群
SDN研究群(214146842)
OpenDaylight研究群(194240432)