实验1:SDN拓扑实践
作者:互联网
实验1:SDN拓扑实践
(一)基本要求
1.使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py
2.使用Mininet的命令行生成如下拓扑:
- a) 3台交换机,每个交换机连接1台主机,3台交换机连接成一条线
- b) 3台主机,每个主机都连接到同1台交换机上
3.在2 b)的基础上,在Mininet交互界面上新增1台主机并且连接到交换机上,再测试新拓扑的连通性
4.编辑(一)中第1步保存的Python脚本,添加如下网络性能限制,生成拓扑:
a) h1的cpu最高不超过50%;
b) 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):#继承拓扑
def __init__(self):
Topo.__init__(self)
L_fir = 2
L_sec = L_fir * 2
L_third = L_sec * 2
fir = []; sec = []; third = []
for i in range(L_fir):
s = self.addSwitch("s" + str(i + 1))
fir.append(s)
for i in range(L_sec):
s = self.addSwitch("s" + str(L_fir + i + 1))
sec.append(s)
for i in range(L_third):
s = self.addSwitch("s" + str(L_fir + L_sec + i + 1))
third.append(s)
for i in fir:
for j in sec:
self.addLink(i, j)
for i in range(L_sec):
if (i // 2) == 0:
for j in range(L_third // 2):
self.addLink(sec[i], third[j])
else:
for j in range(L_third // 2, L_third):
self.addLink(sec[i], third[j])
count = 1
for i in third:
for j in range(2):
h = self.addHost("h" + str(count))
self.addLink(i, h)
count += 1
topos = {"mytopo": (lambda: MyTopo())}
执行结果如下:
个人总结
本次实验的主要问题在于对mininet的作用以及命令行操作不熟悉上,没有有效的区分开可视化界面和命令行的使用区别,在完成本次实验之前可以先对计算机网络的相关概念有个大体的认知,对于本次实验的难度还是比较可观的。在本次实验中还要求大家掌握对于python的使用,所以部分友友可以先复习一下python的语法知识,对于本次实验要去理解每一步的意义,而不是按照步骤无脑完成;
遇到的问题
- sudo su #切换到根目录下进行
- 瞅瞅有没有连线错误以及主机的地址不要设置在范围外
个人感想
遇到问题,首选策略上百度,不要太依赖别人,提高资料整合能力;
标签:fir,third,self,实践,range,sec,SDN,拓扑 来源: https://www.cnblogs.com/sxlss/p/16685467.html