SDN初体验(软件定义网络实验一)
作业说明
本次实验步骤2、3是在机房环境下完成的,步骤1、4是在自己笔记本上重新配置完成的,所以环境、用户名什么的会略有差别。
1. 安装轻量级网络仿真工具Mininet
为了节约课程时间,实验室机房PC已经安装了Mininet,请大家在课后在自己的Ubuntu系统或虚拟机中尝试安装,并记录安装步骤。
我所采用的是依照给定的github上mininet源安装,在自己的新建虚拟机下进行安装。
一、安装git
sudo apt install git
二、安装mininet
git clone http://github.com/mininet/mininet.git
cd mininet/util
./install.sh -a
三、测试mininet
sudo mn
不知道为什么出错了,这边使用ubuntu源內安装解决
sudo apt-get install mininet
sudo mn
2. 用字符命令搭建如下拓扑,要求写出命令
第一个拓扑是三台主机分别连接交换机,然后三台交换机连接在一起,是一个线性结构。
sudo mn --topo linear,3
第二个拓扑是一个交换机连接三个交换机,每台交换机连接三个主机,是一个深度2、宽度3的树形结构。
sudo mn --topo tree,fanout=3,depth=2
3. 利用可视化工具搭建如下拓扑,并要求支持OpenFlow 1.0 1.1 1.2 1.3,设置h1(10.0.0.10)、h2(10.0.0.11)、h3(10.0.0.12),拓扑搭建完成后使用命令验证主机ip,查看拓扑端口连接情况。
通过终端打开miniedit,将图示拓扑画上。
(小插曲:一直找不到控制器与交换机之间的虚线在哪里,所以愣神了很久,其实就是左侧的蓝色线,如果能够不想那么多,直接上手的话应该能够更早发现,节省一定的时间。这就告诉我们:犹豫就会败北)
通过部件的Properties属性设置主机的IP地址。
通过edit栏下的Preferences设置交换机支持的OpenFlow协议版本。
使用命令验证主机IP。
xterm h1 h2 h3
4. 利用Python脚本完成如下图所示的一个Fat-tree型的拓扑(交换机和主机名需与图中一致,即s1s6,h1h8,并且链路正确,请给出Mininet相关截图)
使用文本编辑器编辑linear.py文件
在文件对应位置下建立拓扑
sudo mn --custom linear.py --topo mytopo
具体代码如下:
"""Custom topology example
Adding the 'topos' dict with a key/value pair to generate our newly defined
topology enables one to pass in '--topo=mytopo' from the command line.
"""
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
c = []
a = []
e = []
# add core ovs
for i in range( L1 ):
sw = self.addSwitch( 's{}'.format( i + 1 ) )
c.append( sw )
# add aggregation ovs
for i in range( L2 ):
sw = self.addSwitch( 's{}'.format( L1 + i + 1 ) )
a.append( sw )
# add edge ovs
# add links between core and aggregation ovs
for i in range( L1 ):
sw1 = c[i]
for sw2 in a[i/2::L1/2]:
# self.addLink(sw2, sw1, bw=10, delay='5ms', loss=10, max_queue_size=1000, use_htb=True)
self.addLink( sw2, sw1 )
# add links between aggregation and edge ovs
#add hosts and its links with edge ovs
count = 1
for sw1 in a:
for i in range(2):
host = self.addHost( 'h{}'.format( count ) )
self.addLink( sw1, host )
count += 1
topos = { 'mytopo': ( lambda: MyTopo() ) }
SDN初体验(软件定义网络实验一)的更多相关文章
- 软件定义网络实验(一)----Mininet源码安装和可视化拓扑工具
一.实验任务 掌握 Mininet 的源码安装方法和 miniedit 可视化拓扑生成工具. 二.实验任务 使用源码安装 Mininet 的 2.3.0d6 版本,并使用可视化拓扑工具生成一个最简拓扑 ...
- 软件定义网络实验记录⑤--OpenFlow 协议分析和 OpenDaylight 安装
一.实验目的 回顾 JDK 安装配置,了解 OpenDaylight 控制的安装,以及 Mininet 如何连接: 通过抓包获取 OpenFlow 协议,验证 OpenFlow 协议和版本,了解协议内 ...
- 软件定义网络实验记录④--Open vSwitch 实验——Mininet 中使用 OVS 命令
一.实验目的 Mininet 安装之后,会连带安装 Open vSwitch,可以直接通过 Python 脚本调用 Open vSwitch 命令,从而直接控制 Open vSwitch,通过实验了解 ...
- 软件定义网络实验记录②--Mininet 实验——拓扑的命令脚本生成
一.实验目的 掌握 Mininet 的自定义拓扑生成方法:命令行创建.Python 脚本编写 二.实验任务 通过使用命令行创建.Python 脚本编写生成拓扑,熟悉 Mininet 的基本功能. 三. ...
- Linux初体验--配置网络(CentOS7)
在安装好虚拟机和操作系统后,一台合格的网络设备当然是要冲浪啊. 一.记下自己的网络配置 二.打开终端,输入命令 三.修改文件 保存后退出(wq). 四.重启网络服务 systemctl restart ...
- 软件定义网络实验记录③--Mininet 实验——测量路径的损耗率
一.实验目的 在实验 2 的基础上进一步熟悉 Mininet 自定义拓扑脚本,以及与损耗率相关的设定: 初步了解 Mininet 安装时自带的 POX 控制器脚本编写,测试路径损耗率. 二.实验任务 ...
- 软件定义网络实验记录①--Mininet 源码安装和可视化拓扑工具
第一步: 在 Ubuntu 系统的 home 目录下创建一个目录,目录名为自己的标识,包括但 不限于学号.姓名拼音等,目录不要包含中文. 第二步: 在创建的目录下,完成 Mininet 的源码安装. ...
- openflow 和 sdn (软件定义网络) 原理和教程
OpenFlow概述 OpenFlow简介 通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议.OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTa ...
- 《SDN软件定义网络从入门到精通》导论课
http://mp.weixin.qq.com/s?__biz=MjM5MTM3MzIzMg==&mid=209513316&idx=1&sn=e5dbd9a2ccccb88d ...
随机推荐
- 【linux-command】Chrome安装linux-command插件
一.linux-command是什么 550 多个 Linux 命令,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.Githb地址: https://github. ...
- 多线程之美6一CAS与自旋锁
1.什么是CAS CAS 即 compare and swap 比较并交换, 涉及到三个参数,内存值V, 预期值A, 要更新为的值B, 拿着预期值A与内存值V比较,相等则符合预期,将内存值V更新为B, ...
- 【Flask】 python学习第一章 - 6.0 WTF表单 数据库 蓝图
WTF表单 wtf.py pip install flask-wtf # 安装 from flask_wtf import FlaskForm from wtform import StringF ...
- 一小部分用python进行MD5加密的小技巧
上个图 要求计算出开头为ae3da且盐值为3c6e的字符串 简单的思路就是直接进行枚举,然后筛选符合条件的MD5加密字符,代码如下 #-*- coding:utf- -*- import hashli ...
- 动态规划——背包问题python实现(01背包、完全背包、多重背包)
目录 01背包问题 完全背包问题 多重背包问题 参考: 背包九讲--哔哩哔哩 背包九讲 01背包问题 01背包问题 描述: 有N件物品和一个容量为V的背包. 第i件物品的体积是vi,价值是wi. 求解 ...
- Codeforces J. Monotonic Renumeration(组合)
题目描述: You are given an array consisting of nmonotonic renumeration as an array b consisting of \(n\) ...
- less-6
首先输入id=1和id=1’未报错,均显示You are in.....(如下图所示) 由上图可以看到,如果运行返回结果正确的时候只返回you are in...,不会返回数据库当中的信息了,可以从这 ...
- php导出表格两种方法 ——PhpExcel的列子
php常用的导出表格有两种方法,第一种是输出表格,这种方法打开的时候有警告提示,一般导出表格会用phpexcel,这个导出比较灵活,而且还可以设置表格的样式. 第一种导出例子 /** * 执行导出 * ...
- C++中指针形参问题
1.C++指针做形参,会有很多陷阱,很多时候也许并不如我们想的那样.比如我们想通过一个函数改变指针的值: #include<</SPAN>iostream> using nam ...
- Java中String、LocalDateTime、LocalDate、Date互转
String 转LocalDate和LocalDateTime LocalDate startDate = LocalDate.parse("2019-12-05", DateTi ...