设为首页 - 加入收藏 玉溪站长网 (http://www.0877zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 模式 职业 赚钱
当前位置: 首页 > 六合彩特码诗 > 外闻 > 正文

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

发布时间:2018-09-13 18:00 所属栏目:[外闻] 来源:老王学网络
导读:9月15日技术沙龙 | 与东华软件、AWS、京东金融、饿了么四位大咖探讨精准运维! 真实的SDN网络需要很多OpenFlow设备包括控制器、交换机、功能虚拟化等一系列设备共同依赖搭建并应用,但因条件有限,每一位实验者不可能有真实的环境来验证或者实验。使用Minin
9月15日技术沙龙 | 与东华软件、AWS、京东金融、饿了么四位大咖探讨精准运维!

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

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

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

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

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

在此实验中,使用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命令控制台进行手动输入命令测试验证,测试结果如下:

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章