Floodlight+Mininet的SDN实验平台搭建初探
平台环境说明:
Cpu:Intel Core 2 Duo T6570
Mem:4.00GB
Os :Ubuntu 14.04
1.Floodlight
Floodlight是一个比较成熟的sdn控制器实现,其中opendaylight项目中也采用了它的很多实现方法,官方网站:http://www.projectfloodlight.org/floodlight/。本文采用它作为控制器,采用包含mininet的虚拟机作网络拓扑,两者结合模拟显示网络。
Floodlight安装:
A. $ sudo apt-get install build-essential default-jdk ant python-dev //由于控制器由java实现,故需要一些java环境需要先安装上;
B. $ git clone git://github.com/floodlight/floodlight.git //然后git下载源码,如果没有git,需要安装:sudo apt-get install git ;
C. $ cd floodlight
D. $ ant
E. $ java -jar target/floodlight.jar //然后依次完成命令,就会将控制器打开,这时输入网址:http://localhost:8080/ui/index.html即可看到控制器的ui界面,此时控制器未检测到网络拓扑(switchs hosts个数都是0)
2.Mininet
Mininet为研究人员提供轻量级的网络拓扑实现,其支持包扩openflow协议的switch,支持可打开终端界面的host等等。官方主页:http://mininet.org/,其中Mininet集成于一个虚拟机中(其中还集成了wireshark),官方提供了几个可下载版本:https://github.com/mininet/mininet/wiki/Mininet-VM-Images本文采用的是Ubuntu14.04版本。本文采用的是Ubuntu14.04版本。
本文采用的是Ubuntu14.04版本,解压缩取得其中.ovf文件。
Mininet安装
A. $ sudo apt-get install virtualbox //如果未安装虚拟机软件,先按上。
B. $ su - root
C. # virtualbox //以root身份打开,这是参考网上的,普通用户貌似有bug
D. 在virtualbox图形界面:file ->import virtual appliance
导入mininet的.ovf文件,直接就算装好了。。。。。。
初始用户名密码均为mininet(此时可以激活一下root权限),关于mininet软件的操作相见官方主页:http://mininet.org/walkthrough/
3.平台整合
将floodlight,virtualbox等软件启动完毕后,可在实体机上ssh登录至虚拟机实现各种操作:
A.$ ifconfig //可于实体机虚拟机分别执行取得pc-ip,vm-ip
B.$ ssh -X root@vm-ip //-X表示X11转发,这样可以出现wireshark图形界面
C.$ wireshark & //在实体机调出了vm中带有的支持openflow的wireshark,可开始对eth0口抓包ofp协议
D.$ sudo mn --controller=remote,ip=pc-ip,port=6633 //将mininet连接上远程controller(floodlight,此时默认监听于实体机的6633端口),此时mininet将默认创建一个switch,两个hosts。
I.此时可见wireshark中出现ofp数据,说明floodlight与mininet正用openflow协议通信。
II.此时打开http://localhost:8080/ui/index.html可见控制器已发现下层网络结构中的switch与host。
III.此时在mininet中pingall,发现全通,floodlight控制器默认使交换机全通。
4.下发流表
Floodlight将自己的API通过Rest Api的形式向外暴露,关于Rest Api,简单来讲,就是讲程序的API封装成为通用的http GET/PUT的形式,这样的话无需关注程序实现细节,通过发送http请求即可完成API操作。
所以,我们可以通过Floodlight的Restful api来向Floodlight请求各种信息,包括交换机状态,能力,拓扑等等,而static flow pusher这套机制则是通过Restful api来进行流表的操作,包括添加,删除流表等等。
A.生成流表
$ sudo curl -d {“switch”: “00:00:00:00:00:00:00:01″, “name”:”flow-mod-1″, “cookie”:”0″, “priority”:”32768″, “ingress-port”:”1″,”active”:”true”, “actions”:”output=1″}’ http://<pc_ip>:8080/wm/staticflowentrypusher/json //这里将入口为1的数据包都发回1,即将连在1口的host隔绝。此时在mn中pingall发现不通了。
B.查看流表
$ sudo curl http://<pc_ip>:8080/wm/staticflowentrypusher/list/all/json
C.删除流表
$ sudo curl -X DELETE -d ‘{“name”:”flow-mod-1″}’ http://<pc_ip>:8080/wm/staticflowentrypusher/json //此时发现又能都ping通,这些过程中wireshark中都可见openflow协议交互流程,提供了很好的研究环境。
Floodlight+Mininet的SDN实验平台搭建初探的更多相关文章
- 基于OpenDaylight和Mininet的试验床平台搭建
##########################################平台架构######################################### 一.虚拟机安装和镜像加载 ...
- LAMP平台搭建菜鸟入门级实验
LAMP平台搭建(菜鸟入门级) mysql 安装: (1)二进制安装 二进制安装 ,执行解压配置即可.无须执行三布安装. (2)源码编译安装 安装准备工作: (1)查看系统配置:#uname -a/ ...
- 在阿里云上搭建 Spark 实验平台
在阿里云上搭建 Spark 实验平台 Hadoop2.7.3+Spark2.1.0 完全分布式环境 搭建全过程 [传统文化热爱者] 阿里云服务器搭建spark特别坑的地方 阿里云实现Hadoop+Sp ...
- mininet(一)实验环境搭建
mininet(一)实验环境搭建 mininet(二)简单的路由实验 mininet(三)简单的NAT实验 最近学习(https://github.com/mininet/openflow-tutor ...
- SDN实验---Mininet实验(玩转流表)
一:实验目的 (一)案例目的 (二)实验内容 (三)网络拓扑结构 二:OpenFlow流表实验准备 (一)使用Python设置网络拓扑 --- tree_topo.py from mininet.to ...
- SDN开发环境搭建以及Mininet编程
一.实验内容 搭建如下网络拓扑,并熟悉相关指令. 二.搭建开发环境 2.1 开发环境搭建 2.1.1下载ubuntu镜像文件 镜像下载地址 https://www.ubuntu.com/downl ...
- openstack(liberty):部署实验平台(一,基础网络环境搭建)
openstack项目的研究,到今天,算是要进入真实环境了,要部署实验平台了.不再用devstack了.也就是说,要独立controller,compute,storage和network了.要做这个 ...
- NFV实验平台
NFV架构如下图所示. NFVI对应于数据平面,数据平面转发数据并提供用于运行网络服务的资源. MANO对应于控制平面,该控制平面负责构建各种VNF之间的连接以及编排NFVI中的资源. VNF层对应于 ...
- hadoop伪分布式平台搭建(centos 6.3)
最近要写一个数据量较大的程序,所以想搭建一个hbase平台试试.搭建hbase伪分布式平台,需要先搭建hadoop平台.本文主要介绍伪分布式平台搭建过程. 目录: 一.前言 二.环境搭建 三.命令测试 ...
随机推荐
- 分布式系统一致性算法(Paxos)
CAP理论 一致性(Consistency) 可用性(Availability) 分区容错性(网络分区)Partition toleranceCAP理论的特点,就是CAP只能满足其中 ...
- ios越狱使用AltDeploy签名
1.总结 截至目前: 越狱这么多年,用过非自己签名的越狱app, 也用过自己签名的越狱app. A .非自己签名, 别人签名好了越狱app, 下载安装,即可.笔者前期都是用的这样的方式. B.自己编译 ...
- 【LeetCode】263. Ugly Number 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 除去2,3,5因子 日期 [LeetCode] 题目 ...
- 在Latex 下写毕业论文
目录 配置 TeXlive 论文模板 TeXstudio 写作 特殊环境 算法 定理.定义 编译 可能出现的问题 参考文献 缺少volume 学位论文 配置 TeXlive 下载了最新的texlive ...
- contos mongodb 安装
创建.repo文件,生成mongodb的源 vi /etc/yum.repos.d/mongodb-org-4.0.repo [mongodb-org-4.0] name=MongoDB Reposi ...
- Hadoop问题解决记录
# 1.解决Unable to load native-hadoop library for your platform告警 安装Hadoop启动之后总有警告:Unable to load nativ ...
- python 数据库查询,将查询的列名也保存下来,返回字典类型的数据
前言: python + pymysql:通过pymysql,查询到符合要求的数据,不做类型转化的,返回的时元组类型的数据,可以根据下标,取想要的值. self.cursor.execute(sql) ...
- antd中的form表单 initialValue导致数据不更新问题
初步理解 : initialValue就是所谓的defaultValue,只会在第一次赋值的时候改变,却又有一些不同,因为 initialValue又会因其他改动而改变. 然而当获取的数据重新上来要渲 ...
- Go语言系列之标准库os
os包提供了操作系统的系列函数,这些接口不依赖平台.设计为Unix风格的,错误处理是go风格的:调用失败会返回错误值而非错误码.通常错误值里包含更多信息. os包的接口在所有操作系统中都是一致的.非公 ...
- Python实战案例系列(一)
本节目录 烟草扫码数据统计 奖学金统计 实战一.烟草扫码数据统计 1. 需求分析 根据扫码信息在数据库文件中匹配相应规格详细信息,并进行个数统计 条码库.xls 扫码.xlsx 一个条码对应多个规格名 ...