一、使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py

二、使用Mininet的命令行生成如下拓扑:

1) 3台交换机,每个交换机连接1台主机,3台交换机连接成一条线。

2) 3台主机,每个主机都连接到同1台交换机上。

3) 在2)的基础上,在Mininet交互界面上新增1台主机并且连接到交换机上,再测试新拓扑的连通性。

三、编辑基本要求第1步保存的Python脚本,添加如下网络性能限制,生成拓扑:

1) h1的cpu最高不超过50%;

2) h1和s1之间的链路带宽为10,延迟为5ms,最大队列大小为1000,损耗率50。

进阶要求

编写Python脚本,生成如下数据中心网络拓扑,要求:

编写.py拓扑文件,命名为“学号_fattree.py”;

必须通过Mininet的custom参数载入上述文件,不得直接使用miniedit.py生成的.py文件;

设备名称必须和下图一致;

使用Python的循环功能实现,不得在代码中手工直接添加设备和链路。


from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController,CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections class MyTopo( Topo ):
"Simple topology example." def __init__( self ):
"Create custom topo." # Initialize topology
Topo.__init__( self )
L1 = 2
L2 = L1 * 2
L3 = L2 * 2
s = [] # add ovs
for i in range( L1+L2+L3 ):
sw = self.addSwitch( 's{}'.format( i + 1 ) )
s.append( sw ) # add links between core and aggregation ovs
for i in range( L1 ):
sw1 = s[i]
for sw2 in s[L1:L1+L2]:
self.addLink( sw2, sw1 ) # add links between aggregation and edge ovs
for i in range(0, L2, 2 ):
for sw1 in s[i+L1:i+L1+2]:
for sw2 in s[L1+L2+i*2:L1+L2+(i+2)*2]:
self.addLink( sw2, sw1 ) #add hosts and its links with edge ovs
count = 1
for sw1 in s[L1+L2:L1+L2+L3]:
for i in range(2):
host = self.addHost( 'h{}'.format( count ) )
self.addLink( sw1, host )
count += 1
topos = { 'mytopo': ( lambda: MyTopo() ) }

执行结果

四、个人总结:

1、第一步sudo ./mininet/examples/miniedit.py可能会出现:



原因是mininet运行需要python3而Ubuntu20.04默认是python2。所以需要更改默认配置。可以使用命令修改:

sudo apt install python-is-python3

sudo cp -r /usr/local/lib/python3.6/dist-packages/ /usr/local/lib/python2.7/

2、保存文件后.py文件为只读,不可修改,可以使用命令修改:

chmod 777 file #user、gourp、other三个用户都能读取、写入、执行

3、总结:通过这次的实验,我对虚拟机有了更深入的了解,初步学习了mininet的基本的用法,同时也知晓了更多实用的指令,并且能够通过简单指令来实现相关功能。本次实验前半部分基本上没有碰到什么大的问题,主要的卡顿方向还是进阶部分,由于python好久都没用过了,基本上忘的差不多了,重新拾起来还是有点困难,很多东西都看不太懂,也是参考了很多的网站,还有一些专业性的代码,马马虎虎算是弄出来了,不过要是自己打应该还是不太行,之后会进一步学习的。

最新文章

  1. MySQL实现嵌套集合模型
  2. Sublime 快捷键
  3. python 实现文件下载
  4. BroadCast小结
  5. Java提高篇(三二)-----List总结
  6. JS中iframe相关的window.self,window.parent,window.top
  7. eclipse导入github项目
  8. projecteuler 10001st prime (求出第10001个质数)
  9. 20150911 for循环的用法以及小题目
  10. 函数变量作用域(python)
  11. Codeforces Round #336 (Div. 2) A. Saitama Destroys Hotel 模拟
  12. oracle 基本语句练习(一) where, between ,null, like,转义字符,order by
  13. 配置Log4j(非常具体)
  14. COJ 0557 4013多重部分和问题
  15. myeclipse实现Servlet实例(1) 通过继承servlet接口实现
  16. SQL 经典练习
  17. PHP 字符串替换 substr_replace 与 str_replace 函数
  18. CentOS 6.5玩转自制Linux、远程登录及Nginx安装测试
  19. FFmpeg源代码结构图 - 解码
  20. Shim 与 Polyfill

热门文章

  1. [数据结构]Hash Table(哈希表)
  2. P5687 [CSP-S2019 江西] 网格图
  3. 刷题笔记——3003.鸡兔同笼问题 & 2767.计算多项式的值
  4. vue3+quasar+capacitor开发多平台项目,使用quasar改变主题背景
  5. 方法引用_通过类名引用静态成员方法-方法引用_通过super引用父类的成员方法
  6. 读Java8函数式编程笔记05_数据并行化
  7. 【学习笔记】QT从入门到实战完整版(菜单栏、工具栏、浮动窗口、状态栏、中心部件)(3)
  8. 软工综合实践课设——员工招聘系统(参考BOSS直聘);Pyhton实现
  9. 文本纠错:提升OCR任务准确率的方法理解
  10. python3中,len()、isalpha()、isspace()、isdigit()、isalnum()实例