一、使用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好久都没用过了,基本上忘的差不多了,重新拾起来还是有点困难,很多东西都看不太懂,也是参考了很多的网站,还有一些专业性的代码,马马虎虎算是弄出来了,不过要是自己打应该还是不太行,之后会进一步学习的。

SDN拓扑实践的更多相关文章

  1. 实验1:SDN拓扑实践

    作业链接:实验1:SDN拓扑实践 一.实验目的 能够使用源码安装Mininet: 能够使用Mininet的可视化工具生成拓扑: 能够使用Mininet的命令行生成特定拓扑: 能够使用Mininet交互 ...

  2. 实验 1: SDN拓扑实践

    (图片和文档是自己写的,因为在CSDN也写了,所以会有自己的水印) 一.实验目的 能够使用源码安装Mininet: 能够使用Mininet的可视化工具生成拓扑: 能够使用Mininet的命令行生成特定 ...

  3. 实验1:SDN拓扑拓扑实验

    一.实验目的 能够使用源码安装Mininet: 能够使用Mininet的可视化工具生成拓扑: 能够使用Mininet的命令行生成特定拓扑: 能够使用Mininet交互界面管理SDN拓扑: 能够使用Py ...

  4. 《软件定义网络:SDN与OpenFlow解析》

    <软件定义网络:SDN与OpenFlow解析> 基本信息 原书名:SDN: Software Defined Networks 原出版社: O'Reilly Media 作者: (美)Th ...

  5. 实验2:Open vSwitch虚拟交换机实践

    作业链接:实验2:Open vSwitch虚拟交换机实践 一.实验目的 能够对Open vSwitch进行基本操作: 能够通过命令行终端使用OVS命令操作Open vSwitch交换机,管理流表: 能 ...

  6. 实验5:开源控制器实践——POX

    一.实验目的 1.能够理解 POX 控制器的工作原理: 2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法: 3.能够运 ...

  7. Edge-assisted Traffic Engineering and applications in the IoT

    物联网中边缘辅助的流量工程和应用 本文为SIGCOMM 2018 Workshop (Mobile Edge Communications, MECOMM)论文. 笔者翻译了该论文.由于时间仓促,且笔 ...

  8. 【Beta Scrum】冲刺! 3/5

    1. 今日完成情况 人员 学号 分工 是否完成 完成情况 胡武成 031502610 完成登录注册api,协助web端完成api N SDN课程实践加上课缘故,仅仅写完了登录注册的逻辑判断内容,但是短 ...

  9. 实验6:开源控制器实———RYU

    一.实验目的 1.能够独立部署RYU控制器: 2.能够理解RYU控制器实现软件定义的集线器原理: 3.能够理解RYU控制器实现软件定义的交换机原理. 二.实验环境 Ubuntu 20.04 Deskt ...

  10. 基于Neutron的Kubernetes SDN实践经验之谈

    首先,向大家科普下Kubernetes所选择的CNI网络接口,简单介绍下网络实现的背景. CNI即Container Network Interface,是一套容器网络的定义规范,包括方法规范.参数规 ...

随机推荐

  1. [编程基础] C++多线程入门6-事件处理的需求

    原始C++标准仅支持单线程编程.新的C++标准(称为C++11或C++0x)于2011年发布.在C++11中,引入了新的线程库.因此运行本文程序需要C++至少符合C++11标准. 文章目录 6 事件处 ...

  2. Zookeeper详解(01) -概述

    Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...

  3. Hadoop详解(06) - Yarn平台架构和资源调度器

    Hadoop详解(06) - Yarn平台架构和资源调度器 Yarn平台架构 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程 ...

  4. (一)elasticsearch 编译和启动

    1.准备 先从github官网上clone elasticsearch源码到本地,选择合适的分支.笔者这里选用的是7.4.0(与笔者工作环境使用的分支一致),此版本编译需要jdk11. 2.编译 Re ...

  5. P8622 [蓝桥杯 2014 国 B] 生物芯片

    简要题意 有 \(N\) 个二进制数,编号为 \(1\sim N\),初始时都是 \(0\).博士进行了 \(N-1\) 次操作,在第 \(i\) 次操作时,会将 \(1\sim N\) 中所有编号为 ...

  6. MySQL 判断语句 条件函数 case when、if、ifnull

    在MySQL中,需要用到条件判断函数,例如 case when.if.ifnull. 一.方法分类 二.具体方法 (1)if if(expr,result_true,result_false) 注意: ...

  7. Docker快速部署Nacos

    前置 机器配置不能太低 ( 2c2g的轻量服务器直接崩掉了) Docker https://www.docker.com/ 开始安装 mysql 使用docker安装mysql (推荐8.0) 可以不 ...

  8. Postgresql 使用Vscode开发指南

    Postgresql 使用Vscode开发指南 depends libraries sudo apt install -y libsystemd-dev libxml2-dev libssl-dev ...

  9. 一文搞懂工作流审批(Java+activiti)快速开发+自定义工作流配置

    前言 activiti工作流引擎项目,企业erp.oa.hr.crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求. 一.项目形式 springboot+v ...

  10. 命令行部署repmgr管理集群+switchover+切换测试

    本次部署未使用securecmd/kbha工具.无需普通用户到root用户的互信. 建立系统数据库安装用户组及用户,在所有的节点执行 root用户登陆服务器,创建用户组及用户并且设置密码 [root@ ...