[原创]首次SDN比赛的记录-部分
SDN大赛环境搭建和第一大题实现
由于物理设备不足的原因,故用虚拟机实现Floodlight控制器,openvswitch(以下简称:OVS)和mininet各种要用到的SDN环境的搭建。下面将给出它们的搭建步骤和截图,然后再用mininet模拟给出大赛题目的实现的要求。
环境:ubuntu-12.04-64bit(能接入Intenet上网)
<1>安装Floodlight控制器
1)在root家目录下执行如下命令:
#apt-get update
#apt-get install build-essential default-jdk ant python-dev
#apt-get install git
#git clone git://github.com/floodlight/floodlight.git
#cd floodlight
#git checkout fl-last-passed-build 或者 git checkout stable
#ant //整合
#java –jar ~/floodlight/target/floodlight.jar //启动服务
2)下图为Floodlight正常启动情形:

上图为Floodlight已经启动,处于监听状态。此时,在浏览器中输入:http://localhost:8080/ui/index.html 即可打开Floodlight的Web界面。如图:

3)配置Floodlight的GUI界面,下载avior-1.3_win_x32.jar。
通过以下命令启动avior:
#java –jar avior-1.3_win_x32.jar
如图:

在图中的IP输入框中输入安装Floodligt控制器机器的IP地址,点击Launch。则进入下图界面:

通过avior可以图形化管理Floodlight。
到此为止,Floodlight控制器搭建完毕。
<2>安装OVS交换机
1)使用root权限,安装所需软件:
#apt-get install build-essential
#apt-get install openssl
2)安装openvswitch-1.9.3:
1.将下载文件拷贝到/home/ruanjian/文件夹下;
2.解压:#tar -xzf openvswitch-1.9.3.tar.gz
3.生成内核模式的OpenvSwitch时需指定内核源码编译目录,基本步骤为:
#cd openvswitch-1.9.3/
#./configure --with-linux=/lib/modules/`uname -r`/build
#make && make install
#insmod datapath/linux/openvswitch.ko
4.建立OpenvSwitch配置文件和数据库:
#mkdir -p /usr/local/etc/openvswitch
#ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
5.启动配置数据库:
#ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach
6.初始化数据库:
#ovs-vsctl --no-wait init
7.启动OpenvSwitch daemon,连接到同样的Unix domain socket上:
#ovs-vswitchd --pidfile --detach
8.安装结束。
3)启动OVS:
当第二次使用的时候需要启动OVS,步骤为:
1.进入目录:
#cd openvswitch-1.9.3/
2.加载openvswitch模块:
#insmod datapath/linux/openvswitch.ko
3.启动配置数据库:
#ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach
4.初始化数据库(可选,第一次安装时必须输入,启动不需要输入,但输入也不会有问题)
#ovs-vsctl --no-wait init
5.启动OpenvSwitch daemon,连接到同样的Unix domain socket上:
#ovs-vswitchd --pidfile --detach
6.启动完成。
<3>安装mininet模拟器
1)安装步骤:
#rm /usr/local/bin/ovs* /usr/local/sbin/ovs* //删除OVS的残余
#apt-get install mininet/precise-backports //安装mininet
2)启动mininet:
#mn(报错,6633端口默认启用。需关闭:#netstat -nap|grep 6633找到进程号之后用:(#kill 进程号)或(#kill -9 进程号)杀死进程)
#service openvswitch-switch start
#mn –controller=remote,ip=210.38.2487.2,ports=6633 //指定Floodlight为远程控制器(前提:上述过程安装的Floodlight已启动)。
4)启动成功。如下图为启动情况和默认拓扑图情况:


5)此时可以通过Web界面看到相关信息和拓扑图,如下图:
1.Dashboard

2.Topology

3.Switches

4.Hosts

<4>安装wireshark
1.安装:
#apt-get
install wireshark
2.启动wireshark:
#wireshark 或者
#wireshark & //后台运行
如下图:

3.修改配置文件去除错误提示:
1)#vi /etc/wireshark/init.lua
2)将文件的倒数第二行用“--”注释即可。即:--dofile(DATA_DIR.."console.lua")
3)重启wireshark即可。
4.使用:
启动wireshark后,启动floodlight控制器,然后启动mininet。在wireshark界面Filter中输入of(过滤openflow数据包)并打开lo接口开始抓包。将会有数据包信息刷新 记录。如下图:

<5>安装xterm
1.安装需要软件:
#apt-get
install screen
2.在图形界面启动mininet,然后启动节点设备的xterm即可。如:xterm h1 h2 h3 s4 s5
c0 。如下图:

3.进入mininet后输入:#xterm
-sb & //可以单独对mininet进行操作。如下图:

一、
必答题
- 通过上述搭建的环境,启动mininet。默认拓扑图如下:

2.此时host1 ping host2,结果是ping不通。如下图:

3.开启另一个终端,查看一下s1的流表。结果为空。如下图:

4.使用命令添加流表,实现host1能ping通host2并查看此时s1的流表如下图:
1)添加流表:

2)ping测试:

3)查看s1流表:

5.到此为止,必答题完成。
二、
选答题(A题):
- 根据题目要求,自定义如下拓扑图结构进行试验:

2.实现思路:
通过自定义拓扑图结构,在mininet上运行该自定义拓扑结构。然后修改两个bridge上的流表实现通讯要求。根据要求,要实现host1能与host2、host3通讯实现能远程桌面,而host2和host3之间不能通讯。那么通过下发流表实现,建立流表的核心是两个bridge上相连的port,s4上与s5相连的port2把来自host1的数据转发到s5。同时,把来自s5的数据转发到host1相连的port1上。然后s5上与s4相连的port1把s5上的port2(连接host2)和port3(连接host3)的数据都转发到s4。同时,把来自s4的数据FLOOD到初port1的所有port。除此流表之外的所有数据均不能相互转发通讯。即可实现host1与host2、host3通讯,而host2不能与host3通讯。
3.新建topo-2sw-3host.py文件,自定义拓扑图。代码如下:

4.启动该拓扑图:

1)查看拓扑结构:

2)通过Floodlight的Web界面查看:

5.ping测试,现在为全ping通状态。如下图:

6.分别为s4和s5添加相应的流表,实现host1能ping通host2和host3,但host2不能ping通host3。如下图:
1)添加流表

2)ping测试

3)查看s4和s5的流表

7.到此为止,选答题完成。
三、实现web交替访问:
应用topo-2sw-3host.py的拓扑图结构,开启mininet并使用mininet外的floodlight。分别在host2和host3中建立如下两个文件:index.html和test.py。前者用于网站首页访问,后者用于开启简单web服务。Test.py内容为:import
SimpleHTTPServer \换行 SimpleHTTPServer.test()
并在控制器下编写load balancer脚本load.sh。内容如下:

然后再控制器上启动脚本:./load.sh
之后,在host2和host3上通过命令:python test.py 100 &后台开启简单web服务。在host1上访问:wget –O – http://10.0.0.200:100即可实现交替访问了。
[原创]首次SDN比赛的记录-部分的更多相关文章
- [原创]gerrit上分支操作记录(创建分支、删除分支)
Git分支对于一个项目的代码管理而言,是十分重要的! 许多久用git的朋友可能已经掌握的很牢固了,但对于一些初涉git的童鞋来说,可能还不是很熟悉. 在此,我将自己的一些操作经历做一梳理,希望能帮助到 ...
- 【原创】Linux常用命令记录
1. 查看网络状态分布 #!/bin/sh netstat -apn >/dev/ \ | awk 'BEGIN {printf("%-15s%-15s%-15s%-15s\n&quo ...
- 【cf比赛练习记录】Codeforces Round #579 (Div. 3)
思考之后再看题解,是与别人灵魂之间的沟通与碰撞 A. Circle of Students 题意 给出n个数,问它们向左或者向右是否都能成一个环.比如样例5是从1开始向左绕了一圈 [3, 2, 1, ...
- [原创]首次制作JQueryUI插件-Timeline时间轴
特点: 1. 支持多左右滚动,左右拖动. 2. 时间轴可上下两种显示方式. 3. 支持两种模式的平滑滚动/拖动. 4. 行压缩(后续版本此处可设置是否开启,上传的代码不带这个功能). 5. 支持hov ...
- 【Sofa】Sofa比赛成绩记录
最高得到过第4名,然后后面跌倒了第7名,现在追到了第6名.虽然名次还不是最高,但是很开心,今天能在一道一直困扰的题目上有突破,就是那个自行车预测的题目,开始过拟合了.后面进行了一些处理,效果很明显.继 ...
- 【原创】一个shell脚本记录(实现rsync生产文件批量迁移功能)
#!/bin/bash #Date:2018-01-08 #Author:xxxxxx #Function:xxxxxx #Change:2018-01-17 # #设置忽略CTRL+C信号 trap ...
- Oracle删除重复记录只保留一条数据的几种方法
1. 问题描述 BBSCOMMENT表为BBSDETAIL的从表,记录商户评价信息.因为数据倒腾来倒腾去的,有很多重复数据.表结构如下: COMMENT_ID NOT NULL NUMBER --主键 ...
- STL项目-学校演讲比赛
// 学校演讲比赛.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include "pch.h" #include < ...
- leetcode 2019.10.29 首次破百
刷题首次破百,记录一下自己成长的历程. 仍在路上,会慢慢变强的~
随机推荐
- C#基础语法(一)
一.基础语法 1.C#区分大小写,所以myVar和MyVar是两个不同的变量. 2.每个C#可执行文件(如控制台应用程序,Windows应用程序和Windows服务)都必须有一个入口点----Main ...
- Unity -JsonUtility的使用
今天,为大家分享一下unity上的Json序列化,应该一说到这个词语,我们肯定会觉得,这应该是很常用的一个功能点:诚然,我们保存数据的时候,也许会用到json序列化,所以,我们有必要快速了解一下它的简 ...
- [Oracle]Audit(二)--清理Audit数据
在上一篇,初步了解了Audit的作用以及如何使用Audit,本篇记录如何手动清理Audit数据. (一) 概述 Audit的数据主要存储在sys.aud$表中,该表默认位于system表空间中,我们根 ...
- XtraBackup 原理与安装
简介 XtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server ...
- MyBatis-plus 代码自动生成器
MyBatis-plus 代码自动生成器 1.添加pom文件依赖 <!-- Mybatis-Plus 自动生成实体类--> <dependency> <groupId& ...
- C语言学习第七章
今天开始学习指针,指针在C语言中具有很重要的地位,按照老师所说,学C学不好指针跟没学一样,可见指针在C语言中的重要地位.废话不多说,首先我们先要知道什么是指针. 指针:指针是一个变量,它存储另一个对象 ...
- Angularjs快速入门(四)-css类和样式
例子: .error{background-color:red;} .warning{background-color:yellow;} <div ng-controller='HeaderCo ...
- Python 面向对象之一
Python 面向对象之 类与属性 今天接触了一下面向对象,发现面向对象和之前理解的简直就是天壤之别,在学Linux的时候,一切皆文件,现在学面向对象了,so,一切皆对象. 之前不是一直在学的用面向函 ...
- 蓝桥杯-凑算式-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- oracle linux 6.5 安装 oracle 12cR2数据库(2)-DBCA建库
援引:http://www.cnblogs.com/kerrycode/p/3386917.html by 潇湘隐者 Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引 ...