Mininet模拟不同数据中心的网络拓扑

服务器 数据中心
使用Mininet设计模拟一个多数据中心网络。用Mininet模拟仿真测试,主要是用Mininet中的OpenFlow交换机和自己提供的ODL控制器进行测试。

真实的SDN网络需要很多OpenFlow设备包括控制器、交换机、功能虚拟化等一系列设备共同依赖搭建并应用,但因条件有限,每一位实验者不可能有真实的环境来验证或者实验。使用Mininet设计模拟不同网络数据中心拓扑,可以用来分析网络的总流量,而且此外,还可以通过负载均衡策略来保证数据中心的可用性。不同数据中心网络拓扑管理设计,主要是基于Fat-Tree拓扑来创建网络,Fat-Tree网络的好处是具有一个多层次的树状拓扑结构固有容错能力。

[[242875]]

使用Mininet设计模拟一个多数据中心网络。用Mininet模拟仿真测试,主要是用Mininet中的OpenFlow交换机和自己提供的ODL控制器进行测试。一个简单的基于两个数据中心的网络拓扑,如图所示:

具有主要测试及验证交换机下挂主机间的连通性以及主机间收发数据包的速度。Mininet中自带的iperf性能测试工具可以测试不同主机间通信的性能带宽质量,在此例中,主要是对相同边缘交换机下的主机间、相同聚合交换机下不同边缘交换机间、相同核心交换机不同聚合交换机下的主机间进行测试。

在此实验中,使用Mininet通过python自定义拓扑编写脚本创建两个数据中心的网络拓扑,且使用已准备的POX控制器(IP地址为192.168.28.131)进行管控。

应用Mininet创建两个数据中心的网络拓扑设计的脚本代码如下:

拓扑创建代码完成后,可以在Mininet命令行操作界面通过ping 操作和iperf命令进一步验证主机间的连通性以及性能带宽分析,也可以通过编写测试脚本应用Mininet的操作命令进行全自动化测试连通性及性能带宽质量,代码如下:

  1. #FatTree.py  
  2. """Customtopology example 
  3. Addingthe 'topos' dict with a key/value pair to generate our newly defined 
  4. topologyenables one to pass in '--topo=mytopo' from the command line. 
  5. ""
  6.   
  7. frommininet.topo import Topo 
  8.   
  9. classMyTopo(Topo): 
  10.     "Simple topology example." 
  11.       def __init__(self): 
  12.          "create custom topo." 
  13.              #initializa topology 
  14.              Topo.__init__(self) 
  15.              L1 = 2 
  16.              L2 = L1 * 2 
  17.              L3 = L2 
  18.              cSwitch = [] 
  19.              aSwitch = [] 
  20.              eSwitch = [] 
  21.              
  22.          #add core ovs 
  23.          for i in range(L1): 
  24.                 sw = self.addSwitch('c{}'.format(i+1)) 
  25.                     cSwitch.append(sw) 
  26.              
  27.              #add aggregation ovs 
  28.              for i in range(L2): 
  29.                 sw = self.addSwitch('a{}'.format(L1 + i+1)) 
  30.                     aSwitch.append(sw) 
  31.                     
  32.              #add edge ovs 
  33.              for in range(L2): 
  34.                 sw = self.addSwitch('e{}'.format(L1 + L2 + i+1)) 
  35.                     eSwitch.append(sw) 
  36.                     
  37.              #add links between core aggregationovs 
  38.              for i in range(L1): 
  39.                 for j in range(L2): 
  40.                         # self.addLink(sw2, sw1, bw=10,delay='5ms', loss=10, max_queue_size=1000, use_htb=True
  41.                         link = self.addLink(cSwitch[i],aSwitch[j]) 
  42.                            
  43.              #add links between aggragation andedge ovs 
  44.              for i in range(L1): 
  45.                 for j in range(L1): 
  46.                         self.addLink(aSwitch[i],eSwitch[j]) 
  47.              
  48.              for i in range(L1): 
  49.                 for j in range(L1): 
  50.                         # self.addLink(sw2, sw1, bw=10,delay='5ms', loss=10, max_queue_size=1000, use_htb=True
  51.                         self.addLink(aSwitch[L1 + i],eSwitch[L1 +j]) 
  52.                            
  53.              #add hosts and its links with edgeovs 
  54.              count = 1 
  55.              for sw1 in eSwitch: 
  56.                 for i in range(L1): 
  57.                         host = self.addHost('h{}'.format(count)) 
  58.                            self.addLink(sw1,host) 
  59.                            count += 1 
  60.                            
  61. topos= {'mytopo':(lambda:MyTopo())} 

通过Mininet命令控制台进行手动输入命令测试验证,测试结果如下:

通过Mininet手动操作命令创建拓扑:

  1. root@ubuntu:/home/wr/study/sdn#mn --custom FatTree.py --topo mytopo--controller=remote,ip=192.168.28.131,port=6633 

1、同一交换机内部的主机间连通性及通信带宽测试:h1和h2之间进行ping操作。经验证主机间能够ping通。当操作iperfh1 h2命令时,h1和h2的带宽性能测试结果为:测试TCP带宽发送数据的速率为16.1Gbit/s,接收数据的速率为16.1Gbit/s。

2、相同汇聚交换机下不同机架的主机测试:h1和h3之间进行ping操作,经验证,两主机间能够通信。h1和h3的带宽性能测试结果为:测试TCP带宽发送数据的速率为91.6 Mbit/s,接收数据的速率为98.0Mbit/s。

3、相同核心交换机不同汇聚交换机下的主机间测试:h1和h5主机在相同核心交换机不同汇聚交换机下,h1和h5之间进行ping操作,经验证,两个主机间能够通信。h1和h5的带宽性能测试结果为:测试TCP带宽发送数据的速率为73.7Mbit/s,接收数据的速率为79.3Mbit/s。

责任编辑:武晓燕 来源: 老王学网络
相关推荐

2010-11-30 11:00:10

数据中心指标

2010-12-29 09:53:29

数据中心

2015-01-26 09:11:15

新数据中心FacebookFabric

2015-04-30 12:25:15

mininet数据中心

2015-06-17 17:24:38

企业数据中心互联网数据中心

2016-01-28 10:06:15

数据中心

2018-09-27 11:18:28

数据中心网络停机

2015-10-08 10:23:08

数据中心网络

2011-09-21 09:36:14

数据中心网络架构信息孤岛

2009-12-31 16:22:57

数据中心之“变” 网络

2011-04-12 10:54:30

网络布局机房布线

2012-05-02 10:06:34

虚拟桌面基础架构VDI数据中心

2010-08-05 09:36:06

2017-01-20 15:00:27

数据中心云计算

2020-08-11 10:38:51

数据中心IT技术

2011-06-21 10:32:18

LANVLAN虚拟化

2014-12-16 09:40:59

网络拓扑结构数据中心

2012-07-20 09:47:29

数据中心中网络架构网络架构

2018-04-26 08:20:02

2016-08-04 15:18:51

点赞
收藏

51CTO技术栈公众号